我正在为SAMD21编写一个第二阶段的引导加载程序,它在硬件初始化后移交给用户应用程序。
如何验证具有应用程序重置处理程序(例如0x2000)的跳转地址是否包含实际有效的代码?
如果没有有效的用户域处理程序来避免未定义的行为,则目标是中止跳转。
发布于 2018-11-13 09:20:32
引导加载程序应该能够在跳转到应用程序代码之前检查它是否有效。一种方法是对整个应用程序代码执行CRC。在构建过程的末尾添加一个步骤,以计算应用程序代码上的CRC,并将CRC值插入到二进制映像中的已知/保留位置。然后,在启动时,引导加载器执行相同的CRC计算,并将其与应用程序中嵌入的CRC值进行比较。
有关更多详细信息和想法,请参阅这些和类似的应用笔记
http://www.keil.com/appnotes/files/an277.pdf
http://ww1.microchip.com/downloads/en/AppNotes/doc1143.pdf
https://stackoverflow.com/questions/53269145
复制相似问题