MKdemiurg 0 March 20 Posted March 20 · Report post 9 minutes ago, jcxz said: Что такое "валидирует" и что такое "фиксированный адрес"? Где? В ОЗУ во флешь? Ну в моём случае проверка хэша. Во флешь. Основной загрузчик пишет в сектор в конце флешь новую версию загрузчика, который будет позже переписан при старте субзагрузчиком 9 minutes ago, jcxz said: Две копии - для безопасного обновления, естественно. PS: Сдаётся мне - Вы ничего не поняли в алгоритме безопасного обновления загрузчика..... да не, я понял. Теперь мне кажется избыточным исполнение из ОЗУ. Почему я не могу заниматься копированием их области А в область Б в необновляемом субзагрузчике? Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 87 March 20 Posted March 20 · Report post Субзагрузчик начинает обновлять, выключают питание, занавес... Вы едете в тайгу копать яму до своего девайса, чтобы программатор подключить)) Quote Share this post Link to post Share on other sites More sharing options...
MKdemiurg 0 March 20 Posted March 20 · Report post 45 minutes ago, Arlleex said: Субзагрузчик начинает обновлять, выключают питание, занавес... Вы едете в тайгу копать яму до своего девайса, чтобы программатор подключить)) Почему занавес. Ресет. Проверяет основной - а там мусор невалидный. sha256 не совпадает. Проверяет области для временного хранения - там живой рабочий бут. Копирует - взлетает. Получается, что чтобы окирпичить девайс - надо и невалидно бут залить и начать его прошивать когда он невалидный, что можно исключить бизнес-логикой субзагрузчика Вариант окирпичивания - это убить флеш . но ее убить можно только если мы будем постоянно пытаться перелить из временной области в основную. Quote Share this post Link to post Share on other sites More sharing options...
x893 20 March 20 Posted March 20 · Report post 1 hour ago, Arlleex said: Субзагрузчик начинает обновлять, выключают питание, занавес... Вы едете в тайгу копать яму до своего девайса, чтобы программатор подключить)) Это уже как создатель сделает. Можно и занавес, можно и без него. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 124 March 20 Posted March 20 · Report post 1 час назад, MKdemiurg сказал: Копирует - взлетает. Что значит "копирует"? Если храните что-то во флешь, то просто "скопировать" туда нельзя. Надо "шить". Зачем тогда вам 2 загрузчика если у вас оба шьют и оба получаются сложные, один причём необновляемый? В том алгоритме, о котором писал я и Arlleex, субзагрузчик: это простейший, цикл вычисления контрольной суммы и копирования кода из флешь в ОЗУ. Простейший! Без всяких хешей, функций стирания/программирования флешь и т.п. Когда весь цикл весит несколько десятков байт всего, легко просматриваемый и потому безглючный. А все сложные функции работы с хешами, работы с API прошивки флешь и т.п. - они все находятся в основном обновляемом загрузчике. Который лежит во флешь в 2-х разных местах в двух копиях. И безопасно обновляем. В вашем случае - вы наворотили сложный загрузчик, в котором опять возможны баги. Но который при этом не обновить. Или обновить, но с возможностью образования кирпича. Quote Share this post Link to post Share on other sites More sharing options...
MKdemiurg 0 March 20 Posted March 20 · Report post 13 minutes ago, jcxz said: В том алгоритме, о котором писал я и Arlleex, субзагрузчик: это простейший, цикл вычисления контрольной суммы и копирования кода из флешь в ОЗУ. Простейший! Ну так и в этот будет простейший - вычисление контрольной суммы ( можно и CRC вместо хэша), сравнение версий и копирование уже загруженной копии на рабочее место. Мне кажется использование загрузки из ОЗУ при использовании субзагрузчика тогда избыточно. Только для того , чтобы обойти ограничения привязки к адресу. Но суть вашего предложения ясна. Надо обмозговать. Благодарю. ЗЫ Мы же в любом случае должны писать в субзагрузчике бизнеслогику выбора активного и старого. Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 87 March 21 Posted March 21 · Report post А что за МК? В некоторых контроллеры Flash требуют, чтобы код записи во Flash исполнялся из ОЗУ. Quote Share this post Link to post Share on other sites More sharing options...
MKdemiurg 0 March 21 Posted March 21 · Report post 2 hours ago, Arlleex said: А что за МК? В некоторых контроллеры Flash требуют, чтобы код записи во Flash исполнялся из ОЗУ. GD32F Quote Share this post Link to post Share on other sites More sharing options...
Forger 16 March 21 Posted March 21 · Report post 13 minutes ago, MKdemiurg said: GD32F Какой конкретнее? Quote Share this post Link to post Share on other sites More sharing options...
MKdemiurg 0 March 21 Posted March 21 · Report post Just now, Forger said: Какой конкретнее? GD32F303 Quote Share this post Link to post Share on other sites More sharing options...