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

 
 
 
Reply to this topicStart new topic
> Bootloader и радиоканал ->
Буратино
сообщение Jun 4 2011, 12:14
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



Есть вот такая конфигурация: ПК, который по УСБ подключен к микросхеме моста USB-UART, далее процессор AVR (назовем его "X1"), к которому по шине SPI подключен трансивер CC1101 ("Х2"). На расстоянии 100 метров есть другой процессор AVR ("Y1") к которому подключен по SPI трансивер ("Y2").
Как с компьютера обновить прошивку на процессоре "Y1"?


PC -> USB-UART -> X1 ->X2 ............................................... Y2 -> Y1

Трансиверы работают в пакетном режиме, время от времени выпадают (принимаются с ошибкой) пакеты. приходится на уровне протокола "просить" их передать повторно. То есть канал "рваный"..
Спасибо!


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
V_G
сообщение Jun 4 2011, 13:21
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Заливать прошивку в буферную память (ОЗУ), подключенную к Y1. Когда всю залили, проверить целостность данных и инициировать перенос из ОЗУ в память программ проца.
Придется потратиться на внешнее ОЗУ. Можно, конечно, заливать в свободную память программ Y1, но мне такой способ не нравится. Если нет ОЗУ с SPI, можно заливать во флэш с SPI

Сообщение отредактировал V_G - Jun 4 2011, 13:22
Go to the top of the page
 
+Quote Post
Буратино
сообщение Jun 4 2011, 14:54
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



Цитата(V_G @ Jun 4 2011, 16:21) *
Заливать прошивку в буферную память (ОЗУ), подключенную к Y1. Когда всю залили, проверить целостность данных и инициировать перенос из ОЗУ в память программ проца.
Придется потратиться на внешнее ОЗУ. Можно, конечно, заливать в свободную память программ Y1, но мне такой способ не нравится. Если нет ОЗУ с SPI, можно заливать во флэш с SPI


Такой процесс должен будет апдейтить прошивку в двух группах устройств: одна группа состоит из сотен однотипных устройств, где важна стоимость каждой детали, а другая это группа где можно хоть и два процессора поставить это не поменяет картину, так как это прибор в комплекте один. Другими словами желательно конечно с минимальными мат. затратами все это реализовать.


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
V_G
сообщение Jun 4 2011, 23:38
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



За сервис надо платить. Либо вы берете процессор с бОльшим объемом памяти, чтобы в нем накапливать принятые программные блоки, либо организуете эту память снаружи.

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

Если же вы начали накопление новой прошивки не в основной программной памяти (по первым двум вариантам), и произошел крах системы связи, вы вполне можете (по таймауту) вернуться к выполнению всех функций на старой прошивке. Или вообще продолжать выполнение основных функций во время накопления новой прошивки. Т.е. в этом (более дорогом) варианте имеете более надежно функционирующую систему. Выбирайте.
Go to the top of the page
 
+Quote Post
skripach
сообщение Jun 5 2011, 11:12
Сообщение #5


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
Заливать прошивку в буферную память (ОЗУ)

Тогда уж в ПЗУ, но лучше чтобы у Y загрузчик поддерживал радио интерфейс.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
Sergey_Aleksandr...
сообщение Jun 15 2011, 14:18
Сообщение #6


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

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



У AVR объём ПЗУ и ОЗУ очень сильно отличается, поэтому в оличие от каких-нибудь ARM невозможно положить принятую прошивку в буфер внутренней SRAM целиком, проверить её целостность и потом зашить во Flash. Тут либо как сказали выше ставить внешнюю память, либо пойти по другому пути. Например как я делал с обновлением прошивки через Wiznet W5100 (который по SPI к контроллеру прицеплен). Принимаемые данные пишутся напрямую во флэш (я их бил на пакеты равные объёму страницы памяти). Проверку целостности пакетов и потери пакетов при этом не проводил. На управляющей стороне по завершению прошивки ПО генерировала пакет "активация прошивки", сопровождаемый CRC всей области памяти приложений. Контроллер этот пакет принимал, считал CRC памяти, сверял с полученной и в случае удачи отсылал ответ "Всё ОК, перепрошивка удалась". Если CRC не совпадали, отсылал ответ "Прошивка повреждена, требуется повторная перепрошивка".
Плюсы: не надо дополнительных корпусов под буфера; можно шить сразу несколько устройств разом.
Минус: Область бутлодера крайне мала, а в неё надо втиснуть загрузчик, софт обслуживания канала данных, калькулятор CRC. Я свой Wiznet в Mega328 только на максимальном уровне оптимизации по объёму смог впихнуть.
Go to the top of the page
 
+Quote Post

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

 


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


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