Перейти к содержанию
    

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

9 minutes ago, jcxz said:

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

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

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

9 minutes ago, jcxz said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 minutes ago, Arlleex said:

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

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

Ресет.

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Arlleex said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, jcxz said:

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Arlleex said:

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

GD32F

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...