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

 
 
> STM32 - смена прошивки пользователем через USB
ArtDenis
сообщение Apr 26 2015, 16:17
Сообщение #1


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



Приветствую. Сейчас думаю над тем как пользователь будет обновлять прошивку у прибора. Пока что планируется просто воспользоваться встроенным загрузчиком, который умеет заливать прошивку через протокол USB DFU. Насколько это удачный подход? Что кроме этого используется для обновления прошивок у STM32?


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 30)
kovigor
сообщение Apr 26 2015, 20:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(ArtDenis @ Apr 26 2015, 19:17) *
Насколько это удачный подход? Что кроме этого используется для обновления прошивок у STM32?

Можно, например, реализовать Mass-Storage устройство и копировать в него новую прошивку в виде файла. Защита прошивки - посредством CRC32. Я так делал на ARM7.
Еще вариант - реализовать CDC и терминалкой по X-Modem'у передавать в МК новую прошивку. Этот вариант, ИМХО, наилучший. Если же у прибора есть COM - порт, то и USB CDC не нужен, просто используйте имеющийся порт ...
Go to the top of the page
 
+Quote Post
smalcom
сообщение Apr 27 2015, 03:40
Сообщение #3


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

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата
воспользоваться встроенным загрузчиком

инструкция с картинками и у пользователей не возникает сложностей по использованию как USB DFU так и обычного способа через FlashDemo
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Apr 27 2015, 08:32
Сообщение #4


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



kovigor, как-то это всё сложно для обычного пользователя. И com-порта у устройства нету. Как и у большинства современных компьютеров. Поэтому тема называется "смена прошивки пользователем через USB"

smalcom, инструкция с картинками? Я планирую высылать пользователю exe-шник, который будет устанавливать USB-драйвер для DFU-устройства, подключаться к устройству, переводить его в загрузчик и автоматически прошивать. Думаю, в противном случае пользователи просто взбунтуются ))


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 27 2015, 08:38
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



По-моему, если устраивает встроенный загрузчик, то стоит его и использовать - он во всяком случае никуда не денется.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Apr 27 2015, 10:46
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(ArtDenis @ Apr 27 2015, 04:32) *
kovigor, как-то это всё сложно для обычного пользователя. И com-порта у устройства нету. Как и у большинства современных компьютеров. Поэтому тема называется "смена прошивки пользователем через USB"

smalcom, инструкция с картинками? Я планирую высылать пользователю exe-шник, который будет устанавливать USB-драйвер для DFU-устройства, подключаться к устройству, переводить его в загрузчик и автоматически прошивать. Думаю, в противном случае пользователи просто взбунтуются ))


Что сложно? Скопировать присланный файл на диск?
2. Com-порта нет? Вы ничего про преобразователи/переходники FT232 например, не слышали?
Как по вашему, сейчас компьютеры подсоединяются к com портам?

Мне кажется, у вас ничего не получится.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Apr 27 2015, 11:44
Сообщение #7


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



A. Fig Lee, если пользователю, чтобы перепрошить устройство, нужно покупать переходник USB-COM, то что же в этом хорошего? И зачем это вообще нужно, есть уже есть USB. Да и тема называется "смена прошивки пользователем через USB". Мне интересно, что применяют именно для прошивки через USB максимально простым для пользователя способом.


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Apr 27 2015, 12:45
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(ArtDenis @ Apr 27 2015, 07:44) *
A. Fig Lee, если пользователю, чтобы перепрошить устройство, нужно покупать переходник USB-COM, то что же в этом хорошего? И зачем это вообще нужно, есть уже есть USB. Да и тема называется "смена прошивки пользователем через USB". Мне интересно, что применяют именно для прошивки через USB максимально простым для пользователя способом.


Да никто о покупать вообще речи не ведет. Как можно рассуждать о смене прошивки имея настолько мало знаний?
Причем в элементарнейшей области?
Даже тыкая вас в решение проблемы, вы его в упор не видите.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Apr 27 2015, 14:17
Сообщение #9


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



