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

Формат файла *.bin

По заданию необходимо во флеш памяти контроллера stm32 иметь Несколько прошивок и загрузчик сам должен разобраться какую грузить в данный момент.

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

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

Если кто то в курсе, подскажите где рыть?

 

 

 

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


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

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

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


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

Как тема называется

Формат файла *.bin


такой и ответ: нет никакого формата - чисто непрерывные двоичные данные, срослось - на весь объём памяти, не срослось - сколько получилось.

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


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

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

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


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

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

Зачем грузить? Можно просто запускать нужную прошивку.

Загрузчик перед запуском прошивки должен как-то определить ее наличие и целостность, и если для первого случая достаточно лишь проверить несколько первых слов по адресу расположения образа, то для второго нужен некий алгоритм, который пройдется по всему образу и вычислит некую контрольную сумму (у меня, например, это CRC32), а затем сверит ее с тем, какая она должна быть. Вот жирным обозначил информацию, которая должна быть прописана где-то в образе клиентской прошивки.

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


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

Тут и думать нечего - добавить заголовок с размером, CRC, адресом загрузки, номером версии и т.д . Загрузчик проверит корректность заголовка, целостность тела, выведет в консоль результат проверки, а потом загрузит тело и передаст ему управление.

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


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

Спасибо, кэп. А теперь перечитайте исходное сообщение ТС - он именно это и спрашивает.

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


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

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

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

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

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

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

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

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

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

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