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

 
 
> 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
Ответов
DpInRock
сообщение Oct 21 2010, 12:38
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Вообще-то так и должно быть.

Как правильно (это мое имхо, но которое работает).

0. Компилируем программу и линковщику показываем реальные адреса.
1. Грузим программу с нужного адреса.
2. Копируем вектора, только если ремаповая область не совпадает с расположением программы (к примеру код находится SDRAM или FLASH). Т.е в этом случае копируем из области своей программы в область которая может содержать вектора и ремапится.
3. Далее запрещаем прерывания и JMP на начало своей программы: либо на реальное начало, либо на начальный адрес зоны векторов, которые ремапили (там одно и тоже будет - goto Startup).

Что характерно, не надо трогать стеки. Ибо стартап их настроит как вы в линкере укажите.



--------------------
On the road again (Canned Heat)
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   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
- - rezident   Любопытство победило Со второй попытки создал в K...   Oct 24 2010, 01:05
|- - zuy   Цитата(rezident @ Oct 24 2010, 04:05) Люб...   Oct 24 2010, 15:20
|- - rezident   Цитата(zuy @ Oct 24 2010, 21:20) Т.о. на ...   Oct 24 2010, 16:17
|- - 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 - 15:31
Рейтинг@Mail.ru


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