
Scatter Loading Description files
Здравейте,
Проблема ми не е сложен, но е малко дълъг за обяснение, затова Ви моля за търпение, докато четете нататък.
Имам evaluation board с LPC4357 и на SPIFI интерфейса QUAD SPI Flash.
Ако искам да пиша на вътрешният флаш на контролера - ОК.
Ако искам да пиша на външния флаш и от него да бутва - ОК.
Но ми се налага да бутне от вътрешния флаш да изпълни процедура за реинициализация на SPIFI (настройка на скоростта на шината) и да продължи от SPIFI. Това е така, защото ако пуснеш директно да зарежда от SPIFI установява скоростта на 32Мхз, а не на максимума (в моят случай 102Мхз). Официално намерих само един пример как да се установи скоростта на SPIFI и това е чрез затворена библиотека от NXP, която се Import-ва в проекта и се вика функцията за инициализация. Но това трябва да стане от вътрешната памет. Иначе на мен ми се искаше да зареди от SPIFI, да си укажа само новата скорост на шината и да продължи, но уви.
Затова се налага използването на SCT файл за линкера. Имам примерен проект с такава постановка, но нещо не се справям да пригодя SCT файла за моите нужди.
Прилагам sct файла от примерният проект. Аз замених само имената на Object файлловете, но при зареждане от KEIL MDK-ARM средата на моят проекта и стартирането му не получавам никаква реакция от микроконтролера.
Молбата ми е за малко насоки кой ред от файла какво значи - чета ръководството RealView® Compilation Tools Version 3.0 Linker and Utilities Guide, но като за начало нещата не ми се виждат много ясни.
Както казах само съм сменил имената на Object файловете в моят вариант, но мисля се налага да преизчисля и указаните размери от памет, която да се ползва.
Благодаря за отделеното време
едит: в момента разглеждам map файла генериран за моят проект, ето информативната част:
 |  |  |
 | Код: Memory Map of the image
Image Entry point : 0x14000115
Load Region LR_IROM1 (Base: 0x14000000, Size: 0x000c1698, Max: 0x00100000, ABSOLUTE)
Execution Region RW_IRAM2 (Base: 0x10000000, Size: 0x00002860, Max: 0x00018000, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x10000000 0x00000020 Code RO 4 .text startup_lpc43xx.o 0x10000020 0x0000003c Code RO 11 .text system_lpc43xx.o 0x1000005c 0x000000b8 Code RO 57 .text lpc43xx_gpio.o 0x10000114 0x00000024 Code RO 86 .text lpc43xx_scu.o 0x10000138 0x00000a24 Code RO 105 .text lpc43xx_cgu.o 0x10000b5c 0x00000334 Code RO 128 .text lpc43xx_lcd.o 0x10000e90 0x00000570 Code RO 150 .text is42s16400d.o 0x10001400 0x00000378 Code RO 169 .text lpc43xx_timer.o 0x10001778 0x00000380 Code RO 200 .text main.o 0x10001af8 0x0000000a Ven RO 268 Veneer$$Code anon$$obj.o 0x10001b02 0x000004de Data RO 106 .constdata lpc43xx_cgu.o 0x10001fe0 0x00000020 Data RO 202 .constdata main.o 0x10002000 0x00000004 Data RW 12 .data system_lpc43xx.o 0x10002004 0x00000044 Data RW 107 .data lpc43xx_cgu.o 0x10002048 0x00000001 Data RW 129 .data lpc43xx_lcd.o 0x10002049 0x00000003 PAD 0x1000204c 0x00000010 Data RW 203 .data main.o 0x1000205c 0x00000004 PAD 0x10002060 0x00000800 Zero RW 1 STACK startup_lpc43xx.o
Execution Region RW_IRAM1 (Base: 0x10080000, Size: 0x00000000, Max: 0x0000a000, ABSOLUTE)
**** No section assigned to this execution region ****
Execution Region ER_IROM1 (Base: 0x14000000, Size: 0x000bf63c, Max: 0x00100000, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x14000000 0x00000114 Data RO 3 RESET startup_lpc43xx.o 0x14000114 0x00000000 Code RO 235 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) 0x14000114 0x00000004 Code RO 240 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) 0x14000118 0x00000004 Code RO 243 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) 0x1400011c 0x00000000 Code RO 245 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) 0x1400011c 0x00000000 Code RO 247 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) 0x1400011c 0x00000008 Code RO 248 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) 0x14000124 0x00000000 Code RO 250 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) 0x14000124 0x00000000 Code RO 252 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) 0x14000124 0x00000004 Code RO 241 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) 0x14000128 0x00000062 Code RO 238 .text mc_w.l(uldiv.o) 0x1400018a 0x0000001e Code RO 254 .text mc_w.l(llshl.o) 0x140001a8 0x00000020 Code RO 256 .text mc_w.l(llushr.o) 0x140001c8 0x00000024 Code RO 258 .text mc_w.l(init.o) 0x140001ec 0x0000000e Code RO 262 i.__scatterload_copy mc_w.l(handlers.o) 0x140001fa 0x00000002 Code RO 263 i.__scatterload_null mc_w.l(handlers.o) 0x140001fc 0x0000000e Code RO 264 i.__scatterload_zeroinit mc_w.l(handlers.o) 0x1400020a 0x0005fa00 Data RO 185 .constdata image1.o 0x1405fc0a 0x0005fa00 Data RO 192 .constdata image2.o 0x140bf60a 0x00000002 PAD 0x140bf60c 0x00000030 Data RO 260 Region$$Table anon$$obj.o
==============================================================================
|  |
 |  |  |