|
LPC11xx не стартует код из своего бутлоадера |
|
|
|
Oct 21 2010, 10:42
|

Частый гость
 
Группа: Свой
Сообщений: 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); } В результате поведение непредсказуемое. то висит, то попадает куда-то в середину бутлоадера. Если убрать ремап, то целевая прога запускается, но естественно с векторами из флеша. Что я забываю в этой схеме?
|
|
|
|
|
 |
Ответов
|
Oct 21 2010, 12:58
|

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

|
Reset - это место откуда программа стартует. Как бы по сигналу сброса. Как бы независимо. Но в реальности по сигналу сброса проц идет на собственный загрузчик и передает управление программе после ремапа. И тут якобы она стартует с 0. Делает вид,что после сброса как бы. Разумеется, можно написать даже процедуру, которая будет располагаться с 0. Токо следущими идут вектора прерываний. И если прерывания не используются - да ради бога. Можно. Против кортекса не попрешь. Извиняюсь. Но логика все равно остается. Не забывать прерывания убить. Ну и правильно джамп сделать. С переключением в режим супервизора. Я делаю Код void JMP(unsigned int addr) { //asm ("mov r0, addr \n"); asm ("SWI 0 \n"); } Вот так примерно. В том плане, что я стартую с нуля всегда после ремапа. Ибо так универсальнее, разумеется. (У меня все остальное - типа переключателя задач работает в супервизоре - выбрал за красивое название) НУ, еще контроллр внешней памяти не забыть настроить... У меня-то вектора в локальной памяти...
Сообщение отредактировал DpInRock - Oct 21 2010, 13:05
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Oct 21 2010, 13:01
|

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

|
Цитата(DpInRock @ Oct 21 2010, 15:54)  Reset - это место откуда программа стартует. Как бы по сигналу сброса. Как бы независимо. Но в реальности по сигналу сброса проц идет на собственный загрузчик и передает управление программе после ремапа. И тут якобы она стартует с 0. Делает вид,что после сброса как бы. Да, это понятно. Мой бут делает в общем тоже самое, что и встроенный, только ремапит вектора не из флеша, а из ОЗУ. Вроде нашел косяк. Забыл прерывания отключить до ремапа! Тогда еще вопрос. А барьеры синхронизации или памяти нужно после ремапа ставить или нет?
|
|
|
|
Сообщений в этой теме
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  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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|