STM32 новичку в ARM что к чему
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: STM32 новичку в ARM что к чему
Здравствуйте. Нужно оценочное мнение. Хочу в девайс добавить функционал удаленного обновления прошивки. Т-е физического доступа к самому устройству не предполагается. Все что имеется - линия 485 для связи с внешним миром.
Возможно ли из основной программы перенаправить выполнение во встроенный бутлоадер? Но даже если это возможно, то возможен вариант сбоя при передаче прошивки, и тогда новая прошивка не стартанет, и снова передать контроль бутлоадеру некому.
Я видел подход, когда возле МК ставится флешка. В таком случае новая прошивка льется туда, потом сверяются контрольные суммы и если все ок - МК перешивает сам себя.
Может у кого есть такой опыт? Подскажите правильное направление.
Возможно ли из основной программы перенаправить выполнение во встроенный бутлоадер? Но даже если это возможно, то возможен вариант сбоя при передаче прошивки, и тогда новая прошивка не стартанет, и снова передать контроль бутлоадеру некому.
Я видел подход, когда возле МК ставится флешка. В таком случае новая прошивка льется туда, потом сверяются контрольные суммы и если все ок - МК перешивает сам себя.
Может у кого есть такой опыт? Подскажите правильное направление.
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
по-моему, единственно приемлемое решение. тем более что абсолютно все "настоящие" перепрошиваемые устройства так работают - хоть тот же роутер возьмите, хоть мобильник.Ярослав555 писал(а):ставится флешка. В таком случае новая прошивка льется туда, потом сверяются контрольные суммы и если все ок - МК перешивает сам себя.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: STM32 новичку в ARM что к чему
У STM32 нет определённых областей а-ля BOOT в AVR. Можно переходить куда угодно.Возможно ли из основной программы перенаправить выполнение во встроенный бутлоадер?
Не просто возможно, а будет очень часто.Но даже если это возможно, то возможен вариант сбоя при передаче прошивки, и тогда новая прошивка не стартанет, и снова передать контроль бутлоадеру некому.
Да - это хороший пример. Но если нет возможности добавить флешку и МК достаточно объёмный, то можно разделить адресное пространство внутренней памяти программ на три части: 1 - загрузчик, 2 - основная программа, 3 - сохранённая программа. Загрузчик качает программу и сохраняет её в область 3, проверяет, а затем копирует в область 2.Я видел подход, когда возле МК ставится флешка.
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: STM32 новичку в ARM что к чему
[uquote="smalcom",url="/forum/viewtopic.php?p=3697467#p3697467"]Да - это хороший пример. Но если нет возможности добавить флешку и МК достаточно объёмный, то можно разделить адресное пространство внутренней памяти программ на три части: 1 - загрузчик, 2 - основная программа, 3 - сохранённая программа. Загрузчик качает программу и сохраняет её в область 3, проверяет, а затем копирует в область 2.[/uquote]
Да нет, есть возможность. Камешек 070й, на 128 кБ. Обычные флешки копейки стоят. Здесь FRAM не нужен
Просто по кодозатратам больше и дольше, потому как опыт новый. Спасибо за ответы, видимо так и сделаю.
Да нет, есть возможность. Камешек 070й, на 128 кБ. Обычные флешки копейки стоят. Здесь FRAM не нужен
Re: STM32 новичку в ARM что к чему
[uquote="Ярослав555",url="/forum/viewtopic.php?p=3697289#p3697289"]Я видел подход, когда возле МК ставится флешка. В таком случае новая прошивка льется туда, потом сверяются контрольные суммы и если все ок - МК перешивает сам себя.[/uquote]
Так и следует делать. Иногда можно обойтись без внешней флешки - использовать в этом качестве половину флешь программ МК (но это менее удобно).
Добавлено after 2 minutes 54 seconds:
[uquote="smalcom",url="/forum/viewtopic.php?p=3697467#p3697467"]Да - это хороший пример. Но если нет возможности добавить флешку и МК достаточно объёмный, то можно разделить адресное пространство внутренней памяти программ на три части: 1 - загрузчик, 2 - основная программа, 3 - сохранённая программа. Загрузчик качает программу и сохраняет её в область 3, проверяет, а затем копирует в область 2.[/uquote]
О, уже написали!
Разве что можно ещё добавить, что эти части должны находиться в отдельных секторах стирания флешь МК. Если в качестве буфера используется внешняя flash, то тогда достаточно чтобы в отдельных секторах стирания были загрузчик и основное ПО.
Так и следует делать. Иногда можно обойтись без внешней флешки - использовать в этом качестве половину флешь программ МК (но это менее удобно).
Добавлено after 2 minutes 54 seconds:
[uquote="smalcom",url="/forum/viewtopic.php?p=3697467#p3697467"]Да - это хороший пример. Но если нет возможности добавить флешку и МК достаточно объёмный, то можно разделить адресное пространство внутренней памяти программ на три части: 1 - загрузчик, 2 - основная программа, 3 - сохранённая программа. Загрузчик качает программу и сохраняет её в область 3, проверяет, а затем копирует в область 2.[/uquote]
О, уже написали!
Разве что можно ещё добавить, что эти части должны находиться в отдельных секторах стирания флешь МК. Если в качестве буфера используется внешняя flash, то тогда достаточно чтобы в отдельных секторах стирания были загрузчик и основное ПО.
- Реклама
Re: STM32 новичку в ARM что к чему
Вопрос о программаторе для STM32 здесь звучал, наверное, не раз. Но все же спрошу - что лучше приобрести для программирования этих МК? На Алиэкспресс в основном два типа программаторов предлагается, вот такие как на картинках:


