inventor 0 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба По заданию необходимо во флеш памяти контроллера stm32 иметь Несколько прошивок и загрузчик сам должен разобраться какую грузить в данный момент. Проблема в том, что необходимо знать размер этой прошивки, вычислять ее перед записью не очень удобно, мне кажется что сам бинарник внутри это должен иметь. Ведь при старте контроллера он все это дело разворачивает, т.е. размер там где то должен быть проставлен и возможно какая то контрольная сумма Если кто то в курсе, подскажите где рыть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба Ну оставьте место под размер и контрольную сумму в свободных векторах прерываний ядра с помощью скрипта компоновщика. Далее либо сторонней утилитой (например, srec_cat), либо самопальной, либо вовсе средствами того же компоновщика (если позволяет) заносите в эти зарезервированные места реальные размер и контрольную сумму. Можно и вообще без скрипта обойтись - в действующей таблице векторов принять в наличие двух служебных слов вместо заглушек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба Как тема называется Формат файла *.bin такой и ответ: нет никакого формата - чисто непрерывные двоичные данные, срослось - на весь объём памяти, не срослось - сколько получилось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viakon 0 22 июля, 2021 Опубликовано 22 июля, 2021 · Жалоба Зачем грузить? Можно просто запускать нужную прошивку. Главное чтоб загрузчик знал, где они расположены во флеш. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 22 июля, 2021 Опубликовано 22 июля, 2021 · Жалоба 1 час назад, viakon сказал: Зачем грузить? Можно просто запускать нужную прошивку. Загрузчик перед запуском прошивки должен как-то определить ее наличие и целостность, и если для первого случая достаточно лишь проверить несколько первых слов по адресу расположения образа, то для второго нужен некий алгоритм, который пройдется по всему образу и вычислит некую контрольную сумму (у меня, например, это CRC32), а затем сверит ее с тем, какая она должна быть. Вот жирным обозначил информацию, которая должна быть прописана где-то в образе клиентской прошивки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgK 1 23 июля, 2021 Опубликовано 23 июля, 2021 · Жалоба Тут и думать нечего - добавить заголовок с размером, CRC, адресом загрузки, номером версии и т.д . Загрузчик проверит корректность заголовка, целостность тела, выведет в консоль результат проверки, а потом загрузит тело и передаст ему управление. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 23 июля, 2021 Опубликовано 23 июля, 2021 · Жалоба Спасибо, кэп. А теперь перечитайте исходное сообщение ТС - он именно это и спрашивает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться