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修订历史记录

自定义闪存组和扇区擦除

F28P55x MCAN 闪存内核允许用户指定在将应用程序加载到闪存之前应擦除哪些闪存组和闪存扇区。在 flash_kernel_ex4_can_flash_kernel.c 文件中,有四个 32 位无符号整数数组用于控制内核擦除的闪存组和扇区。

    uint32_t Flash_Banks_To_Erase[5] = {0,1,2,3,4};
    uint32_t CMD_WE_Protection_A_Masks[5] = {0,0,0,0,0};
    uint32_t CMD_WE_Protection_B_Masks[5] = {0,0,0,0,0};
    uint32_t CMD_WE_Protection_UO_Masks[5] = {0,0,0,0,0};

在 Flash_Banks_To_Erase 内,应输入闪存组编号。在 CMD_WE_Protection_A_Masks 内,应输入与 Flash_Banks_To_Erase 中每个闪存组的扇区 0-31 相对应的写入/擦除保护掩码。如上所示,每个闪存组的闪存扇区 0-31 将被擦除。在 CMD_WE_Protection_B_Masks 内,应输入与 Flash_Banks_To_Erase 中每个闪存组的扇区 32-127 相对应的写入/擦除保护掩码。如上所示,每个闪存组的闪存扇区 32-127 将被擦除。更多有关这些掩码的信息,请参阅特定于器件的闪存 API 指南。同样,CMD_WE_Protection_UO_Masks 中应填充每个闪存组的 OTP 所需的掩码。请注意,配置该数组不会导致 OTP 被擦除,而是使器件能够在应用程序加载期间对闪存组的 OTP 进行编程。

此外,将应用程序编程到闪存时使用 CMD_WE_Protection_A_Masks 和 CMD_WE_Protection_B_Masks。根据正在编程的数据的目标地址确定正确的掩码。

根据需要配置这些数组后,重新编译闪存内核并生成新的内核映像。