ZHCABH7 January   2022 TM4C129CNCPDT , TM4C129CNCZAD , TM4C129DNCPDT , TM4C129DNCZAD , TM4C129EKCPDT , TM4C129ENCPDT , TM4C129ENCZAD , TM4C129LNCZAD , TM4C129XKCZAD , TM4C129XNCZAD

 

  1.   摘要
  2.   商标
  3. 1实现
    1. 1.1 闪存引导加载程序项目
      1. 1.1.1 对示例项目 boot_serial 的变更
        1. 1.1.1.1 对 bl_config.h 的变更
        2. 1.1.1.2 添加的新函数
          1. 1.1.1.2.1 MyCheckUpdateFunc
          2. 1.1.1.2.2 MyReinitFunc
          3. 1.1.1.2.3 MyEndFunc
          4. 1.1.1.2.4 MyDecryptionFunc
    2. 1.2 映像创建项目
    3. 1.3 密钥映像工程
    4. 1.4 EK-TM4C129EXL 示例应用程序项目
    5. 1.5 DK-TM4C129X 示例应用程序项目
    6. 1.6 基于 RAM 的 EEPROM 擦除项目
  4. 2示例走查
    1. 2.1 编译环境
    2. 2.2 将示例导入 Code Composer Studio
    3. 2.3 设置密钥和变量
      1. 2.3.1 密钥
      2. 2.3.2 初始化矢量
      3. 2.3.3 应用程序起始地址和闪存大小
        1. 2.3.3.1 APP_BASE
        2. 2.3.3.2 APP_END
        3. 2.3.3.3 RAM_BASE
    4. 2.4 运行 shared_key_image_encrypt 工具
    5. 2.5 运行共享密钥串行引导加载程序
      1. 2.5.1 对引导加载程序进行编程
        1. 2.5.1.1 擦除现有代码和密钥
          1. 2.5.1.1.1 使用 Code Composer Studio 擦除闪存和 EEPROM
          2. 2.5.1.1.2 使用解锁程序擦除闪存和 EEPROM
        2. 2.5.1.2 使用 ROM 引导加载程序对共享密钥引导加载程序进行编程
      2. 2.5.2 使用共享密钥引导加载程序对应用程序代码进行编程
    6. 2.6 返回引导加载程序
  5. 3总结
MyCheckUpdateFunc

该例程在引导加载程序的开始处调用,确定引导加载程序应运行应用程序代码,还是等待新的映像。它检查以下五个条件:

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