Цитата(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 несложный, то лучше реализовать его в своём ПО, тем более что оно всё равно есть.