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

 
 
> Вопросы по созданию своего загрузчика для LPC17xx
Altemir
сообщение Sep 3 2011, 21:42
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686



Всем доброго времени суток.
Адаптирую загрузчик с LPC2xxx на LPC176x. Копался в мануалах, столкнулся с тем, что у кортекса таблица векторов прерываний гораздо больше, чем у arm7. Как я понял, она может занимать максимум 1КБ против 64 байт у arm7. Для предыдущих проектов использовалась программа шифрования прошивки, которая знала расположение спецтаблицы, находящейся по определённому адресу сразу следом за таблицей векторов. Получается, теперь необходимо или ремапить таблицу векторов в кортексе для сохранения совместимости с софтом верхнего уровня, либо переписывать этот софт? Можно ли занимать адреса, скажем, 0x40...0x100 объявлением массива через __root const? И ещё, в каком документе от ARM описан участок памяти 0x0000 - 0x0400? В DDI0337H_cortex_m3_r2p0_trm.pdf нет. Просто code и всё. Кто может подсказать, что и где там обычно расположено? Компилятор - IAR.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
gladov
сообщение Sep 5 2011, 04:10
Сообщение #2


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

Группа: Свой
Сообщений: 169
Регистрация: 10-11-05
Из: Воронеж
Пользователь №: 10 687



Цитата(Altemir @ Sep 4 2011, 01:42) *
Всем доброго времени суток.
Адаптирую загрузчик с LPC2xxx на LPC176x. Копался в мануалах, столкнулся с тем, что у кортекса таблица векторов прерываний гораздо больше, чем у arm7. Как я понял, она может занимать максимум 1КБ против 64 байт у arm7. Для предыдущих проектов использовалась программа шифрования прошивки, которая знала расположение спецтаблицы, находящейся по определённому адресу сразу следом за таблицей векторов. Получается, теперь необходимо или ремапить таблицу векторов в кортексе для сохранения совместимости с софтом верхнего уровня, либо переписывать этот софт? Можно ли занимать адреса, скажем, 0x40...0x100 объявлением массива через __root const? И ещё, в каком документе от ARM описан участок памяти 0x0000 - 0x0400? В DDI0337H_cortex_m3_r2p0_trm.pdf нет. Просто code и всё. Кто может подсказать, что и где там обычно расположено? Компилятор - IAR.


Да, придется спецтаблицу передвинуть за таблицу векторов. Но проблемы не вижу, т.к. со сменой ядра Вам обязательно пересобирать как загрузчик, так и основной софт. Вот и сдвиньте все дальше. Адреса 0х40 и выше конечно можно использовать как угодно (и объявлять тоже), но только есть ли гарантия, что не произойдет прерывания, адрес вектора которого попадет на ваши личные данные?
Описание на области памяти ищите в DS на контроллер. Cortex-M3 стандартизует лишь область векторов прерываний, да и то не строго, а остальное, как правило, отдано под пользовательский код.
Go to the top of the page
 
+Quote Post
Altemir
сообщение Sep 5 2011, 05:09
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686



Цитата(gladov @ Sep 5 2011, 08:10) *
Да, придется спецтаблицу передвинуть за таблицу векторов...

Да, к этому и пришёл. Спасибо. Думаю, в моём случае сдвинуть на 1КБ - не проблема.

Цитата
Описание на области памяти ищите в DS на контроллер. Cortex-M3 стандартизует лишь область векторов прерываний, да и то не строго, а остальное, как правило, отдано под пользовательский код.

Если б NXP где-то явно это описала... В UM10360.pdf Rev. 2 — 19 August 2010 только на стр. 19 общая карта памяти sad.gif Похоже, дизасмить придётся. А такой вопрос - где обычно после IARа находится стартовый вектор? Т.е., по какому адресу вызывать свою программу из загрузчика, если в *.icf файле я определяю:
Код
define symbol __ICFEDIT_region_ROM_start__ = 0x00008000;
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Altemir   Вопросы по созданию своего загрузчика для LPC17xx   Sep 3 2011, 21:42
|- - gladov   Цитата(Altemir @ Sep 5 2011, 09:09) Да, к...   Sep 5 2011, 05:22
- - Altemir   Попробовал сделать ремап векторов прерываний. Не з...   Sep 5 2011, 09:38
- - Altemir   И ещё. Почему при указании в *.icf файле строки, н...   Sep 5 2011, 11:38
|- - gladov   Цитата(Altemir @ Sep 5 2011, 15:38) P.P.S...   Sep 6 2011, 03:58
|- - Altemir   Цитата(gladov @ Sep 6 2011, 07:58) А можн...   Sep 6 2011, 04:59
- - Alechek   От сабя скажу следующее: Я тоже вначале был немног...   Sep 6 2011, 07:00
|- - Altemir   Цитата(Alechek @ Sep 6 2011, 11:00) В ито...   Sep 6 2011, 09:53
- - KRS   Я для IAR такой код перехода в программу поставил ...   Sep 6 2011, 14:34
|- - Altemir   Цитата(KRS @ Sep 6 2011, 18:34) Я для IAR...   Sep 7 2011, 04:52
|- - KRS   Цитата(Altemir @ Sep 7 2011, 08:52) Не по...   Sep 7 2011, 10:34
- - Altemir   KRS Отлично! Ещё раз - благодарю.   Sep 7 2011, 11:18
|- - Vitaliy_ARM   Пишу спец загрузчик и как раз столкнулся с тем, чт...   Sep 16 2011, 12:22
|- - KRS   Цитата(Vitaliy_ARM @ Sep 16 2011, 16:22) ...   Sep 16 2011, 13:10
|- - Alechek   Цитата(KRS @ Sep 16 2011, 19:10) но принц...   Sep 19 2011, 04:50
|- - KRS   Цитата(Alechek @ Sep 19 2011, 08:50) Глав...   Sep 19 2011, 20:39
- - Alechek   Область то тоже должна быть выровнена, причем байт...   Sep 20 2011, 06:12


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

 


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


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