|
|
  |
Прошивка STM32F7 через другой STM32F7 (UART), Прошивка ведомых ведущим. |
|
|
|
May 24 2018, 09:39
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 19-01-17
Пользователь №: 95 076

|
Цитата(x893 @ May 24 2018, 11:18)  Можно и без ресета, но если ваша расчудесная программа (или загрузчик) завинет - будете бежать питание передергивать ? Про WDG можно не писать. Естественно в загрузчик можно и через команду попасть. Да однозначно RST подтяну к ведущему. IWDG также присутствует в некоторых модулях. Резюмируя, я так понимаю, что любые МК, например DSPIC33 в качестве субведомых (управляется ведомым) также можно шить по UART ведущим? Просто каскадный bootloadr? Я нашел кучу примеров Bootloader'ов для прошивки по вайфай, USB и SD и т.п. Но не нашел ни одного примера кода как один STM32 шьет другой STM32 тем более Атмегу. Если есть у кого пример - кусок кода или ссылка будут очень благодарен! Самое главное что я хотел этой веткой для себя решить - это наличие такой возможности. Соответсвенно она есть и теперь я могу двигаться дальше. Всем спасибо!
|
|
|
|
|
May 24 2018, 09:57
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(AVStech @ May 24 2018, 09:43)  В принципе по данному алгоритму можно сделать собственный bootloader, который будет шить собственный камень. Но как это сделать для камня, который далеко от слота карты памяти ведущего, и у которого нет собственного накопителя, кроме флеша, который к тому же почти под завязку заполнен? Цитата(AVStech @ May 24 2018, 12:39)  Я нашел кучу примеров Bootloader'ов для прошивки по вайфай, USB и SD и т.п. Но не нашел ни одного примера кода как один STM32 шьет другой STM32 тем более Атмегу. Вам всего-то нужно понять простую мысль: Вы нашли примеры как прошить от ПК через различные интерфейсы конечный контроллер. Так вот в вашем случае под ПК нужно понимать ваш первый МК с флеш-картой как диском-хранилищем. Т.е. в первом МК должен быть функционал прошивальщика через УАРТ ведомых МК. А уж какие вы примените алгоритмы и протоколы - это уже детали реализации.
|
|
|
|
|
May 24 2018, 10:12
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 19-01-17
Пользователь №: 95 076

|
Цитата(HardEgor @ May 24 2018, 12:57)  Спасибо огромное! Цитата(Baser @ May 24 2018, 12:57)  Вам всего-то нужно понять простую мысль: Вы нашли примеры как прошить от ПК через различные интерфейсы конечный контроллер.
Так вот в вашем случае под ПК нужно понимать ваш первый МК с флеш-картой как диском-хранилищем. Т.е. в первом МК должен быть функционал прошивальщика через УАРТ ведомых МК.
А уж какие вы примените алгоритмы и протоколы - это уже детали реализации. Вот теперь всё более менее становится на свои места! СПАСИБО!!!
|
|
|
|
|
May 25 2018, 12:10
|
Частый гость
 
Группа: Участник
Сообщений: 109
Регистрация: 12-10-16
Пользователь №: 93 727

|
Цитата(Arlleex @ May 24 2018, 18:49)  О чем речь? Да это (круглый) опять отлаживает свой ПД ( приход дури ) регулятор. Видать словил...
|
|
|
|
|
May 26 2018, 13:25
|
Гуру
     
Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741

|
Система с кучей STM32 в том числе F7 имеет право на жизнь, и отдельный F7 отвечающий за библиотеки прошивки это тоже нормально. Но в определенных случаях. Например это удаленная система без непосредственного доступа оператора с плохим каналом связи. Т.е прошивка для апгреда заливается медленно и печально, часами или неделями, с обрывами связи. Процессор-менеджер фирмвари этим и занимается. Когда прошивка залита во внешний флешь, проверены ее чексуммы и соответствие акуальной версии харда остальных процессоров, то планируется действия по накатыванию фирмвари в безопасный для техпроцесса период. При этом во флеши менеджера прошивок лежит как минимум две копии фирмвари, в том числе и для даунгрейда в случае проблем. Т.е если вылезит баг при накате прошивки то всегда можно быстро откатиться без передачи новой-старой фирмвари по ненадежному каналу связи. Ну а мультипроцессороность позволяет функционировать управляющему блоку даже при неудачной прошивке. Т.е новая фирмварь вводится в опытную эксплуатацию в режиме надзора без включения в управляющий контур и только после некоторого пробного периода управление переключается на нее. Менеджер фирмвари также может принимать, хранить и высылать журнал эксплуатации системы, журналы срабатывания ватчдогов, трапов и ловушек подчиненных систем итд. Возможен спец-вариант принудительного наката дефолтных прошивок по срабатыванию ватчдога всей системы низкого уровня на "мелком 8-битном процессоре" но с этим надо очень осторожно чтобы не крашнуть систему при проблемах питания. Самоапдейт менеджера фирмвари тоже возможен, но это очень особый случай типа частичной порчи флеша от длительной эксплуатации. Или если эта вся система расположена совсем не на родной планете.... Это все из области ультранадежных дублированных управляющих систем.
|
|
|
|
|
May 30 2018, 05:47
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(khach @ May 26 2018, 16:25)  Это все из области ультранадежных дублированных управляющих систем. Вот только вопрос: а место ли STM32 в этой области?  Цитата(kolobok0 @ May 26 2018, 00:01)  о том, что тот случай который описал человек которому я отвечал, можно расширить и stm32 может успешно шить сам себя(при соблюдении ряда условий конечно-же). одна из задач которую придётся решать в рукопашную тогда - позднее связывание адресов. так понятнее или опять мимо? Совершенно непонятно....  В чём проблема чтобы STM32 "шить сам себя"? Что такое "позднее связывание адресов" и на кой оно? Цитата(AVStech @ May 23 2018, 17:58)  Теперь вопросы - это возможно реализовать на практике? И "ДА" - Естественно все микроконтроллеры имеют необходимый bootloader и все прошивки скомпилированы в бин или хекс. Конечно возможно. На прошлой работе работе мы много лет все изделия строили по такой схеме (и сейчас их у заказчиков функционируют десятки если не сотни тысяч и обновляются по необходимости). Мы сделали возможность обновления через любой рабочий интерфейс (устройства имеют несколько их разных, в зависимости от аппаратного исполнения): UART, оптопорт, RS-485, CAN, Ethernet, радиоканал, ZigBee, GSM, PLC - обновляться могут через любой из них. Обновление безопасное: прошивка сначала полностью скачивается во внутреннюю энергонезависимую память (рабочим ПО), потом прошивается во флешь программ (бутлоадером). Эти устройства как правило имели в своём составе кроме главного МК несколько программируемых модулей (GSM, ZigBee, радиомодуль, PLC, ...) и для всех из них возможно обновление их внутренней прошивки (для этого каждый сделан с бутлоадером, для обеспечения безопасного обновления если оно идёт по каналу, который поднят на данном модуле). В большинстве систем наши устройства работали группами с ретрансляцией между устройствами. Например: один внешний канал для связи с центром - GSM на одно из устройств, остальные устройства в группе подключаются к устройству с GSM через ZigBee. Естественно все эти устройства в ZigBee видны из центра и их любой адресно можно перешить. Также делали системы с резервированием канала к центру (в сети ZigBee два узла с GSM; или GSM и Ethernet). Цитата(AVStech @ May 23 2018, 17:58)  Если да то прошу помощи - пример как это сделать, включая схему подключения между контроллерами. Ведь голый uart не пойдет нужно с концентратора еще и gpio подводить к ногам boot0 и boot1 и RST ведомых микроконтроллеров (для avr также) Почему не пойдёт? Никакие доп. пины не нужны, так как перешивать и сбрасывать после прошивки должен бутлоадер. И прошивка возможна по любому каналу. В том изделии, что разрабатываю сейчас, обновление построено по тому же принципу, но кроме того есть возможность безопасного обновления и самого бутлоадера.
|
|
|
|
|
May 30 2018, 07:49
|

Местный
  
Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264

|
Цитата(jcxz @ May 30 2018, 09:47)  Совершенно непонятно....  В чём проблема чтобы STM32 "шить сам себя"? Что такое "позднее связывание адресов" и на кой оно? Я даже побоялся спрашивать дальше, думал может я чего-то не знаю/не понимаю. А нет, не один такой Цитата(jcxz @ May 30 2018, 09:47)  В том изделии, что разрабатываю сейчас, обновление построено по тому же принципу, но кроме того есть возможность безопасного обновления и самого бутлоадера. В ОЗУ исполняемый бут? А если питание сбросится во время обновления бута? ИМХО должно быть два бута для действительно безопасного обновления самого бутлоадера.
|
|
|
|
|
May 30 2018, 10:06
|

Местный
  
Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264

|
Цитата(jcxz @ May 30 2018, 12:46)  Не в ОЗУ, а во флешь естественно. В ОЗУ он копируется при запуске. Да, естественно имеется две копии бута. Обновляется всегда неактивная, а потом переключается активность. А в ОЗУ, затем, чтобы не было нужды делать позиционно-независимый бутлоадер и всякие "поздние связывания адресов"  1. Правильно ли я полагаю, что в ОЗУ Вы копируете код (и обработчики исключений) лишь для того, чтобы не потерять возможные прерывания и события при остановке CPU при стирании или программировании Flash? 2. Копии загрузчиков хранятся в разных секторах Flash и не пересекаются, правильно понимаю? Иначе при стирании одного сектора обновляемого загрузчика, можно зацепить активный и при сбросе питания оба загрузчика будут неработоспособными. 3. Тогда есть все-таки один основной механизм, который никогда не обновляется - в начале Flash смотрится какая-то переменная, показывающая, какой из загрузчиков активен, копирует в ОЗУ содержимое Flash региона нужного загрузчика и все его обработчики прерываний, а потом переходит на загрузчик? Загрузчик уже сам понимает что дальше делать - обновлять кого-то или переходить на приложение. Исходя из этого можно предположить, что регионов в памяти у Вас 3: первый как раз навеки-вечно зашитый механизм просмотра и запуска нужного бута, второй - основной бут, третий - резервный бут (копия, как удобно). И располагаются они в разных секторах Flash: первый обязательно в начале, второй и третий (загрузчики) - где удобно не в одном секторе с первым. Так? Ну вернее я так вижу, как бы сделал я (на беглый взгляд).
Сообщение отредактировал Arlleex - May 30 2018, 10:22
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|