Загрузчик: проверьте пользовательское приложение перед передачей - PullRequest
0 голосов
/ 12 ноября 2018

Я пишу загрузчик второго уровня для SAMD21, который после инициализации оборудования передает приложение пользовательскому приложению.

Как проверить, что адрес перехода с помощью обработчика сброса приложения (например, 0x2000) содержитдействительно действительный код?

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

1 Ответ

0 голосов
/ 13 ноября 2018

В загрузчике должна быть возможность проверить правильность кода приложения перед тем, как перейти к нему.Один из способов - выполнить CRC для всего кода приложения.Добавьте в конец процесса сборки шаг для вычисления CRC по коду приложения и вставьте значение CRC в двоичное изображение в известном / зарезервированном месте.Затем при запуске загрузчик выполняет те же вычисления CRC и сравнивает их со значением CRC, встроенным в приложение.

Дополнительные сведения и идеи см. В этих и аналогичных примечаниях к приложению

http://www.keil.com/appnotes/files/an277.pdf

http://ww1.microchip.com/downloads/en/AppNotes/doc1143.pdf

...