uriy 4 23 июня, 2020 Опубликовано 23 июня, 2020 · Жалоба Перетаскиваю старый проект из ADS 1.2 в KEIL 5. Помогите перенести следующий кусок: BSS_Start_Ptr IMPORT |Image$$ZI$$Base| DCD |Image$$ZI$$Base| ; BSS_End_Ptr IMPORT |Image$$ZI$$Limit| DCD |Image$$ZI$$Limit| ; ROM_Data_Start_Ptr IMPORT |Image$$RO$$Limit| DCD |Image$$RO$$Limit| ; RAM_Start_Ptr IMPORT |Image$$RW$$Base| DCD |Image$$RW$$Base| ....... LDR a1,[pc, #ROM_Data_Start_Ptr-.-8] LDR a2,[pc, #RAM_Start_Ptr-.-8] LDR a4,[pc, #BSS_Start_Ptr-.-8] KEIL не понимает эти константы L6218E: Undefined symbol Image$$RO$$Limit Тут пишут http://www.keil.com/support/man/docs/armlink/armlink_pge1362065957713.htm что нужно создать секции в скаттер файле. Но ведь в скаттер файле это будут фиксированные адреса. А сейчас в ADS нет фиксированных адресов. Или я что-то неправильно понимаю? Программа и данные находятся во внешней RAM. Сейчас у меня такие адреса: Image$$RO$$Base = 0x40000000 Image$$RO$$Limit= 0x400739a8 Image$$RW$$Base = 0x400739a8 Image$$RW$$Limit= 0x402d7814 Image$$ZI$$Base = 0x40097524 Image$$ZI$$Limit= 0x402d7814 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 23 июня, 2020 Опубликовано 23 июня, 2020 · Жалоба Согласно этому должно быть не так ROM_Data_Start_Ptr IMPORT |Image$$RO$$Limit| DCD |Image$$RO$$Limit| а так: IMPORT |Image$$RO$$Limit| ROM_Data_Start_Ptr DCD |Image$$RO$$Limit| Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 26 июня, 2020 Опубликовано 26 июня, 2020 · Жалоба Проблема в том что кейл не понимает эти константы. Вот так он понимает: BSS_Start_Ptr IMPORT |Image$$ER_IROM1$$ZI$$Base| DCD |Image$$ER_IROM1$$ZI$$Base| ; BSS_End_Ptr IMPORT |Image$$ER_IROM1$$ZI$$Limit| DCD |Image$$ER_IROM1$$ZI$$Limit| ; ROM_Data_Start_Ptr IMPORT |Image$$ER_IROM1$$RO$$Limit| DCD |Image$$ER_IROM1$$RO$$Limit| ; RAM_Start_Ptr IMPORT |Image$$ER_IROM1$$RW$$Base| DCD |Image$$ER_IROM1$$RW$$Base| Нашел тут https://community.arm.com/developer/tools-software/tools/f/keil-forum/22328/determining-image-size-from-within-code Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 26 июня, 2020 Опубликовано 26 июня, 2020 · Жалоба Общий стнтаксис описан тут. Здесь region_name - имя интересующего execution region. Он берется из линкер-скрипта .sct. А туда попадает из меню опций проекта (вкладка линкер). Там предопределено несколько стандартных имен для регионов памяти. Но никто не мешает написать линкер-скрипт самому и использовать его. Тогда имена регионов могут быть любыми, отличными от стандартных предопоеделенных в Кейле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться