Здравствуйте!
В LPC2106 хочу отвести 3 сектора в старших адресах флешки для хранения:
1 сектор - индентификационная информация (меняется при изгот. девайса или смене версии ПО) 2 --//-- - параметры устройства (могут изменятся юзером по uart`у) 3 --//-- - резервный сектор параметровКак я понимаю, нужно в линкер срипте разбить флэшку на нужные мне части MEMORY { flash : ORIGIN = 0x00000000, LENGTH = 125K /*FLASH ROM*/ flash_ID : ORIGIN = 0x0001F400, LENGTH = 1K /*идентификатор*/ flash_DP : ORIGIN = 0x0001F800, LENGTH = 1K /*параметры устройства*/ flash_BU : ORIGIN = 0x0001FC00, LENGTH = 1K /*backup sector*/ .... } затем в показать какого типа данные там будут хранится SECTIONS { { *(.text) ........... } >flash /* put all the above into FLASH */
{ *(.rodata) ........... } >flash_ID
{ *(.rodata) ........... } >flash_DP
{ *(.rodata) ........... } >flash_BU
Допустим линкер переварил такой скрипт, а как теперь компилятору показать, что например константа char DeviceID[]="xxxxxxxx LPC2106 v0.00 06.02.2006" должна распологаться в секции flash_ID
Далее, внутри секции flash_DP (это должна быть неиничиализируемая секция) мне нужно, чтобы компилер не оптимизировал расположение переменных, чтобы их положение было каким я его задам, (чтобы потом легко было менять их по последовательному интерфейсу). Например для моторолы на CodeWarrior мне пришлось писать ассемблерный файл с переменными только тогда они перестали "перемешиваться" при компиляции.
В общем какую часть мануалов курить более целенаправленно?
С уважением, Герасимов!
Замути хитовый расколбас