Перейти к содержанию
    

Отладка в SRAM

Добрый день!

 

Использую 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 байта) или отладчик делает принудительный переход на начало ОЗУ?

{Может, и не нужна?}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

 

Использую 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, если нет то сделать ремап самому.

Вот вроде фсе. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 без всякого "мусора"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...