A. Fig Lee, т.е. прошивка пользователем приборе на STM32 через FT232 - это самый надёжный и проверенный метод, я так понимаю, с твоих слов? Или имеется ввиду другое решение проблемы?
Если я что-то не понимаю, ткни ещё раз носом biggrin.gif

Да, на всякий случай уточню. Имеется ввиду прошивка через встроенный в STM32 USB


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Apr 27 2015, 15:08
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(ArtDenis @ Apr 27 2015, 20:17) *
Да, на всякий случай уточню. Имеется ввиду прошивка через встроенный в STM32 USB

Да, это самый удобный способ, но не самый надежный за счет большей сложности загрузчика, и следовательно повышенной вероятности ошибки в нём.
В порядке убывания надежности и увеличения удобности:
- самый надежный через JTAG/SWD, но требует программатор/отладчик
- менее надежный через RS232-порт, но требует наличия на компьютере RS323-порта(или преобразователь USB-RS232 )
- еще менее надежный через USB, требует на компьютере USB-порт
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Apr 28 2015, 10:14
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(ArtDenis @ Apr 27 2015, 10:17) *
A. Fig Lee, т.е. прошивка пользователем приборе на STM32 через FT232 - это самый надёжный и проверенный метод, я так понимаю, с твоих слов? Или имеется ввиду другое решение проблемы?
Если я что-то не понимаю, ткни ещё раз носом biggrin.gif

Да, на всякий случай уточню. Имеется ввиду прошивка через встроенный в STM32 USB


1. Да. просто потому, что загрузчик РОМ уже там и никуда не денется. Но так ты хочешь УСБ, то это к тебе не относится.
2. Ладно, вот тебе азы по УСБ. УСБ бывает разных классов и твой микроконтроллер, хотя и соединен по УСБ, может прикинутся портом
RS232. Для этого тебе не надо ничего покупать кроме шнурка УСБ для подключения. Но он видать и так есть.
В общем имплементируй CDC класс USB на своем микроконтроллере. И делай бутлоадер.

Или имплементируй другой класс, масс сторадж, тогда при втыкании твоего дивайса появится харддрайв в виндоус, скопируешь туда файл и все.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Apr 28 2015, 10:34
Сообщение #12


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



Цитата(A. Fig Lee @ Apr 28 2015, 15:14) *
1. Да. просто потому, что загрузчик РОМ уже там и никуда не денется. Но так ты хочешь УСБ, то это к тебе не относится.

А можно поподробнее про выделенное? Может я чего-то не понимаю?


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Apr 28 2015, 10:41
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(ArtDenis @ Apr 28 2015, 06:34) *
А можно поподробнее про выделенное? Может я чего-то не понимаю?

Да, ошибся. Забыл за эти дни подробности о чем речь.
USB и собственный бутлоадер для пользователя удобней чем встроенный РОМ. Но встроенный надежней


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Apr 28 2015, 10:52
Сообщение #14


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



A. Fig Lee, вообще-то встроенный в ROM загрузчик умеет прекрасно прошивать как через UART, так и через "родной" USB по протоколу DFU

Сообщение отредактировал ArtDenis - Apr 28 2015, 10:54


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Apr 28 2015, 13:07
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(ArtDenis @ Apr 28 2015, 06:52) *
A. Fig Lee, вообще-то встроенный в ROM загрузчик умеет прекрасно прошивать как через UART, так и через "родной" USB по протоколу DFU


У всех STM32? И которые не connectivity line, STM32F103, например?

http://www.st.com/web/en/resource/technica.../CD00264379.pdf


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Apr 28 2015, 13:22
Сообщение #16


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(A. Fig Lee @ Apr 28 2015, 16:07) *
У всех STM32? И которые не connectivity line, STM32F103, например?

У топикстартера - может, о чём написано в первом же сообщении темы. Учитесь читать.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Apr 28 2015, 13:43
Сообщение #17


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



Цитата(A. Fig Lee @ Apr 28 2015, 18:07) *
У всех STM32? И которые не connectivity line, STM32F103, например?

Ну ёлки-палки. В первом же сообщении я написал, что собираюсь прошивать его через USB-DFU. Значит я выбрал такой МК, который его поддерживает.

