|
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 24 2010, 15:20
|

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

|
Цитата(rezident @ Oct 24 2010, 04:05)  Любопытство победило  Со второй попытки создал в Keil работоспособный проект с исходником из сообщения #11. Не мудрствуя лукаво, вывел в окно watch значение регистра SYSMEMREMAP. Изменяя его значение с 0x02 на 0x01, наблюдаю, что содержимое памяти меняется. Вместо кода исполняемой из Flash программы появляются значения 0x00000000 вплоть до границы адреса 0x00000 200. То бишь подтверждается версия о маппировании всего сегмента Flash размером 512 байт. Как этот глюк обходится в IAR, мне пока непонятно.  Тестовый проект (для Keil 4.12) прикладываю. Да, похоже в ИАР это дело автоматически обходится. В общем понятно что произошло. В Rev 0_0 мануала, они ошибочно указали размер таблицы векторов в 0х200 байт и тогда в описании регистра SYSMEMREMAP написали, что он ремапит таблицу векторов. И все вроде сходилось. Но потом видимо заметили косяк, что таблица то длиной 0хС0 байт и исправили это дело, а в описании регистра SYSMEMREMAP забыли указать, что он теперь ремапит не таблицу векторов, но область 0х200. Т.о. на данный момент в последней версии мануала мы имеем некорректное описание регистра SYSMEMREMAP. Нигде по мануалу не написано, что он ремапит 0х200 байт. А зачем мне надо настройки ROM ставить с 0-го адреса. Так я считаю, что это не мое дело раскладывать программу по адресам памяти. Я линкеру указываю только где находятся области куда он может результат ложить, пусть сам и складывает. Мне то зачем над этим думать.
|
|
|
|
|
Oct 24 2010, 16:17
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(zuy @ Oct 24 2010, 21:20)  Т.о. на данный момент в последней версии мануала мы имеем некорректное описание регистра SYSMEMREMAP. Нигде по мануалу не написано, что он ремапит 0х200 байт. Угу. В NXP-ной документации косяков немало  Цитата(zuy @ Oct 24 2010, 21:20)  А зачем мне надо настройки ROM ставить с 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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|