Bootloader:在切换之前验证用户应用程序

时间:2018-11-12 19:51:04

标签: c microcontroller bootloader

我正在编写用于SAMD21的第二阶段引导程序,在硬件初始化后移交给用户区应用程序。

如何使用应用程序重置处理程序(例如0x2000)验证跳转地址是否包含实际有效的代码?

目标是在没有有效的Userland处理程序的情况下中止跳转,以避免未定义的行为。

1 个答案:

答案 0 :(得分:0)

引导加载程序应具有在跳转到应用程序代码之前对其进行检查的能力。一种方法是对整个应用程序代码执行CRC。在构建过程的最后添加一个步骤,以计算应用程序代码上的CRC,并将CRC值插入到二进制图像中的已知/保留位置。然后,启动程序会在启动时执行相同的CRC计算,并将其与应用程序中嵌入的CRC值进行比较。

有关更多详细信息和想法,请参阅这些和类似的应用笔记

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

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