Ссылки на лоты с этими программаторами:
Первый https://ru.aliexpress.com/item/32869967 ... 2e0e9dAwCo
Второй https://ru.aliexpress.com/item/32796459 ... 2e0e9dAwCo
По информации найденной в интернете первый не умеет управлять питанием программируемого микроконтроллера. По комментариям к заказам на Алиэкспресс второй умеет рулить питанием целевого девайса. Так ли это? Опять же из комментов с Али узнал, что второй программатор мало чем отличается от первого. К тому же пишут, что в последнее время во втором не хватает какой-то микросхемы, вроде буферной памяти (раньше как будто была, но потом упростили). Стоит ли брать второй? Есть ли какие-то преимущества кроме очевидных (подключается кабелем, не нужно тыкать донгл в USB разъем системника и тянуть от него провода к плате с микроконтроллером)? Для чего нужен широкий разъем под шлейф на втором программаторе?
Еще вопрос - эти программаторы могут использоваться в качестве отладчиков? Или нужен отдельный отладчик для проверки работы залитой в МК программы в IDE (установка точек остановки программы, получение значений переменных и состояния регистров микроконтроллера)?
Если без отдельного отладчика никак, можно ли использовать такое устройство:

Ссылка на лот с преобразователем https://ru.aliexpress.com/item/32814913 ... 2e0e9dAwCo
По какому интерфейсу производится отладка STM32? Если по USART, то нельзя ли обойтись таким преобразователем USB-USART?

