ZHCADG6A December   2023  – April 2024 TMS320F2800157 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F28P659DK-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
  5. 2编程基础知识
  6. 3ROM 引导加载程序和十六进制实用程序用法
  7. 4DCAN 闪存内核
    1. 4.1 实施
      1. 4.1.1 自定义闪存组和扇区擦除
      2. 4.1.2 应用程序加载
  8. 5MCAN 闪存内核
    1. 5.1 实施
      1. 5.1.1 自定义闪存组和扇区擦除
      2. 5.1.2 应用程序加载
  9. 6实现示例
    1. 6.1 器件设置
      1. 6.1.1 闪存内核
      2. 6.1.2 硬件
    2. 6.2 主机应用:dcan_flash_programmer
      1. 6.2.1 概述
      2. 6.2.2 使用 Visual Studio 编译和运行 dcan_flash_programmer
      3. 6.2.3 为 F28003x 运行 dcan_flash_programmer
      4. 6.2.4 使用 DCAN 引导加载程序下载工程
      5. 6.2.5 使用 CCS 编译工程
    3. 6.3 主机应用:can_flash_programmer [MCAN]
      1. 6.3.1 概述
      2. 6.3.2 使用 Visual Studio 编译和运行 can_flash_programmer
      3. 6.3.3 为 F28003x 运行 can_flash_programmer
      4. 6.3.4 使用 MCAN 引导加载程序下载工程
      5. 6.3.5 使用 CCS 编译工程
    4. 6.4 应用加载:CPU2 映像
      1. 6.4.1 组合两个映像 (.txt)
  10. 7疑难解答
    1. 7.1 常见问题
    2. 7.2 DCAN 引导
    3. 7.3 MCAN 引导
  11. 8参考资料
  12. 9修订历史记录

应用程序加载

本节介绍使用 MCAN 引导模式将应用程序编程到闪存的整个流程。

要确保器件已准备好进行 MCAN 通信,需要复位器件同时确保引导模式引脚处于正确状态以选择 MCAN 引导模式。随后的步骤如下:

  1. 器件进入 MCAN 引导加载程序并等待接收 RX 消息缓冲器中的消息帧。对于引导加载程序通信,可接受的消息具有 0x1 的 MSGID 值。
  2. 闪存内核以每帧 64 字节数据和 1Mbps(标称比特率)的速度传输到器件。主机编程器将向器件传输帧,直到内核下载完成。
  3. ROM 转移控制权,闪存内核开始执行。从内核必须让器件准备好进行闪存编程到内核准备好开始通信的期间有些许延迟,在此期间内核会配置 PLL 和闪存等待状态等。
    1. 此时,F28P55x 内核将擦除用户指定的闪存组/扇区。
    2. F28P65x 和 F28003x 内核会在稍后擦除闪存。
  4. 内核进入 MCAN 引导模式并等待接收 RX 消息缓冲器中的消息帧。比特率切换 (BRS) 值在工程内进行调整,允许比特率增加到 2Mbps(数据比特率),从而加快应用程序下载。
  5. 主机编程器延迟 5 秒,然后以 2Mbps 和每帧 64 字节的有效负载发送应用程序映像。
  6. 下载过程开始时会读取一个密钥、一些保留字段和应用程序入口点。
    1. 此时,F28P65x 内核开始擦除闪存。擦除闪存可能需要几秒钟,因此请务必注意,虽然看起来应用程序加载可能已失败,但很可能只是闪存被擦除了。
  7. 一旦闪存被擦除,应用程序加载将继续进行,将数据帧传输到应用程序代码块中,并将其编程到闪存中(每次 128 位或 512 位)。
    1. F28P55x 闪存内核一次对 512 位进行编程
    2. F28003x 和 F28P65x 闪存内核一次对 128 位进行编程
      1. 在对数据进行编程之前,F28003x 内核会检查每个闪存扇区以查看其是否已被擦除。如果之前没有擦除该扇区,则会擦除该扇区并对应用程序数据进行编程。
  8. 将一个数据块编程到闪存后,内核继续接收消息以编程下一个数据块。此过程一直持续到整个应用程序已被编程到闪存中为止。

应用程序编程到闪存中后,闪存内核会转到其在应用程序加载过程开始时的入口点来尝试运行应用程序。这需要一次器件复位。