该例程在引导加载程序的开始处调用,确定引导加载程序应运行应用程序代码,还是等待新的映像。它检查以下五个条件:
- 如果代码在不支持 AES 硬件加密的器件上运行,引导加载程序将不执行应用程序。
- 如果器件不具备 EEPROM 中存储的有效密钥,将不执行应用程序。相反,引导加载程序将进入一种状态,等待密钥的未加密映像进行上传。
- MyCheckUpdateFunc 将调用用户定义的函数 CheckGPIOPin。如果此函数返回 true,引导加载程序将不执行应用程序,而会等待上传新的加密应用程序映像。在示例引导加载程序中,它将检查 EK-TM4C129EXL LaunchPad SW2 按钮是否被按低了。
- MyCheckUpdateFunc 将检查是否发生了软件复位,以及是否设置了基于 RAM 的预定值,以确认应用是否调用了引导加载程序。如果结果都为 true,引导加载程序将等待上传新的加密应用程序映像。
- MyCheckUpdateFunc 将计算应用程序代码区域的 AES-CBCMAC 哈希值,并将结果与应用程序映像的最后 16 个字节进行比较。如果映像匹配,引导加载程序将执行应用程序代码。如果映像不匹配,它将等待上传新的加密应用程序映像。