adnega 11 27 июня, 2008 Опубликовано 27 июня, 2008 · Жалоба Добрый день! Использую Keil и МК LPC2468, есть J-Link. Как отлаживать программу в SRAM? 1. Как разместить код и данные в ОЗУ, правильно записать *.sct? {Я описал *.sct так: LR_IROM 0x40000000 0x00008000{ RW_IRAM 0x40000000 0x00008000{ *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO +RW +ZI) } } По адресу 0x0 - одни нули. По адресу 0x40000000 - BL __scatterload_rt2 (0x40000008). Где вектора прерываний? *.lst - в листинге мой код размещен с адреса 0x0, код с адреса 0x40000000 остутствует. } 2. Как загрузить код и данные в ОЗУ? {По-моему, это должен сделать J-Link, но как ему об этом сказать?} 3. Как начать выполнение кода с адреса 0x40000000? {По-моему, это должен сделать J-Link, но как ему об этом сказать?} 4. В какой момент выполнять MEMMAP=2? {Перед использованием прерываний?} 5. Нужна ли запись во флеш (например, первые 64 байта) или отладчик делает принудительный переход на начало ОЗУ? {Может, и не нужна?} Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viael 0 27 июня, 2008 Опубликовано 27 июня, 2008 · Жалоба Добрый день! Использую Keil и МК LPC2468, есть J-Link. Как отлаживать программу в SRAM? 1. Как разместить код и данные в ОЗУ, правильно записать *.sct? {Я описал *.sct так: LR_IROM 0x40000000 0x00008000{ RW_IRAM 0x40000000 0x00008000{ *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO +RW +ZI) } } По адресу 0x0 - одни нули. По адресу 0x40000000 - BL __scatterload_rt2 (0x40000008). Где вектора прерываний? *.lst - в листинге мой код размещен с адреса 0x0, код с адреса 0x40000000 остутствует. } 2. Как загрузить код и данные в ОЗУ? {По-моему, это должен сделать J-Link, но как ему об этом сказать?} 3. Как начать выполнение кода с адреса 0x40000000? {По-моему, это должен сделать J-Link, но как ему об этом сказать?} 4. В какой момент выполнять MEMMAP=2? {Перед использованием прерываний?} 5. Нужна ли запись во флеш (например, первые 64 байта) или отладчик делает принудительный переход на начало ОЗУ? {Может, и не нужна?} Не морочь голову со scatter файлом. На вкладке Linker поставь галочкуUse Memory layout from Target Dialog. На вкладке Target в RO секции указываеш старт с адреса 0x40000000,Size(размер секции кода, я обычно для отладки делю срам пополам)0x8000. На вкладке RW Start=0x40008000, Size=0x8000. Создаеш файл RAM.ini примерно такого вида: FUNC void Setup (void) { // <o> Program Entry Point PC = 0x40000000; } LOAD OBJ\lcd.axf INCREMENTAL // название объектного файла Setup(); // Setup for Running g, main На вкладке Debug в качестве оладчика выбираеш J-Link, Initalization File = RAM.ini. Если используются стандартный стартап от Keilа, то во вкладке ASM в дефайнах указать REMAP, RAM_MODE, если нет то сделать ремап самому. Вот вроде фсе. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 30 июня, 2008 Опубликовано 30 июня, 2008 · Жалоба 1. Настроил в target области IROM, IRAM; 2. В user->program after build указал load.bat load.bat { jlink.exe load.ini } load.ini { halt loadbin file.axf, 0x3FFFFFCC SetPC 0x40000000 g q } 3. Все работает. Только бинарные данные из ELF я, скорее всего, достаю не корректно (выкидываю первые 0x34 байта и гружу как есть). Как достать бинарные данные из ELF без всякого "мусора"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться