реклама на сайте
подробности

 
 
> LPC11xx не стартует код из своего бутлоадера
zuy
сообщение Oct 21 2010, 10:42
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Использую LPC1114. По доке вроде все понятно.
Свой бутлоадер код во флеш прописал.
для старта делаю следующее:
1. копирую 48 векторов прерывания основной программы в ОЗУ с адреса 0x10000000
2. Делаю ремап LPC_SYSCON->SYSMEMREMAP = 0x01; т.е. отобрашаем вектора из ОЗУ в начало адресного простанства
3. инициализирую SP и PC данными из первых 8-ми байт моей проги.

Все это выглядит так:
Код
__asm void boot_jump( uint32_t address )
{
   LDR R1, [R0]    ;Load new stack pointer address
   MOV R13, R1
   LDR R1, [R0, #4];Load new program counter address
   BX  R1
}

void run(unsigned long address)
{
  unsigned long          *dst, size;
  const unsigned long    *src;
  
  // Copy vectors table
  src = (unsigned long *)address;
  dst = (unsigned long *)0x10000000;
  size = VECTORS_TABLE_SIZE >> 2;
  do  { *dst++ = *src++; } while (--size);

  LPC_SYSCON->SYSMEMREMAP = 0x01;        /* remap to SRAM */

  boot_jump(address);
}


В результате поведение непредсказуемое. то висит, то попадает куда-то в середину бутлоадера.
Если убрать ремап, то целевая прога запускается, но естественно с векторами из флеша.

Что я забываю в этой схеме?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Oct 24 2010, 01:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Любопытство победило smile.gif Со второй попытки создал в Keil работоспособный проект с исходником из сообщения #11. Не мудрствуя лукаво, вывел в окно watch значение регистра SYSMEMREMAP. Изменяя его значение с 0x02 на 0x01, наблюдаю, что содержимое памяти меняется. Вместо кода исполняемой из Flash программы появляются значения 0x00000000 вплоть до границы адреса 0x00000200. То бишь подтверждается версия о маппировании всего сегмента Flash размером 512 байт. Как этот глюк обходится в IAR, мне пока непонятно. laughing.gif Тестовый проект (для Keil 4.12) прикладываю.
Прикрепленные файлы
Прикрепленный файл  Test.zip ( 72.68 килобайт ) Кол-во скачиваний: 38
 
Go to the top of the page
 
+Quote Post
zuy
сообщение Oct 24 2010, 15:20
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Цитата(rezident @ Oct 24 2010, 04:05) *
Любопытство победило smile.gif Со второй попытки создал в Keil работоспособный проект с исходником из сообщения #11. Не мудрствуя лукаво, вывел в окно watch значение регистра SYSMEMREMAP. Изменяя его значение с 0x02 на 0x01, наблюдаю, что содержимое памяти меняется. Вместо кода исполняемой из Flash программы появляются значения 0x00000000 вплоть до границы адреса 0x00000200. То бишь подтверждается версия о маппировании всего сегмента Flash размером 512 байт. Как этот глюк обходится в IAR, мне пока непонятно. laughing.gif Тестовый проект (для Keil 4.12) прикладываю.

Да, похоже в ИАР это дело автоматически обходится.
В общем понятно что произошло. В Rev 0_0 мануала, они ошибочно указали размер таблицы векторов в 0х200 байт и тогда в описании регистра SYSMEMREMAP написали, что он ремапит таблицу векторов. И все вроде сходилось. Но потом видимо заметили косяк, что таблица то длиной 0хС0 байт и исправили это дело, а в описании регистра SYSMEMREMAP забыли указать, что он теперь ремапит не таблицу векторов, но область 0х200.
Т.о. на данный момент в последней версии мануала мы имеем некорректное описание регистра SYSMEMREMAP. Нигде по мануалу не написано, что он ремапит 0х200 байт.

А зачем мне надо настройки ROM ставить с 0-го адреса. Так я считаю, что это не мое дело раскладывать программу по адресам памяти.
Я линкеру указываю только где находятся области куда он может результат ложить, пусть сам и складывает. Мне то зачем над этим думать.
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 24 2010, 16:17
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(zuy @ Oct 24 2010, 21:20) *
Т.о. на данный момент в последней версии мануала мы имеем некорректное описание регистра SYSMEMREMAP. Нигде по мануалу не написано, что он ремапит 0х200 байт.
Угу. В NXP-ной документации косяков немало sad.gif
Цитата(zuy @ Oct 24 2010, 21:20) *
А зачем мне надо настройки ROM ставить с 0-го адреса. Так я считаю, что это не мое дело раскладывать программу по адресам памяти.
Любая программа не умнее программиста, написавшего ее wink.gif Если вы знаете чуток побольше компилятора, то почему бы это знание не применить для облегчения ему работы? Ведь вас наверняка интересует результат, а не заморочки, которые испытывает компилятор? Да и результат его работы будет вашим общим, не так ли?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zuy   LPC11xx не стартует код из своего бутлоадера   Oct 21 2010, 10:42
- - Alekseeey   У меня та же проблема. Пробую на отладке LPCXpres...   Oct 21 2010, 12:12
|- - zuy   Цитата(Alekseeey @ Oct 21 2010, 15:12) Во...   Oct 21 2010, 12:52
|- - Alekseeey   Цитата(zuy @ Oct 21 2010, 16:52) Если чес...   Oct 21 2010, 13:01
- - DpInRock   Вообще-то так и должно быть. Как правильно (это м...   Oct 21 2010, 12:38
- - DpInRock   Reset - это место откуда программа стартует. Как б...   Oct 21 2010, 12:58
|- - zuy   Цитата(DpInRock @ Oct 21 2010, 15:54) Res...   Oct 21 2010, 13:01
|- - Alekseeey   Цитата(zuy @ Oct 21 2010, 17:01) Да, это ...   Oct 21 2010, 13:41
|- - zuy   Цитата(Alekseeey @ Oct 21 2010, 16:41) По...   Oct 21 2010, 17:28
|- - zuy   Нет, все равно решительно не понимаю, что делает р...   Oct 21 2010, 19:14
|- - Alekseeey   Цитата(zuy @ Oct 21 2010, 23:14) Нет, все...   Oct 21 2010, 20:30
|- - zuy   Цитата(Alekseeey @ Oct 21 2010, 23:09) Об...   Oct 21 2010, 20:43
|- - Alekseeey   Цитата(zuy @ Oct 22 2010, 00:43) Отладчик...   Oct 22 2010, 07:00
|- - rezident   Цитата(Alekseeey @ Oct 22 2010, 13:00) По...   Oct 22 2010, 13:28
- - DpInRock   Понятия не имею. Но для вас вряд ли имеет значение...   Oct 21 2010, 13:13
- - rezident   Возникло предположение, что ремапу подвергается Fl...   Oct 21 2010, 20:55
|- - zuy   Цитата(rezident @ Oct 21 2010, 23:55) Воз...   Oct 21 2010, 21:09
- - rezident   Встречный вопрос. А сколько памяти у вас отведено ...   Oct 21 2010, 21:48
|- - zuy   Цитата(rezident @ Oct 22 2010, 00:48) Вст...   Oct 22 2010, 05:17
- - rezident   Сегодня проэкспериментировал со своей платой и исх...   Oct 22 2010, 20:51
|- - Alekseeey   Цитата(rezident @ Oct 23 2010, 00:51) Что...   Oct 23 2010, 05:02
|- - zuy   Цитата(rezident @ Oct 22 2010, 23:51) Сег...   Oct 23 2010, 09:18
|- - rezident   Цитата(zuy @ Oct 23 2010, 15:18) Поставьт...   Oct 23 2010, 20:00
- - DpInRock   За кортекс не скажу, но кроме векторов надо копиро...   Oct 23 2010, 08:47
|- - zuy   Цитата(rezident @ Oct 24 2010, 19:17) Люб...   Oct 24 2010, 16:56
- - KRS   Тоже столкнулся с проблемой. Но при обычной отладк...   Jun 16 2011, 14:20
- - Almaz1988   Вот код бутлоадера: CODE#include "LPC11xx.h...   Sep 24 2012, 08:46
|- - _Артём_   Цитата(Almaz1988 @ Sep 24 2012, 11:46) Ра...   Sep 24 2012, 11:18
|- - Сергей Борщ   QUOTE (Almaz1988 @ Sep 24 2012, 11:46) Во...   Sep 24 2012, 12:45
|- - _Артём_   Цитата(Almaz1988 @ Sep 24 2012, 11:46) Ра...   Sep 24 2012, 15:09
- - KRS   Т.к. у Cortex-M0 нет VTOR и переместить таблицу пр...   Sep 24 2012, 11:41
- - Almaz1988   Наметился небольшой прогресс)) В "загрузчике...   Sep 28 2012, 06:22
|- - KRS   Цитата(Almaz1988 @ Sep 28 2012, 10:22) Ещ...   Sep 28 2012, 07:15
|- - Сергей Борщ   QUOTE (Almaz1988 @ Sep 28 2012, 09:22) и ...   Sep 28 2012, 07:56
|- - _Артём_   Цитата(Almaz1988 @ Sep 28 2012, 09:22) Ис...   Sep 28 2012, 18:55
- - Almaz1988   Цитата(KRS @ Sep 28 2012, 11:15) Если вы ...   Sep 28 2012, 08:10
|- - Сергей Борщ   QUOTE (Almaz1988 @ Sep 28 2012, 11:10) Ср...   Sep 28 2012, 08:44
|- - KRS   Цитата(Almaz1988 @ Sep 28 2012, 12:10) Я ...   Sep 28 2012, 10:45
- - Almaz1988   Цитата(Сергей Борщ @ Sep 28 2012, 12:44) ...   Sep 28 2012, 09:06
|- - Сергей Борщ   QUOTE (Almaz1988 @ Sep 28 2012, 12:06) Та...   Sep 28 2012, 09:26
|- - alx2   Кажется, без ответа остался этот вопрос: Цитата(Al...   Oct 2 2012, 10:16
- - Almaz1988   Цитата(Сергей Борщ @ Sep 28 2012, 13:26) ...   Sep 28 2012, 09:43
- - Almaz1988   Продолжаю штурм)) и в загрузчике и в рабочей прогр...   Oct 1 2012, 11:34
- - Almaz1988   Продолжаю штурм)) и в загрузчике и в рабочей прогр...   Oct 1 2012, 11:36
- - Almaz1988   Продолжаю штурм)) и в загрузчике и в рабочей прогр...   Oct 1 2012, 11:36
- - Almaz1988   Продолжаю штурм)) и в загрузчике и в рабочей прогр...   Oct 1 2012, 11:36
- - Almaz1988   Продолжаю штурм)) и в загрузчике и в рабочей прогр...   Oct 1 2012, 11:38
- - Almaz1988   Добил бутлоадер))) В бутлоадере использую только C...   Oct 2 2012, 06:09
|- - Сергей Борщ   QUOTE (Almaz1988 @ Oct 2 2012, 09:09) Как...   Oct 2 2012, 06:31
- - Almaz1988   Дело близится к завершению)) "Программный за...   Oct 5 2012, 10:07
|- - _Артём_   Цитата(Almaz1988 @ Oct 5 2012, 13:07) ...   Oct 5 2012, 13:23
|- - igor_mmm   Добрый День! Использую 11с24 и работаю с CAN. ...   Oct 6 2012, 19:07
|- - KRS   Цитата(igor_mmm @ Oct 6 2012, 23:07) Необ...   Oct 6 2012, 20:13
|- - igor_mmm   Цитата(KRS @ Oct 7 2012, 00:13) Если в се...   Oct 7 2012, 07:29
- - Almaz1988   Цитата(igor_mmm @ Oct 6 2012, 22:07) Добр...   Oct 8 2012, 04:11
|- - igor_mmm   Цитата(Almaz1988 @ Oct 8 2012, 08:11) Вот...   Oct 9 2012, 03:21
- - Almaz1988   Вопрос по примеру "NXP secondary bootloader...   Oct 8 2012, 06:05
|- - Сергей Борщ   QUOTE (Almaz1988 @ Oct 8 2012, 09:05) Как...   Oct 8 2012, 06:34
- - Almaz1988   Цитата(Сергей Борщ @ Oct 8 2012, 09:34) П...   Oct 8 2012, 09:28
|- - Сергей Борщ   QUOTE (Almaz1988 @ Oct 8 2012, 12:28) Как...   Oct 8 2012, 11:02
- - Almaz1988   В общем осталась последняя проблема. Есть функция ...   Oct 8 2012, 11:45
|- - Сергей Борщ   QUOTE (Almaz1988 @ Oct 8 2012, 14:45) Что...   Oct 8 2012, 11:57
- - Almaz1988   Цитата(igor_mmm @ Oct 9 2012, 06:21) а гд...   Oct 9 2012, 04:24
|- - igor_mmm   Цитата(Almaz1988 @ Oct 9 2012, 08:24) В п...   Oct 9 2012, 05:53
- - Almaz1988   Цитата(Сергей Борщ @ Oct 8 2012, 14:57) Н...   Oct 9 2012, 08:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.05432 секунд с 7
ELECTRONIX ©2004-2016