Вопрос в другом. Какие ещё способы, существуют для прошивки через родной USB?

Тут мне посоветовали писать самому загрузчик. Этот вариант хорош тем, что можно передавать пользователю зашифрованную прошивку, а при передаче уже в самом устройстве расшифровывать и прошивать. Так можно защитится от того, чтобы китайцы не скопировали прошивку с такой же лёгкость как два пальца wink.gif Но меня этот аспект не особо волнует. Я не думаю, что мой девайс заинтересует китайцев. Да и писать самому загрузчик не охота.

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

Вот я и спрашиваю совета, как участники форума решают эту проблему. Может есть уже проверенный загрузчик, который можно задействовать в своём проекте?

Сообщение отредактировал ArtDenis - Apr 28 2015, 13:44


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Apr 28 2015, 14:32
Сообщение #18


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



USB mass storage это слишком сложно для пользователя, а COM порта нет. Так что других вариантов нет.


Цитата(esaulenka @ Apr 28 2015, 09:22) *
У топикстартера - может, о чём написано в первом же сообщении темы. Учитесь читать.


Ну вы тоже учитесь читать. У топик стартера семь пятниц на неделе, много чего сказано и все ему не подходит.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 28 2015, 14:36
Сообщение #19


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(ArtDenis @ Apr 28 2015, 18:43) *
С другой стороны, если загрузчик выглядит как съёмный диск, на который можно заливать прошивку, то это большой плюс, т.к. избавляет меня, как разработчика, от того, чтобы поставлять с прошивкой дрова для подключения к устройству для прошивки. И для пользователя процесс заливки прошивки очень наглядный.

У новых отладочных плат STM-NUCLEO такой способ прошивки. При его подключении в системе появляется съёмный диск, при записи на этот диск прошивки она заливается в целевой контроллер. Действительно, очень удобно.
Цитата(ArtDenis @ Apr 28 2015, 18:43) *
Но если прошивка пошла неудачно, то скорее всего у пользователя будет кирпич, который можно будет восстановить только при помощи заливки прошивки другими способами.

Вовсе нет. Загрузчик-то никуда не денется. Так что пользователь просто повторит попытку, и всё.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 28 2015, 14:36
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ArtDenis @ Apr 28 2015, 16:43) *
С другой стороны, если загрузчик выглядит как съёмный диск, на который можно заливать прошивку, то это большой плюс, т.к. избавляет меня, как разработчика, от того, чтобы поставлять с прошивкой дрова для подключения к устройству для прошивки. И для пользователя процесс заливки прошивки очень наглядный. Это плюс данного подхода. Но если прошивка пошла неудачно, то скорее всего у пользователя будет кирпич, который можно будет восстановить только при помощи заливки прошивки другими способами.

Тут есть еще может возникнуть проблема в совместимости эмулируемого диска. Скажем, у NXP есть такой загрузчик на LPC1343. Так вот, под Win он работает нормально, а под Linux'ом требуются некоторые телодвижения со стороны пользователя.

P.S. По мне, способ весьма неудобный. На LPC повсеместно отказался от него в пользу UART.
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Apr 28 2015, 14:40
Сообщение #21


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



Цитата(A. Fig Lee @ Apr 28 2015, 19:32) *
USB mass storage это слишком сложно для пользователя

Почему?


Цитата(AHTOXA @ Apr 28 2015, 19:36) *
У новых отладочных плат STM-NUCLEO такой способ прошивки. При его подключении в системе появляется съёмный диск, при записи на этот диск прошивки она заливается в целевой контроллер. Действительно, очень удобно.

А в NUCLEO съёмный диск разве эмулируется самим МК?

Цитата(AHTOXA @ Apr 28 2015, 19:36) *
Вовсе нет. Загрузчик-то никуда не денется. Так что пользователь просто повторит попытку, и всё.

Да. Но только если загрузчик сам себя не перезаписывает при прошивке. Хотя можно сделать так, чтобы не перезаписывал )

