Jump to content
    

Как правильно перепрошить загрузчик

9 minutes ago, jcxz said:

Что такое "валидирует" и что такое "фиксированный адрес"? Где? В ОЗУ во флешь?

Ну в моём случае проверка хэша.

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

9 minutes ago, jcxz said:

Две копии - для безопасного обновления, естественно.

PS: Сдаётся мне - Вы ничего не поняли в алгоритме безопасного обновления загрузчика..... :unknw:

да не, я понял. Теперь мне кажется избыточным исполнение из ОЗУ. Почему я не могу заниматься копированием их области А в область Б в необновляемом субзагрузчике?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

45 minutes ago, Arlleex said:

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

Почему занавес.

Ресет.

Проверяет основной - а там мусор невалидный. sha256 не совпадает.

Проверяет области для временного хранения - там живой рабочий бут. Копирует - взлетает.

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

 

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

Share this post


Link to post
Share on other sites

1 hour ago, Arlleex said:

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

Это уже как создатель сделает. Можно и занавес, можно и без него. 

Share this post


Link to post
Share on other sites

1 час назад, MKdemiurg сказал:

Копирует - взлетает.

Что значит "копирует"? Если храните что-то во флешь, то просто "скопировать" туда нельзя. Надо "шить". Зачем тогда вам 2 загрузчика если у вас оба шьют и оба получаются сложные, один причём необновляемый?

В том алгоритме, о котором писал я и Arlleex, субзагрузчик: это простейший, цикл вычисления контрольной суммы и копирования кода из флешь в ОЗУ. Простейший! Без всяких хешей, функций стирания/программирования флешь и т.п. Когда весь цикл весит несколько десятков байт всего, легко просматриваемый и потому безглючный. А все сложные функции работы с хешами, работы с API прошивки флешь и т.п. - они все находятся в основном обновляемом загрузчике. Который лежит во флешь в 2-х разных местах в двух копиях. И безопасно обновляем.

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

Share this post


Link to post
Share on other sites

13 minutes ago, jcxz said:

В том алгоритме, о котором писал я и Arlleex, субзагрузчик: это простейший, цикл вычисления контрольной суммы и копирования кода из флешь в ОЗУ. Простейший!

Ну так и в этот будет простейший - вычисление контрольной суммы ( можно и CRC вместо хэша), сравнение версий  и копирование уже загруженной копии на рабочее место.

Мне кажется использование загрузки из ОЗУ при использовании субзагрузчика тогда избыточно. Только для того , чтобы обойти ограничения привязки к адресу.

Но суть вашего предложения ясна.

Надо обмозговать. Благодарю.

ЗЫ Мы же в любом случае должны писать в субзагрузчике бизнеслогику выбора активного и старого.

Share this post


Link to post
Share on other sites

А что за МК? В некоторых контроллеры Flash требуют, чтобы код записи во Flash исполнялся из ОЗУ.

Share this post


Link to post
Share on other sites

2 hours ago, Arlleex said:

А что за МК? В некоторых контроллеры Flash требуют, чтобы код записи во Flash исполнялся из ОЗУ.

GD32F

Share this post


Link to post
Share on other sites

13 minutes ago, MKdemiurg said:

GD32F

Какой конкретнее?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...