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

 
 
> DFU для NXP., LPC43xx
jcxz
сообщение Jul 21 2016, 04:44
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Нужно описание протокола DFU (Device Firmware Upgrade) для LPC43xx по USB. Хочется встроить возможность обновления прошивки в своё ПО на PC.
Нашёл только какие-то обрывки в реф.мануале и общую схему в AN4370.
Интересует алгоритм загрузки образа прошивки и алгоритм парсинга загруженного образа. И формат его.
Если у кого есть инфа - напишите пожалуйста.
Спасибо заранее!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kabdim
сообщение Jul 21 2016, 07:47
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Протокол DFU общий - http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf , алгоритмы там. Парсинга нет, файл состоит из прошивки в чистом виде, а затем суффикс с crc, vid, pid, etc. - довольно бесполезно как на мой взгляд. Реализация в исходниках от NXP на диске есть, откуда брал уже не вспомню, кстати довольна кривая. В lpcopen_2_12_lpcxpresso_nxp_lpclink2_4370 есть пример с использование USBROM.
Имхо овчинка не стоит выделки. Для того что бы стандартными средствами загонять в режим DFU придется городить композитное устройство, а потом объяснять "блондинкам" почему оно композитное. Драйвер для DFU придется всё равно ставить. Причем NXPшная реалзация DFU и опен-сорсные прошивальщики не очень-то дружат. Если вдруг понадобится двухсторонний обмен (запрос-ответ), то придется его делать немного через 1 место.
Если бы выбор протокола обновления делался бы сейчас я бы выбрал что-то другое.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 21 2016, 08:25
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Kabdim @ Jul 21 2016, 13:47) *
Протокол DFU общий - http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf , алгоритмы там. Парсинга нет, файл состоит из прошивки в чистом виде, а затем суффикс с crc, vid, pid, etc. - довольно бесполезно как на мой взгляд.

Спасибо! Буду изучать.
Если верить Application Note AN4370 из раздела документации LPC4370, то (как я понимаю из приведённой там диаграммы "USB DFU bootloader sequence") после загрузки образа прошивки там указана фаза "Parse buffer", после которой следующая фаза - запись во флешь. Возможно они под этим понимали просто проверку CRC или формата прошивки.
Загруженный образ прошивки как я понимаю - один-в-один пишется во флешь?

Цитата(Kabdim @ Jul 21 2016, 13:47) *
Реализация в исходниках от NXP на диске есть, откуда брал уже не вспомню, кстати довольна кривая. В lpcopen_2_12_lpcxpresso_nxp_lpclink2_4370 есть пример с использование USBROM.

У меня в устройстве я использую свой стек, а не из USBROM. Описание этих вызовов USBROM для DFU я видел.

Цитата(Kabdim @ Jul 21 2016, 13:47) *
Имхо овчинка не стоит выделки. Для того что бы стандартными средствами загонять в режим DFU придется городить композитное устройство, а потом объяснять "блондинкам" почему оно композитное. Драйвер для DFU придется всё равно ставить. Причем NXPшная реалзация DFU и опен-сорсные прошивальщики не очень-то дружат.

Мне не обязательно поднимать DFU на своём стеке в своём встроенном ПО.
Я весь процесс вижу так:
1. Если устройство только изготовлено (FLASH чистая) или прошивка во FLASH неработоспособна, то BOOT-джампером переключаем его в режим DFU. Моё ПО на PC через драйвер CyUSB видит его и работает с ним (прошивает, проверяет прошивку и т.п.) посредством протокола DFU.
2. Если устройство уже имеет исправную прошивку, то BOOT-джампером (дефолтное положение) переводим его в режим исполнения кода из FLASH. Запускается мой стек в устройстве. Моё ПО на PC видит его через CyUSB и работает с устройством по моему протоколу. В своём протоколе я реализую подкласс API для обновления прошивки. Хотя была мысль: сэмулировать DFU в своём протоколе. Но раз там так сложно, то наверное не надо.

Просто сейчас, для заливки прошивки в чистое устройство, приходится пользоваться сторонним ПО, которое неудобное и малофункциональное (или JTAG-ом). Если протокол DFU несложный, то лучше реализовать его в своём ПО, тем более что оно всё равно есть.
Go to the top of the page
 
+Quote Post



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

 


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


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