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

 
 
> sam256 remap, need example :(
SpiritDance
сообщение Apr 20 2007, 09:52
Сообщение #1


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Люди я чето непонимаю.
Итак цель - бутром записывающийся в конец флеш, для бутрома нужны прерывания, для того чтобы его собственная таблица векторов не затиралась приложением нужно также хранить ее в конце флеша, при старте переписывать в RAM и делать remap, при выходе из загрузчика делать remap обратно на флеш.

Так вот как это грамотно сделать в IARе?, кроссворксовский код
Код
    mov     r8, #0x00200000
    ldr     r9, =_vectors
    ldmia   r9!, {r0-r7}
    stmia   r8!, {r0-r7}
    ldmia   r9!, {r0-r6}
    stmia   r8!, {r0-r6}
    ldr     r0, =MC_RCR_RCB
    strb    r0, [r10, #MC_RCR_OFFSET]

просто так не проходит. RAMSTART в линкер-скрипте сделал 00200100- пофиг, без команды remap работает с ней беда, до main проц не доходит. Думаю причина в том, что remap как -то не вяжется с инитом компилера? причем посмотреть отладчиком что происходит тоже не очень удается.

Что такое
RSEG INTRAMSTART_REMAP
RSEG INTRAMEND_REMAP
в статртапе? недопонял.

может есть где проект под IAR с ремапом а?


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Waso
сообщение Nov 21 2007, 07:13
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 4-11-05
Пользователь №: 10 470



Есть несколько непоняток по скрещиванию программы с бутлоадером.
1. Если я ставлю линкеру например -DROMSTART=00008000 в программе, то размер выходного бинарника не меняется. Значит вначале файла идут вектора, а затем программа как и в обычном случае, но со смещенными переходами?
2. Если я хочу прошить в чистый кристалл сразу и прогу и бутлодер, то как быть с векторами программы? Получается, нужно самому в этом случае создавать табличку векторов перед началом кода программы чтобы все это вместе вело себя также как и после перепрошивки проги бутом.

Вобщем насчет реализации бута, ремапа и передачи управления от бута программе и наоборот я понял, а насчет первоначальной загрузки во флеш обоих и затем подготовки для отдельной загрузки чисто программы - неочень.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 21 2007, 11:54
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Waso @ Nov 21 2007, 09:13) *
1. Если я ставлю линкеру например -DROMSTART=00008000 в программе, то размер выходного бинарника не меняется. Значит вначале файла идут вектора, а затем программа как и в обычном случае, но со смещенными переходами?
Трудно сказать, не видя файла линкера. Зависит от того, как описан сегмент векторов - он либо линкуется в нулевые адреса ( -Z(CODE)INTVEC=00-3F ) либо начиная с ROMSTART (-Z(CODE)INTVEC=ROMSTART-ROMEND или подобное).
Цитата(Waso @ Nov 21 2007, 09:13) *
2. Если я хочу прошить в чистый кристалл сразу и прогу и бутлодер, то как быть с векторами программы? Получается, нужно самому в этом случае создавать табличку векторов перед началом кода программы чтобы все это вместе вело себя также как и после перепрошивки проги бутом.
Я опишу как делаю я. Насколько это правильно - со стороны, наверное, виднее. Я использую AES Loader и на мегах и на ARMах. У меня загрузчик и приложение - два отдельных проекта. Я прошиваю сначала загрузчик, потом приложение. В процессе этого заодно тестируется канал связи. Если мне надо прошивать все сразу программатором (пока нужно было только на мегах) - я прошиваю загрузчик без лок-битов, прошиваю загрузчиком приложение, убеждаюсь, что все работает, считываю программатором всю память, открываю полученный .hex текстовым редактором и удалаю все строки, содержащие одни 0xFF. Получаю прошивку для масового производства. В голове крутится еще такой вариант - если прошиваем .hex, то можно "склеить" два файла (загрузчика и приложения) текстовым редактором или утилитой вроде srecord. Если прошивка делается из ИАРа через JTAG, то наверняка можно склеить полученный файл загрузчика с приложением при помощи postlink (не пробовал, не подскажу).
Про вектора - они находятся в начале приложения, загрузчик их копирует в начало ОЗУ и делает ремап. Поскольку приложение - отдельный проект, то для него естественным образом получаются и таблица векторов, и инициализация памяти.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SpiritDance   sam256 remap   Apr 20 2007, 09:52
- - amw   Не совсем то, что спрашивается, поскольку делает r...   Apr 20 2007, 10:45
- - Сергей Борщ   Цитата(SpiritDance @ Apr 20 2007, 08:52) ...   Apr 20 2007, 10:55
- - SpiritDance   Да штука то в том что сам remap как раз и работает...   Apr 20 2007, 11:12
|- - Сергей Борщ   Цитата(SpiritDance @ Apr 20 2007, 10:12) ...   Apr 20 2007, 12:13
|- - SpiritDance   Цитата(Сергей Борщ @ Apr 20 2007, 13:13) ...   Apr 20 2007, 13:21
|- - Сергей Борщ   Цитата(SpiritDance @ Apr 20 2007, 12:21) ...   Apr 20 2007, 15:09
|- - SpiritDance   Цитата(Сергей Борщ @ Apr 20 2007, 16:09) ...   Apr 20 2007, 16:35
|- - Сергей Борщ   Цитата(SpiritDance @ Apr 20 2007, 15:35) ...   Apr 20 2007, 19:21
- - d__   А вот если так: Если программа должна работать из...   Apr 20 2007, 18:40
- - Waso   У меня основная программа закачивает обновление че...   Nov 23 2007, 08:38
|- - Сергей Борщ   Цитата(Waso @ Nov 23 2007, 10:38) но отла...   Nov 23 2007, 09:50
|- - Waso   Цитата(Сергей Борщ @ Nov 23 2007, 16:50) ...   Nov 23 2007, 10:01
|- - Сергей Борщ   Цитата(Waso @ Nov 23 2007, 12:01) Отлажив...   Nov 23 2007, 10:55
- - Waso   Однако подвисает симулятор при запуске. Но всеравн...   Nov 26 2007, 06:04


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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 21:36
Рейтинг@Mail.ru


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