This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28379S:使用 DCSM 工程或使用 EMU_BOOTCTRL 启动 SPI 引导时在 X1_BOOTCTRL 中对 BMODE 进行编程会出现问题

Guru**** 2347070 points
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1326311/tms320f28379s-issues-with-programming-bmode-in-x1_bootctrl-using-dcsm-project-or-using-emu_bootctrl-to-kick-off-a-spi-boot

器件型号:TMS320F28379S
主题中讨论的其他器件:C2000WARESysConfig

我在通过 DCSM 写入 X1_BOOTCTRL 时遇到问题。 在整理有关该问题的文件后,似乎最可能起作用的方法是:

1.在 c2000Ware 支持中导入 f2837xs 的"blinky_with_dcsm"示例工程

2.在"blinky_with_dcsm_cpu01.c"文件中添加下面的 main()

#pragma RETAIN(otp_z1_bootctrl)
#pragma DATA_SECTION(otp_z1_bootctrl,"dcsm_otp_z1_bootctrl");
const long otp_z1_bootctrl = 0xFFFF045A;

3.通过 JTAG 调试会话编译和部署项目。  

我可以看到值保留在存储器映射中、但我看不到结果存储在存储器映射中的 Z1_BOOTCTRL 寄存器中(通过各种运行和复位应用程序的方法)。

DCSM_OTP_Z1_BOOTCTRL
*       0   0007801c   00000002   DSECT
          0007801c   00000002   blinky_cpu01.obj (dcsm_otp_z1_bootctrl:retain)

 在使用存储器浏览器进行查看时、0x0005F004处的值保持为0xFFFFFFFF。 此外、我还无法在内存浏览器中直接编辑此值、这是在一些论坛帖子中推荐的。

无法写入 Z1_BOOTCTRL 寄存器后、我决定尝试使用 EMU_BOOTCTRL 解决该问题。 我能够使用0x045A 编辑0x0D00位置、但是 每次尝试从 CCS 启动 CPU 复位时、我都会运行到一个断点。 我没有注意到系统复位或重启命令产生的任何影响-闪烁应用程序继续执行、就像没有中断一样。

 复位时的消息为:

(已暂停- SW 断点-目标上发生了复位)

我无法使应用程序运行超过这一点。

请注意、我们分别使用默认的 GPIO 引脚84和引脚72将 BOOTPIN0和 BOOTPIN1引脚配置为获取模式(均为高电平)。

是否有关于在 F28379S 上尝试启用 SPI 引导的任何指导或支持、可提供有关该问题的一些指导或支持?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好! 是否有关于此问题的任何更新?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    Unknown 说:
    在 使用内存浏览器查看时、0x0005F004处的值仍然为0xFFFFFFFF。 我也无法在内存浏览器中直接编辑此值、这是在一些论坛帖子中推荐的。

    您需要从该文件中删除 DSECT 属性、否则将无法对其进行编程。 我们还提供了安全工具、可生成所需的配置以避免此类问题。 有关 使用此工具的信息、请参阅此应用报告。  

    [quote userid="552013" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1326311/tms320f28379s-issues-with-programming-bmode-in-x1_bootctrl-using-dcsm-project-or-using-emu_bootctrl-to-kick-off-a-spi-boot 无法写入 Z1_BOOTCTRL 寄存器后、我决定尝试使用 EMU_BOOTCTRL 解决这个问题。 我能够使用0x045A 编辑0x0D00位置、但是 每次尝试从 CCS 启动 CPU 复位时、我都会运行到一个断点。 我没有注意到系统重置或重启命令的任何影响-闪烁的应用程序继续执行,就像没有中断一样。

    请确认您从 CCS 发出复位后点击运行。 如果您正在使用重新启动、则无法正常运行。

    此致、

    维维克·辛格  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我曾尝试使用应用报告中提到的 DCSM 工具、但它似乎不支持我们的器件。 我在尝试打开与处理器的闪烁工程示例关联的 dcsm_security_tool.syscfg 时收到以下错误消息:

     未找到器件:F28X7X。 此器件可能在较新版本的 SysConfig 中提供

    我们的器件是 F28379S。

    如果我们继续克服错误、将打开正常的 SysConfig 工具、而不是应用手册中所述的特殊 GUI 界面。 超过这一点后、我无法继续执行 DCSM 工具工作流程。

    该应用手册中提到了以下先决条件:

    • 对于 F2838x 器件、需要 C2000WARE 版本3.04.00.00及更高版本(我们有4.03.00.00)
    • C2000 DCSM 安全工具是一种基于 SysConfig 的工具、需要 CCS 9.2或更高版本(我们有12.1.0)

    因此、根据应用手册、我们应实现合规性。

    作为替代方案、您提到了删除 DSECT 属性应该会允许对寄存器进行编程。 我现在了解了 blinky 项目尝试执行的操作、并从连接器文件中删除了 Z1寄存器的属性(在2837xS_DCSM_lnk_cpu1.cmd 中)、并取消添加 DCSM_Z1_ZoneSelectBlock.asm 中的值的注释。 不幸的是、寄存器仍然没有体现我尝试编程的值:

    .sect "dcsm_otp_z1_bootctrl"
    .long 0xFFFFFFFF ;Reserved
    .long 0xFFFF045A ;Z1-BOOTCTRL

    对于下一步该怎么做有什么想法? 我更喜欢使用此工具、但无法解决上述错误。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jeremy:

    向 blinky_with_dcsm 等位域示例添加.syscfg 文件将不起作用、因为 SysConfig 是在 driverlib 之上构建的。 您可以改用以下步骤吗?

    • 从 device_support/f2837xs/examples/cpu1/empty_project 文件夹中导入 emtpy_bitfield_driverlib_project
    • 右键点击您的项目以添加一个新文件。 可以随意调用、但确保其具有.syscfg 文件扩展名。
    • CCS 应询问您是否要启用 SysConfig 支持、点击是
    • 在"Project Properties"->"Build"->"SysConfig"->"Basic Options"中、在"--device"字段中输入"F2837xS"。
    • 双击您的.syscfg 文件。 在左侧选项卡上向下滚动、直到看到 DCSM、然后添加 DCSM 模块的一个实例

    在这里、您会看到一个与 Vivek 应用手册中描述的 GUI 非常相似的 GUI。 我们在各个器件之间添加了新的 DCSM 功能、因此 GUI 不会完全相同、但相同的概念仍然适用。

    您在不使用 DCSM 工具的情况下尝试的方法似乎正确。 您可以在存储器浏览器中查看0x7801C - 0x7801F 吗? 是否仍然是所有 F 部分? 引导 ROM 应将在此字段编程的值加载到 Z1_BOOTCTRL 寄存器中。

    使用 DCSM 工具进行编程是否可以解决此问题?

    谢谢!

    卢克