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总结

密钥

密钥在 key_image 目录的 key_image.asm 文件中定义。该文件在 key_image 项目中使用,也通过 shared_key_boot_serial 示例项目中的链接使用。

 .sect ".keyimage"
 .global key
key
; Encryption/Decryption Key 0
     .word 0x3ed44417, 0x8d849ffc, 0x4719e4dc, 0x71583965
     .word 0x84b6ba7d, 0xa96ff68a, 0xb79d9da8, 0x5f747e02
; Authentication Key 0
     .word 0xf74e59bf, 0xd19cd4e1, 0x630303f8, 0xe5bb8089
     .word 0x0e3bc945, 0xffc85239, 0x53289e9c, 0x5f906df8
; Encryption/Decryption Key 1
     .word 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
     .word 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
; Authentication Key 1
     .word 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
     .word 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF

从代码中可以看出,实际上定义了四个 256 位密钥。第一个密钥用于加密/解密。 第二个密钥用于身份验证。最后两个密钥当前未使用。

对于初始评估和开发,可以使用本例中给出的密钥,但对于真实项目,则需要更改这些密钥并在安全的位置保密。