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

 
 
> 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
Ответов
Сергей Борщ
сообщение Apr 20 2007, 10:55
Сообщение #2


Гуру
******

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



Цитата(SpiritDance @ Apr 20 2007, 08:52) *
Итак цель - бутром записывающийся в конец флеш, для бутрома нужны прерывания, для того чтобы его собственная таблица векторов не затиралась приложением нужно также хранить ее в конце флеша, при старте переписывать в RAM и делать remap, при выходе из загрузчика делать remap обратно на флеш.
Системная ошибка. Загрузчик вместе со своими векторами живет в начале ФЛЕША, а пользовательское приложение работает в ремапе. Этим мы гарантируем, что при любом слете в процессе перезаписи проц будет в состоянии стартануть и попасть хотя бы в загрузчик.
Цитата(SpiritDance @ Apr 20 2007, 08:52) *
Так вот как это грамотно сделать в IARе? может есть где проект под IAR с ремапом а?
Вот рыба. проект состоит из двух - загрузчика и приложения.
Действия загрузчика -
1) инициализация ноги PIO принудительного старта загрузчика и PLL.
2) проверка был ли это старт из приложения, если да - запуск собственно загрузчика.
3) проверка был ли сигнал принудительного старта, если да - запуск собственно загрузчика.
4) проверка КС приложения. Если не совпала - запуск загрузчика.
4a) Если совпала - копирование векторов приложения в ОЗУ, ремап, переход на вектор сброса (старт приложения).
---- действия 1-4 происходят в __low_level_init() ----
5) собственно загрузчик. Сброс периферии, проверка был ли это вызов из приложения, если нет - ждать команду начала прошивки. Если из периферии - пропустить ожидание команды, команда была получена приложением.
6) собственно прошивка - допишите во вкусу
7) рестарт. После рестарта снова попадем в загрузчик, он проверит КС и т.д.


Для приложения даю файл линкера. Единственное, что требуется от приложения - не трогать ремап.
В остальном-обычная программа, правда слинкованная в новые адреса. Там же пример старта загрузчика по получению команды апдейта прошивки.

В общем несколько сумбурно, но работает. Выдрал из проекта, если что - спрашивайте. Будет интерес - сделаю законченный проект -шаблон, но не сегодня.
Прикрепленные файлы
Прикрепленный файл  Boot_fish.zip ( 35.46 килобайт ) Кол-во скачиваний: 145
 


--------------------
На любой вопрос даю любой ответ
"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   Да штука то в том что сам 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 21 2007, 07:13
|- - Сергей Борщ   Цитата(Waso @ Nov 21 2007, 09:13) 1. Если...   Nov 21 2007, 11:54
- - 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 Текстовая версия Сейчас: 26th July 2025 - 23:22
Рейтинг@Mail.ru


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