|
а размер функции должен как то вычислять линкер. Вот у линкера
с которым я работал (не под ARM) можно было так (в скрипте линкера)
.proc_adr_start
code of (PROC) // код процедуры
.proc_adr_end
;--------------------------
размер процедуры = .proc_adr_end - .proc_adr_start;
в С модуле просто объявить:
extern u32_t proc_adr_start;
extern u32_t proc_adr_end;
memcpy((u8_t*)SRAM_DST,(u8_t*)FLASH_SRC,proc_adr_end - proc_adr_start)
или же если известно что процедурки копируемые в SRAM из FLASH не более N байт (напрмер для работы с FLASH - для bootloadera) и неохота
ковырятся в доке на линкер то можно записать просто
memcpy((u8_t*)SRAM_DST,(u8_t*)FLASH_SRC,N)
а потом
u32_t (*ErSect) (u32_t sector);
ErSect = (void*)SRAM_DST;
ErSect(Am29LV160B_SA5); //020000-02FFFF
ErSect(Am29LV160B_SA6); //030000-03FFFF
ErSect(Am29LV160B_SA7);
ну и так далее...
E-mail: info@telesys.ru