memcpy((u8_t*)SRAM_DST,(u8_t*)FLASH_SRC,sizeof(proc)) ?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Romario 19 июня 2003 г. 17:02
В ответ на: Народ подскажите pls как в С записать значение по нужному адресу в SRAM. отправлено JTAG 19 июня 2003 г. 16:26

а размер функции должен как то вычислять линкер. Вот у линкера
с которым я работал (не под 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