Ссылка на лот с преобразователем: https://ru.aliexpress.com/item/32670594 ... b201603_60
У меня, правда, не на CP2102, а на CH340G, но думаю, большой разницы между ними нет.
Ссылки на лоты с этими программаторами:
Первый https://ru.aliexpress.com/item/32869967 ... 2e0e9dAwCo
Второй https://ru.aliexpress.com/item/32796459 ... 2e0e9dAwCo
По информации найденной в интернете первый не умеет управлять питанием программируемого микроконтроллера. По комментариям к заказам на Алиэкспресс второй умеет рулить питанием целевого девайса. Так ли это? Опять же из комментов с Али узнал, что второй программатор мало чем отличается от первого. К тому же пишут, что в последнее время во втором не хватает какой-то микросхемы, вроде буферной памяти (раньше как будто была, но потом упростили). Стоит ли брать второй? Есть ли какие-то преимущества кроме очевидных (подключается кабелем, не нужно тыкать донгл в USB разъем системника и тянуть от него провода к плате с микроконтроллером)? Для чего нужен широкий разъем под шлейф на втором программаторе?
Еще вопрос - эти программаторы могут использоваться в качестве отладчиков? Или нужен отдельный отладчик для проверки работы залитой в МК программы в IDE (установка точек остановки программы, получение значений переменных и состояния регистров микроконтроллера)?
Если без отдельного отладчика никак, можно ли использовать такое устройство:
Ссылка на лот с преобразователем https://ru.aliexpress.com/item/32814913 ... 2e0e9dAwCo
По какому интерфейсу производится отладка STM32? Если по USART, то нельзя ли обойтись таким преобразователем USB-USART?
Ссылка на лот с преобразователем: https://ru.aliexpress.com/item/32670594 ... b201603_60
У меня, правда, не на CP2102, а на CH340G, но думаю, большой разницы между ними нет.
Астролябия-сама меряет, было бы что мерять!!!
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Шить ли st-link'ом — на любителя. Лично я предпочитаю шить через бутлоадер. А, скажем, приличные чипы (взять те же STM32F0x2) вообще через DFU можно шить — т.е. никакой программатор не нужен! Прошил, нажал reset и работай себе через USB!
Если разработчик видит смысл в использовании отладчика вместо обычных отладочных сообщений через консоль, то может быть вообще имеет смысл перешить st-link в j-link и работать в SES. Но, повторю, лично я категорически против такого подхода!
Насчет сохранения данных во флеш-памяти МК, я вот такую штукенцию сделал. Используются все свободные страницы памяти (т.е. писать туда можно очень много, особенно учитывая то, что минимум аж 5 тысяч перезаписей гарантируется), сделан бинарный поиск (т.о. поиск последних сохраненных данных требует всего-то пяти-девяти итераций, а не сотен или тысяч как при линейном поиске)...
Если разработчик видит смысл в использовании отладчика вместо обычных отладочных сообщений через консоль, то может быть вообще имеет смысл перешить st-link в j-link и работать в SES. Но, повторю, лично я категорически против такого подхода!
Насчет сохранения данных во флеш-памяти МК, я вот такую штукенцию сделал. Используются все свободные страницы памяти (т.е. писать туда можно очень много, особенно учитывая то, что минимум аж 5 тысяч перезаписей гарантируется), сделан бинарный поиск (т.о. поиск последних сохраненных данных требует всего-то пяти-девяти итераций, а не сотен или тысяч как при линейном поиске)...
Re: STM32 новичку в ARM что к чему
Любой подойдет.Asmodey писал(а):что лучше приобрести для программирования этих МК?
ST-Link это не программатор, а отладчик. Прошивка МК это одна из функций отладчика.Asmodey писал(а):Еще вопрос - эти программаторы могут использоваться в качестве отладчиков?
Немного об отладке. http://purebasic.mybb.ru/viewtopic.php?id=564
По USART можно только залить или прочитать прошивку, а отладка производится по интерфейсу JTAG или SWD, т. е. нужен ST-Link или другой отладчик.Asmodey писал(а):Если по USART, то нельзя ли обойтись таким преобразователем USB-USART?
Asmodey про отладку спрашивал.Eddy_Em писал(а):Шить ли st-link'ом — на любителя.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
[uquote="Мурик",url="/forum/viewtopic.php?p=3699420#p3699420"]Asmodey про отладку спрашивал.[/uquote]
Так я и про отладку отвечал!
На мой взгляд, погружаться в дебри gdb не имеет никакого смысла: ну как, ставя брейкпойнты и просматривая регистры, можно отладить, скажем, работу с USB, CAN или любым другим интерфейсом, который ждать не будет?
Только отладочные сообщения в UART или USB на скорости в 3мбод.
Так я и про отладку отвечал!
На мой взгляд, погружаться в дебри gdb не имеет никакого смысла: ну как, ставя брейкпойнты и просматривая регистры, можно отладить, скажем, работу с USB, CAN или любым другим интерфейсом, который ждать не будет?
Только отладочные сообщения в UART или USB на скорости в 3мбод.
Re: STM32 новичку в ARM что к чему
Завязывайте с линуксом. Поставьте винду и IDE и не нужно будет лезть в дебри gdb.Eddy_Em писал(а):На мой взгляд, погружаться в дебри gdb не имеет никакого смысла
Представьте отлаживал, причем успешно. Когда USB полностью инициализирован и с компом связь установлена, работу программы можно останавливать без опасения что USB отвалится. Контроллер отсылает компу сообщение NACK когда программа остановлена и попытки доставить пакет повторяются до тех пор пока программе не будет вновь запущена, т. е. пакеты не теряются.Eddy_Em писал(а):ну как, ставя брейкпойнты и просматривая регистры, можно отладить, скажем, работу с USB, CAN или любым другим интерфейсом, который ждать не будет?
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 новичку в ARM что к чему
Asmodey, первый поддерживает только SWD и SWIM интерфейсы. Второй так же и JTAG. Третий только JTAG. Последний бесполезен для прошивки и отладки STM-овских МК, если в МК нет уже прошитого бутлоадера.
Принципиальной разницы между SWD и JTAG я не вижу, кроме того, что для SWD достаточно двух проводов, а для JTAG надо пять (не считая землю и питание).
Добавлено after 4 minutes 47 seconds:
Мурик, на линуксе как раз с GDB проблем даже меньше, чем в винде. По крайней мере к Eclipse все прикручивается на раз. Точнее для STM32 на раз, а для STM8 и SDCC - после ряда ручных операций, которые могут представлять для новичка определенный гимморой.
Принципиальной разницы между SWD и JTAG я не вижу, кроме того, что для SWD достаточно двух проводов, а для JTAG надо пять (не считая землю и питание).
Добавлено after 4 minutes 47 seconds:
Мурик, на линуксе как раз с GDB проблем даже меньше, чем в винде. По крайней мере к Eclipse все прикручивается на раз. Точнее для STM32 на раз, а для STM8 и SDCC - после ряда ручных операций, которые могут представлять для новичка определенный гимморой.
Re: STM32 новичку в ARM что к чему
Через USART аппаратная отладка невозможна. Бутлоадер есть и прошит он изготовителем.ПростоНуб писал(а):Последний бесполезен для прошивки и отладки STM-овских МК, если в МК нет уже прошитого бутлоадера.
В винде в нормальной IDE все изначально настроено и прикручивать не нужно.ПростоНуб писал(а):на линуксе как раз с GDB проблем даже меньше, чем в винде. По крайней мере к Eclipse все прикручивается на раз.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Asmodey, по первой ссылке свисток не бери - там даже на фото не stm32 видно. Второй, скорее всего, можно взять. А ещё j-link-OB какой-нибудь ему в пару. Один китайский отладчик это не отладчик 
Re: STM32 новичку в ARM что к чему
Думаешь в него китайцы не могут поставить не STM32?VladislavS писал(а):Второй, скорее всего, можно взять.
А что касается "свистков". Не первый год пользуюсь и работают нормально.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[uquote="Мурик",url="/forum/viewtopic.php?p=3699447#p3699447"]Думаешь в него китайцы не могут поставить не STM32?[/uquote]Могут, конечно. Но в первый то точно поставили, так что...
[uquote="Мурик",url="/forum/viewtopic.php?p=3699447#p3699447"]А что касается "свистков". Не первый год пользуюсь и работают нормально.[/uquote]На F103 будет работать, куда он денется. В хозяйстве должен валяться про запас. А работать j-link удобнее.
[uquote="Мурик",url="/forum/viewtopic.php?p=3699447#p3699447"]А что касается "свистков". Не первый год пользуюсь и работают нормально.[/uquote]На F103 будет работать, куда он денется. В хозяйстве должен валяться про запас. А работать j-link удобнее.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
[uquote="Мурик",url="/forum/viewtopic.php?p=3699428#p3699428"]Завязывайте с линуксом. Поставьте винду и IDE и не нужно будет лезть в дебри gdb.
[/uquote]
Жесть-то какая! Мастдайку использовать для работы? Мдее.... Это ж совсем слов нет!
Жесть-то какая! Мастдайку использовать для работы? Мдее.... Это ж совсем слов нет!
Re: STM32 новичку в ARM что к чему
Просто фоток второго нет...VladislavS писал(а):Но в первый то точно поставили
Согласен. Не понимаю как можно пользоваться линуксом? Как-то пробовал - очень неудобный.Eddy_Em писал(а):Жесть-то какая!
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Вы, батенька, неправильно пробовали.
Потому что линукс — операционная система. Отличная, кастомизируемая — на любой вкус.
А мастдайка — обычная прошивка для игровых приставок. Серьезные люди ее в работе не используют. Это как у плотника забрать циркулярку и дать лобзик: пили, дорогой!
Потому что линукс — операционная система. Отличная, кастомизируемая — на любой вкус.
А мастдайка — обычная прошивка для игровых приставок. Серьезные люди ее в работе не используют. Это как у плотника забрать циркулярку и дать лобзик: пили, дорогой!
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 новичку в ARM что к чему
Мурик, ну не знаю, где Вы покупаете МК, но в последних двух купленных STM32F100C8T6 с Али никаких признаков бутлоадера я не обнаружил.
Что касается нормальной IDE, то это уже дело вкуса. Ни одной проприетарной IDE, полностью меня устраивавшей, со времен Multi-Edit я не встречал. А опенсорсные всегда можно заточить под себя, как захочется. Но тут следует учесть, что мои проекты, нередко, гетерогенные и мультиплатформенные, представляя собой объединение от МК до BI и BigData. То бишь, мне нужно одно IDE, в котором комфортно можно управлять проектом не только на C/С++, но и на C#, Perl, Python, Java, Ruby, DAX, MDX, SQL и т.п. Поэтому IDE, которая заточена только на МК меня не устраивает категорически.
Что касается нормальной IDE, то это уже дело вкуса. Ни одной проприетарной IDE, полностью меня устраивавшей, со времен Multi-Edit я не встречал. А опенсорсные всегда можно заточить под себя, как захочется. Но тут следует учесть, что мои проекты, нередко, гетерогенные и мультиплатформенные, представляя собой объединение от МК до BI и BigData. То бишь, мне нужно одно IDE, в котором комфортно можно управлять проектом не только на C/С++, но и на C#, Perl, Python, Java, Ruby, DAX, MDX, SQL и т.п. Поэтому IDE, которая заточена только на МК меня не устраивает категорически.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
ПростоНуб, как может в F100 не быть USART-бутлоадера? Вот DFU нет, это да...


