|
Как объявить правильно массив 40МБ |
|
|
|
Dec 14 2011, 14:27
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634

|
Массив пустой  только объявляю. вот так unsigned char MyArray[40000000]; IAR 5.4 LPC3250 Цитата(sigmaN @ Dec 14 2011, 19:17)  что все глобальные не инициализированные переменные инициализируются нулями. Это относится и к массивам? Или нет? да. Вроде так. и можно поставить перед таким массивом __no_init. Тогда не будет инициализировать. А про кучу, тут было на форуме. Даже если размер кучи указан, но в тексте программы нет функций динамического создания массивов, типа malloc, calloc, то линкер эту секцию не создает.
|
|
|
|
|
Dec 14 2011, 14:31
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(sigmaN @ Dec 14 2011, 18:17)  Кстати да, мысль пришла...фишка ведь в том, что все глобальные не инициализированные переменные инициализируются нулями. Это относится и к массивам? Или нет? К массивам относится, естественно. Цитата(kolobochishe @ Dec 14 2011, 18:25)  Массив пустой  только объявляю. Тогда покажите скрипт линкера и map-файл.
|
|
|
|
|
Dec 14 2011, 14:41
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634

|
CODE *** RUNTIME MODEL ATTRIBUTES ***
__endian = little __thumb_aware = enabled
******************************************************************************* *** PLACEMENT SUMMARY ***
"A1": place at 0x80000000 { ro section .intvec }; "P1": place in [from 0x80000040 to 0x83ffffff] { ro }; "P2": place in [from 0x80000040 to 0x83ffffff] { rw, block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK, block UND_STACK, block ABT_STACK, block HEAP };
Section Kind Address Size Object ------- ---- ------- ---- ------ "A1": 0x28 .intvec ro code 0x80000000 0x28 LPC3250_startup.o [1] - 0x80000028 0x28
"P1", part 1 of 2: 0x70fc .text ro code 0x80000040 0xdae xprintffull.o [3] .text ro code 0x80000df0 0xc2c RF12BP_MINI3250.o [1] .text ro code 0x80001a1c 0xb78 DeviceMenu.o [1] .text ro code 0x80002594 0xab0 16x02_lcd.o [1] .text ro code 0x80003044 0x8b4 OSKERN.o [6] .text ro code 0x800038f8 0x678 RTOSINIT_LPC3250.o [1] .text ro code 0x80003f70 0x38c DblDiv.o [7] .text ro code 0x800042fc 0x328 xlog.o [3] .text ro code 0x80004624 0x308 JLINKDCC_Process.o [1] .text ro code 0x8000492c 0x214 SPI_LPC3250.o [1] .text ro code 0x80004b40 0x210 RF_Control.o [1] .text ro code 0x80004d50 0x20c RS1_Graphs.o [1] .text ro code 0x80004f5c 0x204 DblMul.o [7] .text ro code 0x80005160 0x1ec rtos.o [6] .text ro code 0x8000534c 0x1ec DblSub.o [7] .text ro code 0x80005538 0x1bc LTC6603.o [1] .text ro code 0x800056f4 0x1a8 I32DivMod.o [7] .text ro code 0x8000589c 0x184 I64DivMod.o [7] .text ro code 0x80005a20 0x180 ADRF6510.o [1] .text ro code 0x80005ba0 0x17c OS_ARM_MMU.o [6] .text ro code 0x80005d1c 0x140 DblAdd.o [7] .text ro code 0x80005e5c 0x130 DAC_AD5338.o [1] .text ro code 0x80005f8c 0x118 OS_CreateTask.o [6] .text ro code 0x800060a4 0x114 xdscale.o [3] .text ro code 0x800061b8 0xf0 packbits_init2.o [7] .text ro code 0x800062a8 0xec ADC_Rec_16bit_Par.o [1] .text ro code 0x80006394 0xe8 USB_MSD_FS_Start.o [1] .text ro code 0x8000647c 0xe4 DRAGON_RS1_INIT.o [1] .text ro code 0x80006560 0xd4 ABImemcpy.o [7] .text ro code 0x80006634 0xd4 xxwritebuffered.o [3] .text ro code 0x80006708 0xcc MatrixKeyboard.o [1] .text ro code 0x800067d4 0xc0 xdnorm.o [3] .text ro code 0x80006894 0xa8 iarwstd.o [8] .text ro code 0x8000693c 0x94 OS_TICK_Handle.o [6] .text ro code 0x800069d0 0x94 memchr.o [7] .text ro code 0x80006a64 0x78 ABImemset.o [7] .text ro code 0x80006adc 0x64 FltToDbl.o [7] .text ro code 0x80006b40 0x60 DblToS32.o [7] .text ro code 0x80006ba0 0x5c LPC3250_startup.o [1] .text ro code 0x80006bfc 0x54 OS_GetCPUState.o [6] .text ro code 0x80006c50 0x54 strlen.o [7] .text ro code 0x80006ca4 0x44 OS_Error.o [1] .text ro code 0x80006ce8 0x44 ABImemset48.o [7] .text ro code 0x80006d2c 0x44 iarwrite.o [8] .text ro code 0x80006d70 0x3c DblToU32.o [7] .text ro code 0x80006dac 0x38 DblCmpLe.o [7] .text ro code 0x80006de4 0x38 DblCmpGe.o [7] .text ro code 0x80006e1c 0x34 OSCPU1.o [6] .text ro code 0x80006e50 0x34 S32ToFlt.o [7] .text ro code 0x80006e84 0x30 S32ToDbl.o [7] .text ro code 0x80006eb4 0x30 data_init2.o [7] .text ro code 0x80006ee4 0x30 dwrite.o [8] .text ro code 0x80006f14 0x28 zero_init2.o [7] .text ro code 0x80006f3c 0x26 putchar.o [3] .text ro code 0x80006f64 0x24 cmain.o [7] .iar.init_table const 0x80006f88 0x2c - Linker created - .text ro code 0x80006fb4 0x20 OSCPU.o [6] .text ro code 0x80006fd4 0x20 printf.o [3] .text ro code 0x80006ff4 0x20 exit.o [8] .text ro code 0x80007014 0x20 strchr.o [7] .text ro code 0x80007034 0x20 div.o [3] .text ro code 0x80007054 0x16 xprout.o [3] .rodata const 0x8000706c 0x14 DeviceMenu.o [1] .text ro code 0x80007080 0x14 BSP.o [1] .text ro code 0x80007094 0x14 errno.o [3] .text ro code 0x800070a8 0x14 cexit.o [7] .rodata const 0x800070bc 0x10 16x02_lcd.o [1] .text ro code 0x800070cc 0x10 U32ToFlt.o [7] .text ro code 0x800070dc 0x10 xcloseall.o [3] .rodata const 0x800070ec 0xc DeviceMenu.o [1] .rodata const 0x800070f8 0xc USB_MSD_FS_Start.o [1] .text ro code 0x80007104 0xc U32ToDbl.o [7] .rodata const 0x80007110 0x8 DeviceMenu.o [1] .rodata const 0x80007118 0x8 xprintffull.o [3] .text ro code 0x80007120 0x8 ABImemclr4.o [7] .text ro code 0x80007128 0x6 exit.o [3] .text ro code 0x80007130 0x4 IntDivZer.o [7] .text ro code 0x80007134 0x4 xreturnswi.o [8] .text ro code 0x80007138 0x4 I64DivZer.o [7] PROGRAM_DATA ro code 0x8000713c 0x0 LPC3250_startup.o [1] - 0x8000713c 0x70fc
"P2", part 1 of 3: 0x4cc P2 s0 0x8000713c 0x4cc <Init block> .data inited 0x8000713c 0x2b8 DeviceMenu.o [1] .data inited 0x800073f4 0x130 USB_MSD_FS_Start.o [1] .data inited 0x80007524 0x60 USB_MSD_FS_Start.o [1] .data inited 0x80007584 0x40 DeviceMenu.o [1] .data inited 0x800075c4 0x24 OSGLOBAL.o [6] .data inited 0x800075e8 0x10 DeviceMenu.o [1] .data inited 0x800075f8 0x9 USB_MSD_FS_Start.o [1] .data inited 0x80007602 0x6 16x02_lcd.o [1] - 0x80007608 0x4cc
"P2", part 2 of 3: 0x263b690 .bss zero 0x80007608 0x2625a00 USB_MSD_FS_Start.o [1] .bss zero 0x8262d008 0x10000 DeviceMenu.o [1] .bss zero 0x8263d008 0x4e28 DeviceMenu.o [1] .bss zero 0x82641e30 0x838 USB_MSD_FS_Start.o [1] .bss zero 0x82642668 0x434 JLINKDCC_Process.o [1] .bss zero 0x82642a9c 0x180 RTOSINIT_LPC3250.o [1] .bss zero 0x82642c1c 0x54 xxwritebuffered.o [3] .bss zero 0x82642c70 0x8 DeviceMenu.o [1] .bss zero 0x82642c78 0x8 errno.o [3] .bss zero 0x82642c80 0x4 OSGLOBAL.o [6] .bss zero 0x82642c84 0x4 OSGLOBAL.o [6] .bss zero 0x82642c88 0x4 iarwstd.o [8] .bss zero 0x82642c8c 0x1 DeviceMenu.o [1] .bss zero 0x82642c8d 0x1 JLINKDCC_Process.o [1] .bss zero 0x82642c8e 0x1 USB_MSD_FS_Start.o [1] .bss zero 0x82642c8f 0x1 OSGLOBAL.o [6] .bss zero 0x82642c90 0x1 OSGLOBAL.o [6] .bss zero 0x82642c91 0x1 OSGLOBAL.o [6] .bss zero 0x82642c92 0x1 OSGLOBAL.o [6] .bss zero 0x82642c93 0x1 OSGLOBAL.o [6] .bss zero 0x82642c94 0x1 OSGLOBAL.o [6] .bss zero 0x82642c95 0x1 OSGLOBAL.o [6] - 0x82642c96 0x263b68e
"P2", part 3 of 3: 0x5080 .noinit uninit 0x82644000 0x4000 RTOSINIT_LPC3250.o [1] CSTACK 0x82648000 0x1000 <Block> CSTACK uninit 0x82648000 0x1000 <Block tail> IRQ_STACK 0x82649000 0x80 <Block> IRQ_STACK uninit 0x82649000 0x80 <Block tail> FIQ_STACK 0x82649080 0x0 <Block> - 0x82649080 0x5080
"P1", part 2 of 2: 0x3cc Initializer bytes ro data 0x82649080 0x3cc <for P2 s0> - 0x8264944c 0x3cc
******************************************************************************* *** INIT TABLE ***
Address Size ------- ---- Zero (__iar_zero_init2) 1 destination range, total size 0x263b68e: 0x80007608 0x263b68e
Copy/packbits (__iar_packbits_init2) 1 source range, total size 0x3cc (79% of destination): 0x82649080 0x3cc 1 destination range, total size 0x4cc: 0x8000713c 0x4cc
******************************************************************************* *** MODULE SUMMARY ***
Module ro code ro data rw data ------ ------- ------- ------- C:\РАБОТА\РАЗРАБОТКИ\ПРОЕКТЫ\ДРАКОН\Регистраторы\Прошивка\LPC3250 GUI_RTOS\arm\PowerPac\BoardSupport\NXP\LPC3250\Output\LPC3250\Debug_SDRAM\Obj: [1] 16x02_lcd.o 2 736 22 6 ADC_Rec_16bit_Par.o 236 ADRF6510.o 384 BSP.o 20 DAC_AD5338.o 304 DRAGON_RS1_INIT.o 228 DeviceMenu.o 2 936 654 86 329 JLINKDCC_Process.o 776 1 077 LPC3250_startup.o 132 LTC6603.o 444 MatrixKeyboard.o 204 OS_Error.o 68 RF12BP_MINI3250.o 3 116 RF_Control.o 528 RS1_Graphs.o 524 RTOSINIT_LPC3250.o 1 656 16 768 SPI_LPC3250.o 532 USB_MSD_FS_Start.o 232 336 40 002 514 ------------------------------------------------- Total: 15 056 1 012 40 106 694
command line: [2] ------------------------------------------------- Total:
dl5E_tl_in.a: [3] div.o 32 errno.o 20 8 exit.o 6 printf.o 32 putchar.o 38 xcloseall.o 16 xdnorm.o 192 xdscale.o 276 xlog.o 808 xprintffull.o 3 502 8 xprout.o 22 xxwritebuffered.o 212 84 ------------------------------------------------- Total: 5 156 8 92
fs5t_al__ds.a: [4] ------------------------------------------------- Total:
ip5t_tl__d.a: [5] ------------------------------------------------- Total:
os5t_al__d.a: [6] OSCPU.o 32 OSCPU1.o 52 OSGLOBAL.o 28 51 OSKERN.o 2 228 OS_ARM_MMU.o 380 OS_CreateTask.o 280 OS_GetCPUState.o 84 OS_TICK_Handle.o 148 rtos.o 492 ------------------------------------------------- Total: 3 696 28 51
rt5E_al.a: [7] ABImemclr4.o 8 ABImemcpy.o 212 ABImemset.o 120 ABImemset48.o 68 DblAdd.o 320 DblCmpGe.o 56 DblCmpLe.o 56 DblDiv.o 908 DblMul.o 516 DblSub.o 492 DblToS32.o 96 DblToU32.o 60 FltToDbl.o 100 I32DivMod.o 424 I64DivMod.o 388 I64DivZer.o 4 IntDivZer.o 4 S32ToDbl.o 48 S32ToFlt.o 52 U32ToDbl.o 12 U32ToFlt.o 16 cexit.o 20 cmain.o 36 data_init2.o 48 memchr.o 148 packbits_init2.o 240 strchr.o 32 strlen.o 84 zero_init2.o 40 ------------------------------------------------- Total: 4 608
shs_l.a: [8] dwrite.o 48 exit.o 32 iarwrite.o 68 iarwstd.o 168 4 xreturnswi.o 4 ------------------------------------------------- Total: 320 4
Gaps 6 2 1 Linker created 44 4 224 ----------------------------------------------------- Grand Total: 28 842 1 094 40 111 066
******************************************************************************* *** ENTRY LIST ***
Entry Address Size Type Object ----- ------- ---- ---- ------ ?main 0x80006f64 Code Gb cmain.o [7] ADC_Rec_16bit_Par 0x800062a8 0xec Code Gb ADC_Rec_16bit_Par.o [1] ADRF6510_ffreq 0x800075fc 0x1 Data Gb USB_MSD_FS_Start.o [1] ADRF6510_gain 0x800075f8 0x4 Data Gb USB_MSD_FS_Start.o [1] AnyKeyPressed 0x82642c8c 0x1 Data Gb DeviceMenu.o [1] AutoRemoteMode 0x8000250c 0x80 Code Gb DeviceMenu.o [1] AutoSetRF_Power 0x800022c4 0xb4 Code Gb DeviceMenu.o [1] BASE_RF_Power 0x82642c74 0x4 Data Gb DeviceMenu.o [1] BSP_Init 0x80007080 0x14 Code Gb BSP.o [1] CSTACK$$Base 0x82648000 -- Gb - Linker created - CSTACK$$Limit 0x82649000 -- Gb - Linker created - DAC_Task 0x80006394 0x64 Code Gb USB_MSD_FS_Start.o [1] DeviceMenu 0x80001a1c 0x178 Code Gb DeviceMenu.o [1] DeviceMenuList 0x80007524 0x60 Data Gb USB_MSD_FS_Start.o [1] DeviceParamsList 0x800073f4 0x130 Data Gb USB_MSD_FS_Start.o [1] DisableSPI 0x80004afc 0x40 Code Gb SPI_LPC3250.o [1] Dragon_RS1_Init 0x8000647c 0xe4 Code Gb DRAGON_RS1_INIT.o [1] FIQ_STACK$$Base 0x82649080 -- Gb - Linker created - FIQ_STACK$$Limit 0x82649080 -- Gb - Linker created - GetRSSI 0x80001878 0x84 Code Gb RF12BP_MINI3250.o [1] Get_ADC_Data 0x800020a0 0x224 Code Gb DeviceMenu.o [1] IRQ_Handler 0x800052e0 Code Gb rtos.o [6] IRQ_STACK$$Base 0x82649000 -- Gb - Linker created - IRQ_STACK$$Limit 0x82649080 -- Gb - Linker created - JLINKDCC_AbortOccurred 0x82642698 0x1 Data Gb JLINKDCC_Process.o [1] JLINKDCC_IsInHandler 0x82642c8d 0x1 Data Gb JLINKDCC_Process.o [1] JLINKDCC_Process 0x800048f4 0x34 Code Gb JLINKDCC_Process.o [1] KEYB_ISR 0x8000679c 0x38 Code Gb MatrixKeyboard.o [1] KS_DATA0 0x40050040 0x4 Data Wk MatrixKeyboard.o [1] KS_DEB 0x40050000 0x4 Data Wk MatrixKeyboard.o [1] KS_SCAN_CTL 0x4005000c 0x4 Data Wk MatrixKeyboard.o [1] LCD_LPBASE 0x31040014 0x4 Data Wk BSP.o [1] LCD_UPBASE 0x31040010 0x4 Data Wk BSP.o [1] LPD_Freq 0x8000713c 0x270 Data Gb DeviceMenu.o [1] LTC6603_D0 0x80007600 0x1 Data Gb USB_MSD_FS_Start.o [1] LTC6603_SHDN 0x800075ff 0x1 Data Gb USB_MSD_FS_Start.o [1] LTC6603_ffreq 0x800075fe 0x1 Data Gb USB_MSD_FS_Start.o [1] LTC6603_gain 0x800075fd 0x1 Data Gb USB_MSD_FS_Start.o [1] Matrix_Keyboard_Interrupt_Init 0x80006708 0x94 Code Gb MatrixKeyboard.o [1] MenuParamSet 0x80001b94 0x380 Code Gb DeviceMenu.o [1] MyArray 0x80007608 0x2625a00 Data Gb USB_MSD_FS_Start.o [1] MyItoADec 0x80001f18 0x12c Code Gb DeviceMenu.o [1] MyKEY_ROW0 0x82642c8e 0x1 Data Gb USB_MSD_FS_Start.o [1] OS_ARM_CACHE_Sync 0x80005ba0 0xd8 Code Gb OS_ARM_MMU.o [6] OS_ARM_DCACHE_Enable 0x80005c78 0x10 Code Gb OS_ARM_MMU.o [6] OS_ARM_EnableISR 0x80003c3c 0x78 Code Gb RTOSINIT_LPC3250.o [1] OS_ARM_ICACHE_Enable 0x80005c88 0x10 Code Gb OS_ARM_MMU.o [6] OS_ARM_InstallISRHandler 0x80003bf8 0x40 Code Gb RTOSINIT_LPC3250.o [1] OS_ARM_MMU_AddTTEntries 0x80005c98 0x40 Code Gb OS_ARM_MMU.o [6] OS_ARM_MMU_Enable 0x80005cd8 0x44 Code Gb OS_ARM_MMU.o [6] OS_AssertCPUInISRMode 0x80003118 0x4c Code Gb OSKERN.o [6] OS_AssertISROrTask 0x80003044 0x70 Code Gb OSKERN.o [6] OS_AssertTaskMode 0x800030b4 0x64 Code Gb OSKERN.o [6] OS_ChangeTask 0x8000350c 0x2a8 Code Gb OSKERN.o [6] OS_CreateTask_D 0x80005f8c 0x118 Code Gb OS_CreateTask.o [6] OS_Deactivated 0x800037b4 0x40 Code Gb OSKERN.o [6] OS_DecRegionCnt 0x80003854 0x14 Code Gb OSKERN.o [6] OS_Delay 0x800038e0 0x14 Code Gb OSKERN.o [6] OS_DelayUntil 0x8000386c 0x70 Code Gb OSKERN.o [6] OS_DisableInt 0x80006fc4 0x10 Code Gb OSCPU.o [6] OS_DoRR 0x80003468 0xa4 Code Lc OSKERN.o [6] OS_EnableInt 0x80006fb4 0x10 Code Gb OSCPU.o [6] OS_Error 0x80006ca4 0x44 Code Gb OS_Error.o [1] OS_GetCPUState 0x80006bfc Code Gb OS_GetCPUState.o [6] OS_GetIntStackBase 0x80006e1c 0x8 Code Gb OSCPU1.o [6] OS_GetIntStackSize 0x80006e24 0x14 Code Gb OSCPU1.o [6] OS_GetSP 0x80006e48 0x8 Code Gb OSCPU1.o [6] OS_GetSysStackBase 0x80006e3c 0x8 Code Gb OSCPU1.o [6] OS_Global 0x800075c4 0x24 Data Gb OSGLOBAL.o [6] OS_Idle 0x80003a04 0x4 Code Gb RTOSINIT_LPC3250.o [1] OS_InInt 0x82642c93 0x1 Data Gb OSGLOBAL.o [6] OS_InTimer 0x82642c94 0x1 Data Gb OSGLOBAL.o [6] OS_InitCalled 0x82642c95 0x1 Data Gb OSGLOBAL.o [6] OS_InitHW 0x80003924 0xe0 Code Gb RTOSINIT_LPC3250.o [1] OS_InitKern 0x800037f4 0x60 Code Gb OSKERN.o [6] OS_InitMode 0x800052a8 Code Gb rtos.o [6] OS_InsertTask 0x800032c0 0x88 Code Gb OSKERN.o [6] OS_LeaveRegion 0x8000318c 0x70 Code Gb OSKERN.o [6] OS_MakeTaskReady 0x800031fc 0xc4 Code Gb OSKERN.o [6] OS_RestoreI 0x80003164 0x8 Code Gb OSKERN.o [6] OS_ReturnFromTask 0x8000517c Code Gb rtos.o [6] OS_Start 0x800051d8 Code Gb rtos.o [6] OS_StartTask 0x80005160 Code Gb rtos.o [6] OS_Status 0x82642c8f 0x1 Data Gb OSGLOBAL.o [6] OS_Switch 0x80005180 Code Gb rtos.o [6] OS_SwitchAfterISR_ARM 0x80005244 Code Gb rtos.o [6] OS_SwitchFromInt 0x800051e4 Code Gb rtos.o [6] OS_TICK_Handle 0x8000693c 0x94 Code Gb OS_TICK_Handle.o [6] OS_TickStep 0x82642c92 0x1 Data Gb OSGLOBAL.o [6] OS_TickStepTime 0x82642c80 0x4 Data Gb OSGLOBAL.o [6] OS_TimeSlice 0x82642c90 0x1 Data Gb OSGLOBAL.o [6] OS_TimeSliceAtStart 0x82642c91 0x1 Data Gb OSGLOBAL.o [6] OS_irq_handler 0x80003a08 0x1ec Code Gb RTOSINIT_LPC3250.o [1] OS_pTickHook 0x82642c84 0x4 Data Gb OSGLOBAL.o [6] RFM12B_DataGet 0x800016b8 0xa8 Code Gb RF12BP_MINI3250.o [1] RFM12B_FIFOReset 0x80001374 0xdc Code Gb RF12BP_MINI3250.o [1] RFM12B_Init 0x80000df0 0x584 Code Gb RF12BP_MINI3250.o [1] RFM12B_SwitchToReceiver 0x80001554 0x164 Code Gb RF12BP_MINI3250.o [1] RFM12B_SwitchToTransmitter 0x80001450 0x104 Code Gb RF12BP_MINI3250.o [1] RFM12B_WriteCMD 0x800017f0 0x88 Code Gb RF12BP_MINI3250.o [1] RF_Test_Packet 0x800075e8 0x10 Data Gb DeviceMenu.o [1] RS1_RF_Power 0x82642c70 0x4 Data Gb DeviceMenu.o [1] RS1_RF_Power_Arr 0x800073ac 0x48 Data Gb DeviceMenu.o [1] RX_DataPacket 0x80004c9c 0xb4 Code Gb RF_Control.o [1] Region$$Table$$Base 0x80006f88 -- Gb - Linker created - Region$$Table$$Limit 0x80006fb4 -- Gb - Linker created - SPI1_DAT 0x20088014 0x4 Data Wk 16x02_lcd.o [1] SPI1_FRM 0x20088008 0x4 Data Wk 16x02_lcd.o [1] SetParam 0x800023f0 0x110 Code Gb DeviceMenu.o [1] SetRF_Params 0x80002378 0x78 Code Gb DeviceMenu.o [1] SetUserSymbolsToLCD 0x80002044 0x5c Code Gb DeviceMenu.o [1] Set_ADRF6510_Gain 0x80005e5c 0x12c Code Gb DAC_AD5338.o [1] Set_CS_SPI_device 0x8000492c 0x1d0 Code Gb SPI_LPC3250.o [1] Set_Filter_ADRF6510 0x80005a20 0x60 Code Gb ADRF6510.o [1] Set_Filter_LTC6603 0x80005538 0x9c Code Gb LTC6603.o [1] Set_LTC6603_via_SPI_LPC3250 0x800055d4 0x120 Code Gb LTC6603.o [1] Set_SPI_for_ADRF6510 0x80005a80 0x120 Code Gb ADRF6510.o [1] Set_SPI_for_RF12BP 0x800018fc 0x11c Code Gb RF12BP_MINI3250.o [1] Set_SPI_for_lcd08x02 0x80002f24 0x11c Code Gb 16x02_lcd.o [1] Stack_DAC 0x82641e30 0x800 Data Lc USB_MSD_FS_Start.o [1] TCB0 0x82642630 0x38 Data Lc USB_MSD_FS_Start.o [1] TX_DataGraph 0x80004bec 0xb0 Code Gb RF_Control.o [1] TX_DataPacket 0x80004b40 0xac Code Gb RF_Control.o [1] TX_RX_Arr 0x8262d008 0x10000 Data Gb DeviceMenu.o [1] TotalAmp 0x8263d008 0x8 Data Gb DeviceMenu.o [1] UserSymbols 0x80007584 0x40 Data Gb DeviceMenu.o [1] _A_I2C1_CLK_HI 0x400a000c 0x4 Data Wk DAC_AD5338.o [1] _A_I2C1_CLK_LO 0x400a0010 0x4 Data Wk DAC_AD5338.o [1] _A_I2C1_CTRL 0x400a0008 0x4 Data Wk DAC_AD5338.o [1] _A_I2C1_STAT 0x400a0004 0x4 Data Wk DAC_AD5338.o [1] _A_I2C1_TX 0x400a0000 0x4 Data Wk DAC_AD5338.o [1] _A_I2CCLK_CTRL 0x400040ac 0x4 Data Wk DAC_AD5338.o [1] _A_KEYCLK_CTRL 0x400040b0 0x4 Data Wk MatrixKeyboard.o [1] _A_KS_FAST_TST 0x40050010 0x4 Data Wk MatrixKeyboard.o [1] _A_KS_IRQ 0x40050008 0x4 Data Wk MatrixKeyboard.o [1] _A_KS_MATRIX_DIM 0x40050014 0x4 Data Wk MatrixKeyboard.o [1] _A_LCDCLK_CTRL 0x40004054 0x4 Data Wk BSP.o [1] _A_LCD_CTRL 0x31040018 0x4 Data Wk BSP.o [1] _A_LCD_POL 0x31040008 0x4 Data Wk BSP.o [1] _A_LCD_TIMH 0x31040000 0x4 Data Wk BSP.o [1] _A_LCD_TIMV 0x31040004 0x4 Data Wk BSP.o [1] _A_P2_DIR_CLR 0x40028014 0x4 Data Wk DRAGON_RS1_INIT.o [1] _A_P2_DIR_SET 0x40028010 0x4 Data Wk DRAGON_RS1_INIT.o [1] _A_P3_INP_STATE 0x40028000 0x4 Data Wk ADC_Rec_16bit_Par.o [1] _A_P3_MUX_CLR 0x40028114 0x4 Data Wk DRAGON_RS1_INIT.o [1] _A_P3_OUTP_CLR 0x40028008 0x4 Data Wk 16x02_lcd.o [1] _A_P3_OUTP_SET 0x40028004 0x4 Data Wk 16x02_lcd.o [1] _A_P_MUX_CLR 0x40028104 0x4 Data Wk 16x02_lcd.o [1] _A_SIC1_APR 0x4000c00c 0x4 Data Wk MatrixKeyboard.o [1] _A_SIC1_ATR 0x4000c010 0x4 Data Wk MatrixKeyboard.o [1] _A_SPI1_CON 0x20088004 0x4 Data Wk 16x02_lcd.o [1] _A_SPI1_GLOBAL 0x20088000 0x4 Data Wk 16x02_lcd.o [1] _A_SPI1_IER 0x2008800c 0x4 Data Wk 16x02_lcd.o [1] _A_SPI1_STAT 0x20088010 0x4 Data Wk 16x02_lcd.o [1] _A_SPI1_TIM_CTRL 0x20088400 0x4 Data Wk 16x02_lcd.o [1] _A_SPI_CTRL 0x400040c4 0x4 Data Wk 16x02_lcd.o [1] _ActiveChannel 0x8264268c 0x4 Data Lc JLINKDCC_Process.o [1] _Addr 0x82642680 0x4 Data Lc JLINKDCC_Process.o [1] _CheckDelays 0x80003348 0x120 Code Lc OSKERN.o [6] _Close_all 0x800070dd 0x10 Code Gb xcloseall.o [3] _Command 0x8264267c 0x4 Data Lc JLINKDCC_Process.o [1] _Data 0x82642694 0x4 Data Lc JLINKDCC_Process.o [1] _GenldDefault 0x80000b3d 0x280 Code Lc xprintffull.o [3] _HandleRead 0x80004624 0xf4 Code Lc JLINKDCC_Process.o [1] _HandleWrite 0x80004718 0x1dc Code Lc JLINKDCC_Process.o [1] _LdtobDefault 0x800006a1 0x49c Code Lc xprintffull.o [3] _LitobDefault 0x80000595 0x10c Code Lc xprintffull.o [3] _NumReadItems 0x82642668 0x2 Data Lc JLINKDCC_Process.o [1] _OS_ISR_Tick 0x800038f8 0x2c Code Lc RTOSINIT_LPC3250.o [1] _PendingPacketNB 0x82642690 0x4 Data Lc JLINKDCC_Process.o [1] _Printf 0x80000041 0x552 Code Gb xprintffull.o [3] _Prout 0x80007055 0x16 Code Gb xprout.o [3] _PutcharsDefault 0x80000dbd 0x32 Code Lc xprintffull.o [3] _RdPos 0x82642684 0x4 Data Lc JLINKDCC_Process.o [1] _TranslationTable 0x82644000 0x4000 Data Lc RTOSINIT_LPC3250.o [1] _WrPos 0x82642688 0x4 Data Lc JLINKDCC_Process.o [1] _WritePending 0x8264269a 0x1 Data Lc JLINKDCC_Process.o [1] _WritePendingNB 0x82642699 0x1 Data Lc JLINKDCC_Process.o [1] __aeabi_cdcmple 0x80006dac Code Gb DblCmpLe.o [7] __aeabi_cdrcmple 0x80006de4 Code Gb DblCmpGe.o [7] __aeabi_d2iz 0x80006b40 Code Gb DblToS32.o [7] __aeabi_d2uiz 0x80006d70 Code Gb DblToU32.o [7] __aeabi_dadd 0x80005d1c Code Gb DblAdd.o [7] __aeabi_ddiv 0x80003f70 Code Gb DblDiv.o [7] __aeabi_dmul 0x80004f5c Code Gb DblMul.o [7] __aeabi_dsub 0x8000534c Code Gb DblSub.o [7] __aeabi_errno_addr 0x80007095 0x14 Code Gb errno.o [3] __aeabi_f2d 0x80006adc Code Gb FltToDbl.o [7] __aeabi_i2d 0x80006e84 Code Gb S32ToDbl.o [7] __aeabi_i2f 0x80006e50 Code Gb S32ToFlt.o [7] __aeabi_idiv 0x800056f4 Code Gb I32DivMod.o [7] __aeabi_idiv0 0x80007130 Code Gb IntDivZer.o [7] __aeabi_idivmod 0x800056f4 Code Gb I32DivMod.o [7] __aeabi_ldiv0 0x80007138 Code Gb I64DivZer.o [7] __aeabi_ldivmod 0x8000589c Code Gb I64DivMod.o [7] __aeabi_memclr4 0x80007120 Code Gb ABImemclr4.o [7] __aeabi_memcpy 0x80006560 Code Gb ABImemcpy.o [7] __aeabi_memcpy4 0x80006584 Code Gb ABImemcpy.o [7] __aeabi_memcpy8 0x80006584 Code Gb ABImemcpy.o [7] __aeabi_memset 0x80006a64 Code Gb ABImemset.o [7] __aeabi_memset4 0x80006ce8 Code Gb ABImemset48.o [7] __aeabi_memset8 0x80006ce8 Code Gb ABImemset48.o [7] __aeabi_ui2d 0x80007104 Code Gb U32ToDbl.o [7] __aeabi_ui2f 0x800070cc Code Gb U32ToFlt.o [7] __aeabi_uidiv 0x80005704 Code Gb I32DivMod.o [7] __aeabi_uidivmod 0x80005704 Code Gb I32DivMod.o [7] __aeabi_uldivmod 0x800058b4 Code Gb I64DivMod.o [7] __cstart_closeall 0x800070ac Code Gb cexit.o [7] __dwrite 0x80006ee4 0x30 Code Gb dwrite.o [8] __exit 0x80006ff4 0x20 Code Gb exit.o [8] __iar_Dnorm 0x800067d5 0xc0 Code Gb xdnorm.o [3] __iar_Dscale 0x800060a5 0x114 Code Gb xdscale.o [3] __iar_Errno 0x82642c7c 0x4 Data Gb errno.o [3] __iar_Log 0x800042fd 0x328 Code Gb xlog.o [3] __iar_Memchr 0x800069d0 Code Gb memchr.o [7] __iar_Memset 0x80006a64 Code Gb ABImemset.o [7] __iar_Memset4_word 0x80006cf4 Code Gb ABImemset48.o [7] __iar_Memset8_word 0x80006cf4 Code Gb ABImemset48.o [7] __iar_Memset_word 0x80006a70 Code Gb ABImemset.o [7] __iar_Strchr 0x80007014 Code Gb strchr.o [7] __iar_Tls_setup___iar_Errno 0x82642c78 0x4 Data Gb errno.o [3] __iar_dadd 0x80005d2c Code Gb DblAdd.o [7] __iar_data_init2 0x80006eb4 0x30 Code Gb data_init2.o [7] __iar_dsub 0x8000535c Code Gb DblSub.o [7] __iar_dsubStart 0x8000537c Code Gb DblSub.o [7] __iar_i2d 0x80006e88 Code Gb S32ToDbl.o [7] __iar_i2f 0x80006e64 Code Gb S32ToFlt.o [7] __iar_packbits_init2 0x800061b8 0xf0 Code Gb packbits_init2.o [7] __iar_program_start 0x80006ba0 Code Gb LPC3250_startup.o [1] __iar_return_from_swi 0x80007134 0x4 Code Gb xreturnswi.o [8] __iar_sh_stdout 0x800068c4 0x74 Code Gb iarwstd.o [8] __iar_sh_stdout_close 0x80006894 0x30 Code Gb iarwstd.o [8] __iar_sh_stdout_handle 0x82642c88 0x4 Data Lc iarwstd.o [8] __iar_sh_write 0x80006d2c 0x44 Code Gb iarwrite.o [8] __iar_zero_init2 0x80006f14 0x28 Code Gb zero_init2.o [7] __low_level_init 0x80003cb4 0x2bc Code Gb RTOSINIT_LPC3250.o [1] __vector 0x80000000 Code Gb LPC3250_startup.o [1] __vector_0x14 0x80000014 Code Gb LPC3250_startup.o [1] __write_buffered 0x80006635 0xd4 Code Gb xxwritebuffered.o [3] _aVRAM 0x08000000 0x3fc00 Data Lc BSP.o [1] _acBuffer 0x8264269c 0x400 Data Lc JLINKDCC_Process.o [1] _apOS_ISRHandler 0x82642a9c 0x180 Data Lc RTOSINIT_LPC3250.o [1] _exit 0x800070a8 Code Gb cexit.o [7] _pfOnRx 0x8264266c 0x8 Data Gb JLINKDCC_Process.o [1] _pfOnTx 0x82642674 0x8 Data Gb JLINKDCC_Process.o [1] base_y 0x80007606 0x2 Data Lc 16x02_lcd.o [1] div 0x80007035 0x20 Code Gb div.o [3] exit 0x80007129 0x6 Code Gb exit.o [3] irq_handler 0x800052e0 Code Gb rtos.o [6] lcd_gotoxy 0x800028f4 0xc4 Code Gb 16x02_lcd.o [1] lcd_init 0x80002594 0x360 Code Gb 16x02_lcd.o [1] lcd_maxx 0x80007604 0x1 Data Gb 16x02_lcd.o [1] lcd_maxy 0x80007605 0x1 Data Gb 16x02_lcd.o [1] lcd_putchar 0x800029b8 0x494 Code Gb 16x02_lcd.o [1] lcd_puts 0x80002e50 0x24 Code Gb 16x02_lcd.o [1] lcd_send_reg_2wire 0x80002e74 0xac Code Gb 16x02_lcd.o [1] lcd_x 0x80007602 0x1 Data Gb 16x02_lcd.o [1] lcd_y 0x80007603 0x1 Data Gb 16x02_lcd.o [1] main 0x800063f8 0x84 Code Gb USB_MSD_FS_Start.o [1] memchr 0x800069d0 Code Gb memchr.o [7] printf 0x80006fd5 0x20 Code Gb printf.o [3] putchar 0x80006f3d 0x26 Code Gb putchar.o [3] rfSend 0x80001760 0x90 Code Gb RF12BP_MINI3250.o [1] scope_all 0x80004d50 0x20c Code Gb RS1_Graphs.o [1] scope_array_neg 0x8263f720 0x2710 Data Gb DeviceMenu.o [1] scope_array_pos 0x8263d010 0x2710 Data Gb DeviceMenu.o [1] store 0x82642c1c 0x50 Data Lc xxwritebuffered.o [3] storeLen 0x82642c6c 0x4 Data Lc xxwritebuffered.o [3] strchr 0x80007014 Code Gb strchr.o [7] strlen 0x80006c50 Code Gb strlen.o [7]
[1] = C:\РАБОТА\РАЗРАБОТКИ\ПРОЕКТЫ\ДРАКОН\Регистраторы\Прошивка\LPC3250 GUI_RTOS\arm\PowerPac\BoardSupport\NXP\LPC3250\Output\LPC3250\Debug_SDRAM\Obj [2] = command line [3] = dl5E_tl_in.a [4] = fs5t_al__ds.a [5] = ip5t_tl__d.a [6] = os5t_al__d.a [7] = rt5E_al.a [8] = shs_l.a [9] = usb5t_tl__d.a
28 842 bytes of readonly code memory 1 094 bytes of readonly data memory 40 111 066 bytes of readwrite data memory
Errors: none Warnings: none вот скрипт линкера. Не понял я как файл цеплять с таким расширением. Почему-то запрещено Код /*###ICF### Section handled by ICF editor, don't touch! ****/ /*-Editor annotation file-*/ /* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ /*-Specials-*/ define symbol __ICFEDIT_intvec_start__ = 0x80000000; /*-Memory Regions-*/ define symbol __ICFEDIT_region_ROM_start__ = 0x80000040; define symbol __ICFEDIT_region_ROM_end__ = 0x83FFFFFF; define symbol __ICFEDIT_region_RAM_start__ = 0x80000040; define symbol __ICFEDIT_region_RAM_end__ = 0x83FFFFFF; /*-Sizes-*/ define symbol __ICFEDIT_size_cstack__ = 0x1000; define symbol __ICFEDIT_size_svcstack__ = 0x0; define symbol __ICFEDIT_size_irqstack__ = 0x80; // (4 * (4 * 8)) = Nesting level * (4 * 8) bytes. Total size has to be a multiple of 8 bytes ! define symbol __ICFEDIT_size_fiqstack__ = 0x0; define symbol __ICFEDIT_size_undstack__ = 0x0; define symbol __ICFEDIT_size_abtstack__ = 0x0; define symbol __ICFEDIT_size_heap__ = 0x1000; /**** End of ICF editor section. ###ICF###*/
define memory mem with size = 4G; define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; define block SVC_STACK with alignment = 8, size = __ICFEDIT_size_svcstack__ { }; define block IRQ_STACK with alignment = 8, size = __ICFEDIT_size_irqstack__ { }; define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ { }; define block UND_STACK with alignment = 8, size = __ICFEDIT_size_undstack__ { }; define block ABT_STACK with alignment = 8, size = __ICFEDIT_size_abtstack__ { }; define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
initialize by copy { readwrite }; do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly }; place in RAM_region { readwrite, block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK, block UND_STACK, block ABT_STACK, block HEAP };
Сообщение отредактировал kolobochishe - Dec 14 2011, 14:52
|
|
|
|
|
Dec 14 2011, 14:42
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(kolobochishe @ Dec 14 2011, 18:36)  кошмар. я думал скролл будет  сейчас файл прикреплю Для скролла есть тег codebox. Проблема в том, что часть RO-данных из P1 размещена после P2: Код "P1", part 2 of 2: 0x3cc Initializer bytes ro data 0x82649080 0x3cc <for P2 s0> - 0x8264944c 0x3cc
|
|
|
|
|
Dec 14 2011, 14:49
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634

