Перейти к содержанию
    

STM32 - смена прошивки пользователем через USB

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

 

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

 

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

 

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

Изменено пользователем ArtDenis

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

У новых отладочных плат STM-NUCLEO такой способ прошивки. При его подключении в системе появляется съёмный диск, при записи на этот диск прошивки она заливается в целевой контроллер. Действительно, очень удобно.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

P.S. По мне, способ весьма неудобный. На LPC повсеместно отказался от него в пользу UART.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

USB mass storage это слишком сложно для пользователя

Почему?

 

 

У новых отладочных плат STM-NUCLEO такой способ прошивки. При его подключении в системе появляется съёмный диск, при записи на этот диск прошивки она заливается в целевой контроллер. Действительно, очень удобно.

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

 

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

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

Изменено пользователем ArtDenis

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

У NUCLEO загрузчик отдельный, да. Но сам принцип смены прошивки, имхо, удобный - никаких драйверов, никакого софта на ПК.

Недостатки, естественно, тоже имеются. В частности, такой загрузчик может отъесть приличный кусок FLASH-памяти контроллера.

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

Не можно, а нужно! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Я все писал сам и лично проверял под Windows и под Linux. Все работало, как полагается. Кстати, как раз на LPC2148 ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я все писал сам и лично проверял под Windows и под Linux. Все работало, как полагается. Кстати, как раз на LPC2148 ...

Ну, а у товарищей из NXP вот не вышло. Там есть еще один крайне неприятный баг, из-за которого устройство часто определяется с дикой задержкой. В общем, содержимое ROM LPC1343 разочаровывает в плане USB.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, а у товарищей из NXP вот не вышло. Там есть еще один крайне неприятный баг, из-за которого устройство часто определяется с дикой задержкой. В общем, содержимое ROM LPC1343 разочаровывает в плане USB.

OFF

не могли бы обрисовать проблему? решил как раз заложиться на этот камень

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

OFF

не могли бы обрисовать проблему? решил как раз заложиться на этот камень

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

 

Если работать с USB напрямую, то все почти в порядке. Неприятных моментов два:

- Громоздкая "ручная" синхронизация при работе с регистрами USB

- Частоту ядра нельзя опускать ниже 24MHz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Если работать с USB напрямую, то все почти в порядке. Неприятных моментов два:

- Громоздкая "ручная" синхронизация при работе с регистрами USB

- Частоту ядра нельзя опускать ниже 24MHz

спасибо, посмотрю еще раз на документы

минимальная частота в моем случае роли не играет - питание внешнее и некритичное к току

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А он (встроенный загрузчик) разве не защищен от записи/стирания?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...