Сообщение отредактировал ArtDenis - Apr 28 2015, 14:41


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 28 2015, 14:55
Сообщение #22


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(ArtDenis @ Apr 28 2015, 19:40) *
А в NUCLEO съёмный диск разве эмулируется самим МК?

У NUCLEO загрузчик отдельный, да. Но сам принцип смены прошивки, имхо, удобный - никаких драйверов, никакого софта на ПК.
Недостатки, естественно, тоже имеются. В частности, такой загрузчик может отъесть приличный кусок FLASH-памяти контроллера.
Цитата(ArtDenis @ Apr 28 2015, 19:40) *
Да. Но только если загрузчик сам себя не перезаписывает при прошивке. Хотя можно сделать так, чтобы не перезаписывал )

Не можно, а нужно! sm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Apr 28 2015, 15:18
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(ArtDenis @ Apr 28 2015, 10:40) *
Почему?


see post #4 от ArtDenis.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Apr 28 2015, 15:22
Сообщение #24


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



Цитата(A. Fig Lee @ Apr 28 2015, 20:18) *
see post #4 от ArtDenis.

Я там писал про прошивку через COM-порт


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
kovigor
сообщение Apr 28 2015, 16:45
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(aaarrr @ Apr 28 2015, 17:36) *
Скажем, у NXP есть такой загрузчик на LPC1343. Так вот, под Win он работает нормально, а под Linux'ом требуются некоторые телодвижения со стороны пользователя.

Я все писал сам и лично проверял под Windows и под Linux. Все работало, как полагается. Кстати, как раз на LPC2148 ...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 28 2015, 17:28
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(kovigor @ Apr 28 2015, 19:45) *
Я все писал сам и лично проверял под Windows и под Linux. Все работало, как полагается. Кстати, как раз на LPC2148 ...

Ну, а у товарищей из NXP вот не вышло. Там есть еще один крайне неприятный баг, из-за которого устройство часто определяется с дикой задержкой. В общем, содержимое ROM LPC1343 разочаровывает в плане USB.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 29 2015, 08:02
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(aaarrr @ Apr 28 2015, 20:28) *
Ну, а у товарищей из NXP вот не вышло. Там есть еще один крайне неприятный баг, из-за которого устройство часто определяется с дикой задержкой. В общем, содержимое ROM LPC1343 разочаровывает в плане USB.

OFF
не могли бы обрисовать проблему? решил как раз заложиться на этот камень
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 29 2015, 08:12
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(toweroff @ Apr 29 2015, 11:02) *
OFF
не могли бы обрисовать проблему? решил как раз заложиться на этот камень

Проблема изложена в еррате: какая-то из переменных у них не обнуляется. Но это касается только встроенного загрузчика.

Если работать с USB напрямую, то все почти в порядке. Неприятных моментов два:
- Громоздкая "ручная" синхронизация при работе с регистрами USB
- Частоту ядра нельзя опускать ниже 24MHz
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 29 2015, 08:27
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(aaarrr @ Apr 29 2015, 11:12) *
Проблема изложена в еррате: какая-то из переменных у них не обнуляется. Но это касается только встроенного загрузчика.

Если работать с USB напрямую, то все почти в порядке. Неприятных моментов два:
- Громоздкая "ручная" синхронизация при работе с регистрами USB
- Частоту ядра нельзя опускать ниже 24MHz

спасибо, посмотрю еще раз на документы
минимальная частота в моем случае роли не играет - питание внешнее и некритичное к току
Go to the top of the page
 
+Quote Post
NikF
сообщение Apr 29 2015, 18:20
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 22-12-08
Из: Москва
Пользователь №: 42 670



Цитата(ArtDenis @ Apr 28 2015, 18:40) *
Да. Но только если загрузчик сам себя не перезаписывает при прошивке. Хотя можно сделать так, чтобы не перезаписывал )

А он (встроенный загрузчик) разве не защищен от записи/стирания?
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Apr 29 2015, 23:38
Сообщение #31


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(NikF @ Apr 29 2015, 14:20) *
А он (встроенный загрузчик) разве не защищен от записи/стирания?

Встроенный да. Он в ROM, его стереть нельзя.
Самодельный можно


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post

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

 


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


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