реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как объявить правильно массив 40МБ
kolobochishe
сообщение Dec 14 2011, 13:37
Сообщение #1


Местный
***

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



необходимо объявить ( =создать) массив размером 40МБ. Памяти SDRAM на борту - 64МБ.

1-ый вариант - объявляю глобально - все ОК, но!... прошивка устройства занимает немногим больше размера этого массива. Прошиваю через UART. Очень долго, да и глупо это прошивать пустой массив.

2-ой вариант - создаю динамический массив. Сначала не работает (calloc возвращает NULL). Увеличиваю размер кучи в линкер файле (HEAP) - все ОК, но!... опять прошивка чуть больше 40МБ

Хотел поэкспериментировать с указанием пределов размещения кода программы. Т.е. обмануть линкер. Объявить массив меньше на краю доступной памяти, заведомо указав край намного раньше. Но не получается.

Посоветуйте, как правильно сделать? Чтобы прошивка была нормального размера
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 14 2011, 14:07
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(kolobochishe @ Dec 14 2011, 17:37) *
Посоветуйте, как правильно сделать? Чтобы прошивка была нормального размера

Если массив пустой, то в окончательной прошивке его быть не должно, он будет инициализирован после старта программы. Если не пустой, то все зависит от компилятора, скажем, Keil/RVCT упаковывают RW-данные LZ-подобным алгоритмом.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Dec 14 2011, 14:17
Сообщение #3


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



А мне кажется не инициализированные данные не должны храниться в бинарнике. Тем более удивило раздувание прошивки из-за увеличения heap.
Ну как вариант наверно можно просто попросить линкера выделить отдельную секцию размером 40мб в RAM, ну а потом уже по ней хоть указателем ходить, хоть массив объявить.

Кстати да, мысль пришла...фишка ведь в том, что все глобальные не инициализированные переменные инициализируются нулями. Это относится и к массивам? Или нет?
Тогда может быть в настройках линкера можно задать рантайм инициализацию(везде так и есть по дефолту) вместо лоадтайм?
Я помню в техасовском CCS было что-то подобное.
Что за проц у вас и что за компилятор?


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
kolobochishe
сообщение Dec 14 2011, 14:27
Сообщение #4


Местный
***

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



Массив пустой sad.gif только объявляю.

вот так

unsigned char MyArray[40000000];



IAR 5.4

LPC3250

Цитата(sigmaN @ Dec 14 2011, 19:17) *
что все глобальные не инициализированные переменные инициализируются нулями. Это относится и к массивам? Или нет?


да. Вроде так. и можно поставить перед таким массивом __no_init. Тогда не будет инициализировать.



А про кучу, тут было на форуме. Даже если размер кучи указан, но в тексте программы нет функций динамического создания массивов, типа malloc, calloc, то линкер эту секцию не создает.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 14 2011, 14:31
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sigmaN @ Dec 14 2011, 18:17) *
Кстати да, мысль пришла...фишка ведь в том, что все глобальные не инициализированные переменные инициализируются нулями. Это относится и к массивам? Или нет?

К массивам относится, естественно.

Цитата(kolobochishe @ Dec 14 2011, 18:25) *
Массив пустой sad.gif только объявляю.

Тогда покажите скрипт линкера и map-файл.
Go to the top of the page
 
+Quote Post
kolobochishe
сообщение Dec 14 2011, 14:41
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 14 2011, 14:42
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(kolobochishe @ Dec 14 2011, 18:36) *
кошмар. я думал скролл будет sm.gif сейчас файл прикреплю

Для скролла есть тег codebox.

Проблема в том, что часть RO-данных из P1 размещена после P2:
Код
"P1", part 2 of 2:                            0x3cc
  Initializer bytes  ro data  0x82649080      0x3cc  <for P2 s0>
                            - 0x8264944c      0x3cc
Go to the top of the page
 
+Quote Post
kolobochishe
сообщение Dec 14 2011, 14:49
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 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


а как "склеить"?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 14 2011, 14:57
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(kolobochishe @ Dec 14 2011, 18:49) *
а как "склеить"?

Если по-простому, то разделить RO и RW в памяти.

Как правильно, к сожалению, не скажу, ибо не спец по IAR. Надо выяснять, что такое "Copy/packbits (__iar_packbits_init2)", откуда оно берется и по каким правилам размещается. Смотрите мануалы.
Go to the top of the page
 
+Quote Post
kolobochishe
сообщение Dec 14 2011, 15:10
Сообщение #10


Местный
***

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



Хорошо. Ну ROM и RAM действительно в одном и том же диапазоне. В SDRAM. Попробую завтра разделить. Уже дело к ночи sm.gif

Вылечил sm.gif

Переместил объявление массива из одного модуля в другой. Возможно этого было достаточно. Но также

Код
#pragma location = 0x81000000
__no_init unsigned char MyArray[MyMaxArrayIndex];


На всякий случай попросил разместить ближе к концу адресного пространства. Все. Пойду домой. Массив заполнился. Все работает.
Я разочарован в уровне "интеллекта" линкера. Зачем пихать такой большой массив в середину прошивки?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 14 2011, 15:14
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(kolobochishe @ Dec 14 2011, 19:10) *
Я разочарован в уровне "интеллекта" линкера. Зачем пихать такой большой массив в середину прошивки?

Ну, ему в общем-то и было указано свалить все в кучу. Остается только разобраться с packbits.
Go to the top of the page
 
+Quote Post
kolobochishe
сообщение Dec 14 2011, 15:14
Сообщение #12


Местный
***

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



а вообще, похоже я чего-то не понял. Не хотел он с такими условиями по нужному мне адресу объявляться в самом первом модуле. Без адресации - пожалуйста. А в этом модуле все ОК. Странно.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 14 2011, 18:30
Сообщение #13


Гуру
******

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



А не проще сделать так:

1. Выделить для линкера область, которую он не займет, размером [MyMaxArrayIndex]
2. В программе сделать
Код
unsigned char *MyArray;

и обращаться к нему
Код
*(MyArray + Index)

или я что-то не понял в условии задачи?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 14 2011, 19:19
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(toweroff @ Dec 14 2011, 22:30) *
А не проще сделать так:

Оно, может, и проще, да идеологически неверно.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 14 2011, 19:59
Сообщение #15


Гуру
******

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



Цитата(aaarrr @ Dec 14 2011, 23:19) *
Оно, может, и проще, да идеологически неверно.

объявляя массив по константному адресу, какая разница, где его указывать?
можно спокойно разместить его в именованной области и уже в скрипте линкера расписать расположение
только с объявлением массива мы получаем область, которая им (массивом) однозначно занята
с указателем больше простора - если вдруг такой огромный кусок не нужен, отдаем его, например, под кучу
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 15:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01588 секунд с 7
ELECTRONIX ©2004-2016