Цитата(adnega @ Jun 27 2008, 10:18)

Добрый день!
Использую 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, если нет то сделать ремап самому.
Вот вроде фсе.