ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
791657
Chum_A (03.11.2017 14:07, просмотров: 2542)
GCC ARM, борьба с линкером при размещении в выделенной секции: В исходнике: __attribute__((section(".progid.VER"))) const char ver[] ="VER_0.1"; __attribute__((section(".progid.DAT"))) const char dat[] = __DATE__; В скрипте линкера: MEMORY { ........... PROGID (r) : ORIGIN = 0x0001FFD0, LENGTH = 0x30 RAM (rw) : ORIGIN = 0x20000000, LENGTH = 32K .......... } SECTIONS { ......................... .progid : { KEEP(*(.progid*)) *(.progid.VER) *(.progid.DAT) *(.progid*); } > PROGID . = ALIGN(4); __etext = .; .data : AT (__etext) { ......................... В map: .progid 0x0001ffd0 0x14 *(.progid*) .progid.DAT 0x0001ffd0 0xc ../obj/preinit.o 0x0001ffd0 dat .progid.VER 0x0001ffdc 0x8 ../obj/preinit.o 0x0001ffdc ver *(.progid.VER) *(.progid.DAT) *(.progid*) 0x0001ffe4 . = ALIGN (0x4) 0x0001ffe4 __etext = . .data 0x20000000 0x70 load address 0x0001ffe4 0x20000000 __data_start__ = . В прошивке: 1FFD0: 4E 6F 76 20 20 33 20 32 30 31 37 00 56 45 52 5F | Nov 3 2017.VER_ 1FFE0: 30 2E 31 00 00 12 7A 00 FC 7F 00 00 15 00 00 00 | 0.1......................... 1FFF0: 10 00 00 20 00 00 00 00 54 4D 00 00 74 4D 00 00 | .............................. Вопросы: 1 Откуда мусор в прошивке после VER_0.1 и как его убрать 2 Меняю местами *(.progid.VER) с *(.progid.DAT), все равно в прошивке первой стоит DAT P.S. Вставлять абсолютные адреса в секцию .progid не хочется