Делал свой кастомный бут. Он всегда стартует по ресету и если не находит на внешнем НАНД образа прошивки передает управление приложению.
P.S. Вот жменька запятых, расставьте сами ,,,,,,,
Можно это как то обернуть в библиотеку и вывести АПИ через хидер. Так, например, сделан доступ к блютуз стеку в Нордиках. Он шьется по фиксированному адресу а из апликухи можно к нему доступиться. Но как это сделать хз.
Проще взять камень пожирнее или оптимизацию включить на полную.
Программный вход в factory бут некоторые делают - достаточно немного регистры и настройки подмарафетить. Это можно сделать инициировав программный сброс. А по сбросу проверять ячейку RAM чтобы узнать кто сброс сделал, при необходимости передавать управление в factory бут. Но выходить прийдется аппаратным сборосом.
А использовать фрагменты кода из factory бута дело стремное - этот код может меняться в разных ревизиях чипов и у разных производителей.
зато место практически не требует. Несколько инструкций на проверку ячейки памяти по сбросу и запись ячейки с программным сбросом.Нуэто как-то уж очень жестоко...
вообще, флэш в нём шьётся просто из программной секции. Стёр сектор - записал сектор. Важно чтобы в этот момент рабочими оставались либы, которые читают то, что шьёшь.
А я ж о чём! Вот как рассказать линкеру куда мне положить эту функцию? Я ж хочу, ятобы вся прога компилировалась вместе и бутлоадер с инициализацией и либами включить туда.если свой бутлоадер, то можно просто одну страницу под него зарезервировать и не перешивать её.
Нуу... я ж из менюшки хочу. Нажал обновить - и обновил.Вектор сброса на страницу с бутлоадером, из него проверяется контрольная сумма флеша, если все ок - вываливаемся в код. Если контрольная сумма с ошибкой входим в бутлоадер.
Это, конечно, немаловажный момент... пока не думалТогда при ошибке или при потере питания при прошивке, контроллер сам будет вываливаться в бутлоадер.
Вот жменька запятых, расставьте сами ,,,,,,,
А я ж о чём! Вот как рассказать линкеру куда мне положить эту функцию? Я ж хочу, ятобы вся прога компилировалась вместе и бутлоадер с инициализацией и либами включить туда.
Я делал на TMS320F28335 в бутлоадере подобноеЗадался интересным вопросом - все для обновления юзают перезагрузку с зажатым бутом...
Ну стандартный подход, ок. А кто-то пробовал делать вход в лоадер из основной программы?
Пробовал использовать ресурсы бутлоадера из основной программы. В частности - массив символов знакогенератора.Задался интересным вопросом - все для обновления юзают перезагрузку с зажатым бутом...
Ну стандартный подход, ок. А кто-то пробовал делать вход в лоадер из основной программы?
Пробовал использовать ресурсы бутлоадера из основной программы. В частности - массив символов знакогенератора.
Вызывать процедуры бутлоадера не пробовал, но, думаю, схема будет та же - в бутлоадере сохраняем адреса всего, что надо(в укромном месте), в основной программе - восстанавливаем оттуда же.
Бутлоадер у меня вообще в отдельном проекте. Один раз скомпилировал, прошил и забыл.Хороший способ.
Бут тогда надо либой подключать, но как-то запрещать компилировать её.
Или дефайнить адреса как void (что очень любит ST) и потом принудительно назначать тип своим указателям (что тоже постоянно делает ST)?