Добрый день. Недавно увидел в процессорах stm32 с двумя банками памяти функцию SWAP банков. И сразу загорелся добавить в приложение функцию bootloader, с возможностью откатиться предыдущую версию ПО (т.е хранение двух образов прошивки). Основная логика работы в принципе понятна, основное приложение работает + принимает образ прошивки и записываться его во второй банк памяти, после чего проверяет CRC и выдает сообщение на перезагрузку для обновления. Вопрос встал как после перезагрузки указать с какого банка памяти грузиться? Много где находил другой алгоритм который после загрузки нового ПО копировал его в первый банк памяти и тогда такой проблемы не возникает.
Вопрос встал как после перезагрузки указать с какого банка памяти грузиться? Много где находил другой алгоритм который после загрузки нового ПО копировал его в первый банк памяти и тогда такой проблемы не возникает.
Создать заголовок прошивки (таблицу в определённом фиксированном месте каждого банка), где хранить некий индекс. При записи новой прошивки (в другой банк) формировать таблицу для него из таблицы активного банка с индексом активного банка увеличенным на 1. При старте достаточно считать обе таблицы обоих банков; проверить обе на валидность; выбрать ту, которая валидна; если валидны обе - выбрать ту, индекс которой больше на 1 (сравнивать с учётом перехода индекса через 0). Если обе таблицы валидны, но индексы в них отличаются не на 1, а на другое значение - считать что валидной прошивки нет. В этой же таблице можно хранить и например CRC прошивки. И при определении валидности таблицы, подсчитывать CRC прошивки данного банка.
такое делал на меге128. но в стм32 - там есть возможность прошивку делать из фрагментов загрузки, осталось как при бэкапе иметь возможность полностью проапдэйтить прошивку - фулл, только одного модуля - инкреемнтально или дифф. = для этого заводиться страница описания. Там не то что две версии, там можно и поболее хранить и выбирать более последнюю устойчивую. а грузить из любого канала, даже который сам себя "переписывает"...
(круглый) ЗЫ Ну это типо по большому секрету, дцатилетний дзэн в разработке под мк
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
...А для чего....Линкером разделить ПО....делить модули надо по размеру сектора ?
выше основную идею и профиты которые из этого следует - уже выше вскольз описал. каждый кусок - имеет хидер описания. бутлодырю остаёться только, опираясь на статистику отказов, загрузить более устойчивую версию.. модули не обязательно кратны. но начинаются с кратным шагом во флэше - собственно как пзу драйвера железа во времена доса, если знаете...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения