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

运行 shared_key_image_encrypt 工具

在进行第 3.3 节中描述的任何修改后,重新编译项目 shared_key_image_encryptkey_imageDebug 配置。然后,重新编译项目 shared_key_boot_serialDebug_wKey 配置。调试版配置不会锁定 JTAG,可以在开发期间使用它。发布版配置将锁定 JTAG,且应当用于共享密钥引导加载程序的生产版本。

  1. 使用 USB 电缆将 EK-TM4C129EXL LaunchPad 开发套件从 LaunchPad 的 DEBUG 端口连接到 PC 上的 USB 端口,启动 shared_key_image_encrypt 项目。这可以通过在 Project Explorer 窗口中突出显示该项目,然后点击图 2-5 中的黄色调试图标来完成。
    GUID-20211209-SS0I-BWRB-5RPS-RPWHJQ3XCFKB-low.png图 2-5 执行 shared_key_image_encrypt 程序
  2. 确定串行端口已由 PC 分配给 LaunchPad 的虚拟串行端口。这可以通过在 PC 上运行器件管理器找到。在图 2-6 中,LaunchPad 被分配给了 COM19。
    GUID-20211209-SS0I-XRSD-G7VT-WKZ5KBK6514B-low.png图 2-6 识别 COM 端口
  3. 打开支持 XMODEM 通信的终端仿真器。本例中使用了“Tera Term”。通过串行连接到 LaunchPad 的已识别的 COM 端口。
    GUID-20211209-SS0I-1CMR-Q11H-PFVM21RKWTSZ-low.png图 2-7 在 Tera Term 中选择 COM 端口
  4. 将终端仿真器配置为使用 460800 波特、8 位数据、1 个停止位和无奇偶校验的串行端口。
    GUID-20211209-SS0I-TLN9-ZDVP-TGGN14GKFK3X-low.png图 2-8 在 Tera Term 中配置 COM 端口
  5. 通过点击 Code Composer Studio 中的绿色箭头或按 F8 来执行 shared_key_image_encrypt 程序。
    GUID-20211209-SS0I-KQ03-F7NP-S7X9NBD3RDML-low.png图 2-9 执行 shared_key_image_encrypt 程序
  6. 现在终端上应显示以下菜单。
    GUID-20211209-SS0I-XQDQ-93GG-7L3GWCHMFTK4-low.png图 2-10 shared_key_image_encrypt 命令菜单
  7. 要创建由引导加载程序使用的签名和加密映像,请执行以下步骤:
    1. 使用 XMODEM 协议,将文件 key_image.bin 从项目 key_image 的调试子目录传输到器件上。按如下步骤使用 Tera Term:
      1. 在终端仿真器中键入 K(不区分大小写)。
      2. 选择“File”->“Transfer”->“XMODEM”->“Send”。
      3. 浏览到 key_image\Debug\key_image.bin,然后选择“Open”。
        GUID-20211209-SS0I-DTSL-6GBB-PP15VRP4VQDC-low.png图 2-11 加载密钥映像
      4. 终端现在应显示 Keys successfully programmed into EEPROM
        GUID-20211214-SS0I-NQX8-DPBP-DDV6CGSP1XFV-low.png图 2-12 已成功加载密钥
    2. 将应用程序映像传输到器件中。按如下步骤使用 Tera Term:
      1. 在终端仿真器中键入 L。
      2. 选择“File”->“Transfer”->“XMODEM”->“Send”。
      3. 浏览到 shared_key_boot_demo\Debug\shared_key_boot_demo.bin,然后选择“Open”。

      对于一个完整的 1MB 闪存器件,传输最多可能需要一分钟。完成后,终端上将显示消息 File programming complete

      GUID-20211209-SS0I-Q79C-QGQK-572PL65DXW9N-low.png图 2-13 加载程序映像
    3. 输出二进制映像的签名和加密版本。按如下步骤使用 Tera Term:
      1. 在终端仿真器中键入 O。
      2. 选择“File”->“Transfer”->“XMODEM”->“Receive”。
      3. 选择一个输出文件名,例如:

        shared_key_boot_demo\Debug\shared_key_boot_demo_encrypted.bin,然后选择“Save”。

    4. 或者,可以通过以下方式,根据存储在闪存中的未加密映像验证刚刚创建的加密文件:
      1. 在终端仿真器中键入 V。
      2. 选择“File”->“Transfer”->“XMODEM”->“Send”。
      3. 浏览到 shared_key_boot_demo\Debug\shared_key_boot_demo_encrypted.bin,然后选择“Open”。
      4. 对于一个完整的 1MB 闪存器件,传输大约需要一分钟。完成后,如果加密文件的哈希值验证成功,终端会显示消息 File verification complete
        GUID-20211209-SS0I-99MV-CDB6-1GNXXPVPBNM6-low.png图 2-14 验证程序映像
    5. 或者,可以通过以下方式执行已编程到器件中的应用程序代码:
      1. 在终端仿真器中键入 X。
      2. 终端上将显示消息 Hash value authenticated,LaunchPad 上的 LED D1 将闪烁。
      3. 使用 Code Composer Studio 或 LaunchPad 上的重置按钮重置 LaunchPad,终端将指示程序返回 shared_key_image_encrypt 工具。