У меня есть приложение STM32, которое использует два блока памяти. В 0-м блоке у меня есть загрузочный код (который запускается сразу после включения), а в 7-м блоке у меня есть код приложения (который может запускаться или не выполняться в зависимости от решения об авторизации, заданного загрузочным кодом).
Эти два кода разработаны, следовательно, сгенерированы двумя отдельными проектами. Они высвечиваются в определенных блоках (код загрузки до 0-го блока и код приложения до 7-го блока) памяти STM32 NOR с использованием инструмента openocd , передавая значение offset для openocd команда write_image .
Что я хотел бы сделать в основном в загрузочном коде, так это то, что я хочу вычислить хэш кода приложения и сравнить его с эталонным дайджестом. Если они равны, я дам руку коду приложения. Для этого после того, как я сгенерирую исполняемый файл (может быть в формате elf, hex или bin) кода приложения, я хочу:
- Создайте другой файл (в любом формате, указанном выше), размер которого составляет 128 КБ
- Скопировать содержимое исполняемого файла в недавно созданный файл с его начала (смещение 0)
- Запись хеша исполняемого файла в последние 32 байта недавно созданного файла
- Заполнить пробел 0xFF
- Наконец, прошить этот исполняемый файл (если он все еще) в 7-й блок памяти
Как вы думаете, это выполнимо и выполнимо? Если так:
- Какой формат мне следует использовать для генерации исполняемого файла?
- Есть ли у меня что-то, что мне нужно уделить особое внимание, чтобы добиться этого?
Наконец, как вы думаете, имеет ли это смысл делать или есть какой-то другой более стандартный способ для этой цели?
Заранее большое спасибо.