ZHCADG6A December 2023 – April 2024 TMS320F2800157 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F28P659DK-Q1
器件启动之初,器件引导,并根据引导模式决定是执行已编程到闪存存储器中的代码还是使用某个 ROM 加载程序加载代码。本应用手册重点介绍未连接仿真器 (CCS) 时的引导执行路径。
引导模式 | GPIO24(默认引导模式选择引脚 1) | GPIO32(默认引导模式选择引脚 0) |
---|---|---|
并行 I/O | 0 | 0 |
SCI/等待引导 | 0 | 1 |
CAN | 1 | 0 |
闪存 | 1 | 1 |
在引导 ROM 准备好使用的器件后,它决定应该从哪里开始执行(闪存或引导 ROM)。如果是独立启动,它通过检查两个 GPIO(如表 3-1 中所示,默认选择是 GPIO 24 和 32)的状态来实现此目的。在某些情况下,可以检查编程到一次性可编程 (OTP) 存储器中的两个值。本应用手册所述的实现使用了 CAN 和 MCAN 加载程序,因此在上电时 GPIO 32 必须强制为低电平,GPIO 24 必须强制为高电平。如果器件引导时出现这种情况,ROM 中的 CAN 加载程序将开始执行并等待从主机接收数据。
对于 CAN 引导模式 (DCAN),GPIO 分配的引导表由表 3-2 定义。表 3-3 展示了 MCAN 引导选项。请注意,DCAN 和 MCAN 的引导选项使用相同的 GPIO 分配来选择引导定义值。常见的 GPIO 对是 GPIO4 和 GPIO5,以及 GPIO13 和 GPIO12。如需更多信息,请查看特定于器件的 TRM 中的引导选项。
选项 | BOOTDEF 值 | CANTXA GPIO | CANRXA GPIO |
---|---|---|---|
0(默认值) | 0x02 | GPIO4 | GPIO5 |
1 | 0x22 | GPIO32 | GPIO33 |
2 | 0x42 | GPIO2 | GPIO3 |
3 | 0x62 | GPIO13 | GPIO12 |
选项 | BOOTDEFx 值 | CANTXA GPIO | CANRXA GPIO |
---|---|---|---|
0 | 0x08 | GPIO4 | GPIO5 |
1 | 0x28 | GPIO1 | GPIO0 |
2 | 0x48 | GPIO13 | GPIO12 |
ROM 加载程序要求以特定结构向其提供数据。该结构对所有 ROM 加载程序都是通用的,[6] 中的引导加载程序数据流结构 一节对此进行了详细介绍。您可以使用 TI C2000 编译器随附的 hex2000 实用程序,轻松生成这种格式的应用程序。通过添加具有以下选项的编译后处理步骤,甚至可以在 Code Composer Studio 编译过程中生成此文件格式:
"${CG_TOOL_HEX}" "${BuildArtifactFileName}" -boot -sci8 -a -o "${BuildArtifactFileBaseName}.txt"
或者,您可以使用 TI hex2000 实用程序将 COFF 和 EABI .out 文件转换为正确的十六进制格式引导文件。为此,您需要在“Project Properties”下启用 C2000 Hex Utility。具体命令如下:
hex2000.exe -boot -sci8 -a -o <file.txt> <file.out>
如前所述,ROM 加载程序只能将代码加载到 RAM 中,因此会将其加载到闪存内核中,这将在 DCAN 闪存内核和 MCAN 闪存内核小节介绍。
闪存内核期望固件映像采用相同的格式,因此上面的命令也可用于生成固件映像十六进制文件。
MCAN ROM 引导加载程序有三个引导选项,每个选项都映射到不同的 GPIO 引脚,用于 MCANRX 和 MCANTX 功能。为了将器件配置为 MCAN 引导模式,需要对器件的 OTP 进行编程以包括 MCAN 引导。有关如何对一次性可编程 (OTP) 进行编程的更多详细信息,请参阅 TMS320F28003x 实时微控制器技术参考手册 (TRM) 的引导 ROM 一章。