Добавьте хеш кода в исполняемый файл - PullRequest
0 голосов
/ 24 августа 2018

У меня есть приложение STM32, которое использует два блока памяти. В 0-м блоке у меня есть загрузочный код (который запускается сразу после включения), а в 7-м блоке у меня есть код приложения (который может запускаться или не выполняться в зависимости от решения об авторизации, заданного загрузочным кодом).

Эти два кода разработаны, следовательно, сгенерированы двумя отдельными проектами. Они высвечиваются в определенных блоках (код загрузки до 0-го блока и код приложения до 7-го блока) памяти STM32 NOR с использованием инструмента openocd , передавая значение offset для openocd команда write_image .

Что я хотел бы сделать в основном в загрузочном коде, так это то, что я хочу вычислить хэш кода приложения и сравнить его с эталонным дайджестом. Если они равны, я дам руку коду приложения. Для этого после того, как я сгенерирую исполняемый файл (может быть в формате elf, hex или bin) кода приложения, я хочу:

  • Создайте другой файл (в любом формате, указанном выше), размер которого составляет 128 КБ
  • Скопировать содержимое исполняемого файла в недавно созданный файл с его начала (смещение 0)
  • Запись хеша исполняемого файла в последние 32 байта недавно созданного файла
  • Заполнить пробел 0xFF
  • Наконец, прошить этот исполняемый файл (если он все еще) в 7-й блок памяти

Как вы думаете, это выполнимо и выполнимо? Если так:

  • Какой формат мне следует использовать для генерации исполняемого файла?
  • Есть ли у меня что-то, что мне нужно уделить особое внимание, чтобы добиться этого?

Наконец, как вы думаете, имеет ли это смысл делать или есть какой-то другой более стандартный способ для этой цели?

Заранее большое спасибо.

1 Ответ

0 голосов
/ 25 августа 2018

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

...