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

 
 
> Копирование в ОЗУ цикла записи во FLASH, Помогите пожалуйста реализовать
Desperanto
сообщение Feb 17 2011, 06:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 23-01-11
Пользователь №: 62 426



Помогите пожалуйста реализовать. Работать стал недавно, опыта мало. Суть такова: по UART надо залить прошивку по-битно. Я пересылаю по биту прошивки через UART и записываю во FLASH, предварительно стерев ее. Что бы это реализовать, мой цикл записи должен находиться в ОЗУ, иначе я вешаю контроллер. Если нужен исходник программы, приложу попозже. Такой способ записи выбран из-за довольно большой прошивки и FLASH и маленькой ОЗУ. А если еще сможете помочь реализовать верификацию прошивки после заливки, то буду очень признателен! sm.gif
ЗЫ: целевой контроллер MSP430F1611, но тест проводится на 149ом.
ЗЫ2: использую IAR 4.20 и язык С++.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Feb 17 2011, 08:38
Сообщение #2


Гуру
******

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



QUOTE (Desperanto @ Feb 17 2011, 08:38) *
Такой способ записи выбран из-за довольно большой прошивки и FLASH и маленькой ОЗУ.
Связь двухстороняя? Посылающая сторона может послать один блок (содержимое одного сектора) и замолчать в ожидании подтверждения от устройства?

QUOTE (Desperanto @ Feb 17 2011, 08:38) *
А если еще сможете помочь реализовать верификацию прошивки после заливки, то буду очень признателен! sm.gif
Я вам распишу как сделано у меня, возможно такой вариант вам подойдет:
1) При старте загрузчик получает управление.
2) Он проверяет - не было ли это передачей управления из приложения
3) Если это был вызов из приложения - переход на шаг 9
4) В противном случае он проверяет ногу принудительного запуска загрузки, если нога активирована - переход к шагу 7
5) Загрузчик считает контрольную сумму приложения.
6) Если сумма совпала - значит приложение на месте, прописано полностью и без ошибок. Загрузчик копирует вектора прерываний приложения в ОЗУ и передает управление на вектор сброса в этой таблице.
Если сумма не совпала, значит приложения нет.
7) Загрузчик ожидает по интерфейсу команды начала заливки.
8) Загрузчик получает эту команду.
9) Загрузчик отвечает "Я стартовал, к загрузке готов".
10) Запускается собака.
11) Загрузчик ожидает пакет с содержимым очередной страницы
12) Получив пакет он записывает страницу
13) Записав страницу он сбрасывает собаку и посылает ответ "пакет обработан, готов"
14) переход на шаг 11

Если это был последниу пакет - в процессе ожидания на шаге 11 сработает собака, проц попадает в состояние 1.
После этого начнется выполнение с самого начала, загрузчик проверит контрольную сумму приложения и если обновление удалось - запустит приложение.

Приложение штатно общается с внешним миром по какому-то протоколу, одна из команд которого - начать обновление. Получив эту команду приложение запрещает прерывания и передает управление на вектор сброса процессора. Запускается загрузчик и уже он посылает подтверждение на эту команду. Эта же команда - единственная, которую поддерживает сам загрузчик (на самом деле у меня загрузчик поддерживает еще одну команду - сообщить о версии софта. Он отвечает версию 0, что означает "голый загрузчик, приложения нет". Приложение же в ответ на эту команду сообщает свою версию).

для проверки на шаге 2 использую бит направления какой-либо из ног, при штатной работе используемой на вывод. После сброса все ноги настроены на ввод, приложение настраивает ее на вывод. Значит если нога настроена на вывод - надо переходить на шаг 9.

Да, и при этом в ОЗУ нет ни одной функции.


--------------------
На любой вопрос даю любой ответ
"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

Сообщений в этой теме
- Desperanto   Копирование в ОЗУ цикла записи во FLASH   Feb 17 2011, 06:38
- - ih_   Цитата(Desperanto @ Feb 17 2011, 09:38) П...   Feb 17 2011, 06:58
- - Desperanto   поиском пользовался, правда через гугл, по ссылкам...   Feb 17 2011, 07:51
|- - MrYuran   Цитата(Desperanto @ Feb 17 2011, 10:51) а...   Feb 17 2011, 07:59
- - Desperanto   готов даже высказать материальное спасибо за помощ...   Feb 17 2011, 08:14
|- - MrYuran   Цитата(Сергей Борщ @ Feb 17 2011, 11:38) ...   Feb 17 2011, 10:10
- - Desperanto   Сергей Борщ, связь дусторонняя, отправить могу хот...   Feb 17 2011, 10:01
|- - Сергей Борщ   QUOTE (Desperanto @ Feb 17 2011, 11:44) а...   Feb 17 2011, 10:14
- - Desperanto   Сергей Борщ ну так вернемся к сути первых моих соо...   Feb 17 2011, 10:30
- - Сергей Борщ   QUOTE (MrYuran @ Feb 17 2011, 12:10) Серг...   Feb 17 2011, 11:01
- - Desperanto   Сергей Борщ передавать в ti txt потому что так хоч...   Feb 17 2011, 11:26
|- - MrYuran   Цитата(Desperanto @ Feb 17 2011, 14:26) С...   Feb 17 2011, 11:36
|- - Сергей Борщ   QUOTE (Desperanto @ Feb 17 2011, 13:26) С...   Feb 17 2011, 11:39
- - Desperanto   Сергей Борщ, MrYuran, хм...а слона то я и не замет...   Feb 17 2011, 12:10
- - rezident   Замечание вдогонку остальным советам. MSP430 може...   Feb 17 2011, 13:11
|- - MrYuran   Цитата(rezident @ Feb 17 2011, 16:11) Коп...   Feb 17 2011, 13:17
|- - rezident   Цитата(MrYuran @ Feb 17 2011, 18:17) Разн...   Feb 17 2011, 13:45
- - jorikdima   Цитата(Desperanto @ Feb 17 2011, 09:38) П...   Feb 17 2011, 20:54
- - Desperanto   jorikdima скинул   Feb 18 2011, 08:35
- - Desperanto   jorikdima личку то получили? а то не могу посмотре...   Feb 18 2011, 10:02
|- - Desperanto   друзья, подниму тему а кто чем пользуется для раб...   Mar 25 2011, 06:20
- - Ave   Как можно программно запустить BSL для MSP430.   Jul 15 2011, 09:18
- - rezident   Цитата(Ave @ Jul 15 2011, 14:18) Как можн...   Jul 15 2011, 14:22


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

 


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


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