|
массив на адресе 0x80007608 Цитата(aaarrr @ Dec 14 2011, 19:42)  Для скролла есть тег codebox. Проблема в том, что часть RO-данных из P1 размещена после P2: Код "P1", part 2 of 2: 0x3cc Initializer bytes ro data 0x82649080 0x3cc <for P2 s0> - 0x8264944c 0x3cc а как "склеить"?
|
|
|
|
|
Dec 14 2011, 15:10
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634

|
Хорошо. Ну ROM и RAM действительно в одном и том же диапазоне. В SDRAM. Попробую завтра разделить. Уже дело к ночи  Вылечил Переместил объявление массива из одного модуля в другой. Возможно этого было достаточно. Но также Код #pragma location = 0x81000000 __no_init unsigned char MyArray[MyMaxArrayIndex]; На всякий случай попросил разместить ближе к концу адресного пространства. Все. Пойду домой. Массив заполнился. Все работает. Я разочарован в уровне "интеллекта" линкера. Зачем пихать такой большой массив в середину прошивки?
|
|
|
|
|
Dec 14 2011, 18:30
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
А не проще сделать так: 1. Выделить для линкера область, которую он не займет, размером [MyMaxArrayIndex] 2. В программе сделать Код unsigned char *MyArray; и обращаться к нему Код *(MyArray + Index) или я что-то не понял в условии задачи?
|
|
|
|
|
Dec 14 2011, 19:59
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(aaarrr @ Dec 14 2011, 23:19)  Оно, может, и проще, да идеологически неверно. объявляя массив по константному адресу, какая разница, где его указывать? можно спокойно разместить его в именованной области и уже в скрипте линкера расписать расположение только с объявлением массива мы получаем область, которая им (массивом) однозначно занята с указателем больше простора - если вдруг такой огромный кусок не нужен, отдаем его, например, под кучу
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|