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.

[参考译文] LAUNCHXL-F280049C:使用 serial_flash_programmer 后卡在引导 ROM 中

Guru**** 2522770 points
Other Parts Discussed in Thread: LAUNCHXL-F280049C, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1184508/launchxl-f280049c-stuck-in-boot-rom-after-using-serial_flash_programmer

器件型号:LAUNCHXL-F280049C
主题中讨论的其他器件: C2000WARE

大家好、我一直在尝试使用 LAUNCHXL-F280049C 根据 SPRABV4E 测试 SCI ROM 引导加载程序和 sci 闪存内核的使用。

到目前为止、我已经能够使用 serial_flash_programmer 应用程序完成将运行时应用程序(闪烁项目)写入闪存的过程。  但是、我发现 、根据 serial_flash_programr.exe 的终止方式、目标 MCU 似乎卡在引导 ROM 中。

在我正在开发的应用中、我假设操作 XRSn 和引导模式引脚(GPIO24和 GPIO32)将保证我可以进入 SCI ROM 引导加载程序并将新应用加载到闪存中。 但我在这里看到的是、事实并非如此、这是一个无法解决的问题。 或者 XDS110可能出现故障。 我不确定如何继续解决问题。

我提出 了一组重现行为的步骤。 它不是完全可重现的、但似乎至少在一半的时间发生。

初始时、launchpad 在其闪存中加载了闪烁。 OTP 根本没有被修改。 GPIO24由 DIP 开关 S2拉低

2. 通过 USB 将 Launchpad 插入主机

3.执行"serial_flash_programr.exe -d f28004x -k flashapi_ex2_sci_kernel.txt -a led_ex1_blinky_new.txt -p COM10 -b 38400 -v"。 等待内核加载并进入命令菜单

4. 用  Ctrl+c 终止 serial_flash_programmer

5.按 XRSn 开关复位目标 MCU。 这将导致 MCU 启动 SCI ROM 引导加载程序

6.使用 与之前相同的命令运行 serial_flash_programmer。 现在 、它卡在"发送'A'到目标位置、等待它回送..."。

7.使用  Ctrl+c 终止 serial_flash_programmer

8.  使用与之前相同的命令再次运行 serial_flash_programmer。  这一次看起来有点远、但在回显一个或两个字符后、它再次停止。 我注意到的一件有趣的事情是、同时、当我的 LED 在 launchpad 上开始闪烁时、我的闪烁应用程序看起来会执行。 下面的屏幕截图显示了到目前为止的命令行活动:

9.继续尝试运行 serial_flash_programmer 失败(因为 MCU 运行时闪烁)

10.我用 XRSn 开关复位目标。 我观察到 LED 不再闪烁、指示它在引导 ROM 中、这是它应该的状态。

11.  使用与之前相同的命令再次运行 serial_flash_programmer。 它以与以前类似的方式挂起。

12.终止并运行 serial_flash_programmer。 同样、在第二次挂起时、我的闪烁应用程序开始运行。

此时、再次加载 sci 闪存内核的唯一方法是循环 USB 连接、这会使 launchpad 上的目标 MCU 和 XDS110调试工具冷复位。

我已经为闪存内核和 blinky 附加了 txt 文件。  serial_flash_programr.exe 和 flashapi_ex2_sci_kernel.txt 是 c2000ware 附带的原始文件。  led_ex1_blinky_new.txt 是根据 c2000ware 中的 led_ex1_blinky 项目构建的。 我对项目所做的唯一修改是将 DEVICE_GPIO_PIN_LED1从5更改为23、以便使用 launchpad 上的 LED。

e2e.ti.com/.../led_5F00_ex1_5F00_blinky_5F00_new.txte2e.ti.com/.../flashapi_5F00_ex2_5F00_sci_5F00_kernel.txt

此致、

Mike

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

    尊敬的 Mike:

    我在 SCI 闪存内核专家处寻求帮助、以解决该问题。

    此致、

    Pawan

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

    好的、站在那里。

    与此同时、我已经尝试研究了调试器的工作情况:

    1、将 GPIO24拉至开关 S2的低电平、于是我进入 SCI 引导 ROM

    2.将 LaunchPad 的 USB 电缆连接到我的笔记本电脑、从而为其加电

    3.使用调试器连接到目标(我使用不带 GEL 文件的调试配置、设置为仅加载符号、因此它不应影响目标、除非在调试器连接时停止)。 调试器连接后、我看到 CPU 在这个反汇编中暂停:

    这是非常令人困惑的、AFAIK 这个内存区域甚至不在器件数据表(闪存、RAM、或者引导 ROM)的内存映射表中。 但那里有代码。 它从0x0706df 连续分支回0x0706dc。

    4.我从 C:\ti\c2000\C2000Ware_4_02_00_00\libraries\boot_rom\f28004x\revB\rom_sources\CCS_files\CPU\Release\ F28004x_ROM_PG2.0_2_7_17.out 加载引导 ROM 的符号。 这不会改变任何内容、至少不会改变此存储器范围。 但是、如果我查看我希望引导 ROM 处于的范围、我会看到一些函数名称显示在反汇编窗口中、如下所示:

    5.在此状态下,我使用与上述相同的命令执行 serial_flash_programmer。 奇怪的是、它可以正常工作、我最终得到了 sci 闪存内核命令的提示符。

    6.我用 Ctrl+C 终止 serial_flash_programmer

    7.我用 XRSn 开关复位目标。 我的调试器在存储器的引导 ROM 部分中的 ESTOP0指令处立即停止。 请参阅以下内容:

    一旦我到达那里、我就卡住了。 即使是单步执行也不会前进、我猜这在调试时、当 ESTOP0命中时是正常的。 不幸的是、"Disassembly"视图没有显示足够的信息来告诉我如何在这里结束、即使加载了符号也是如此。

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

    尊敬的 Mike:

    您能否检查并查看电路板的 device.h 文件是否使用正确的引脚进行 SCI 通信? 我需要更多的时间来回答您的问题、但我将在周一之前回复您。

    谢谢、

    查尔斯

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

    您好、Charles、

    我正在使用来自 C2000Ware_4_02_00_00\utilities\fash_programmers\serial_flash_programmer\f28004x_fw_upgrade_example\的 flashapi_ex2_sci_kernel.txt 文件。 我没有编译该代码、并且十六进制文件中未包含该代码所基于的工程和源代码(我假设 c2000ware 中的某个位置有该代码的版本)。 在任何情况下、可以放心地假设它被配置为使用正确的 SCI 引脚、否则我将永远无法与内核正确通信、对吧?

    此致、

    Mike

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

    尊敬的 Mike:  

    在 launchpad 上以38400波特测试您的文件后、我的末端运行正常 您是否在连接到设备后立即尝试启动命令过程?

    此外、您是否尝试使用 CCS 构建 repo? 我使用 位于 C:\ti\c2000\C2000Ware_4_02_00_00\driverlib\f28004x\examples\flash 的工程构建了 SCI 闪存内核。 以下是一些要测试的示例文件(LED 的器件 GPIO 引脚按原样保留):  

    e2e.ti.com/.../2021.flashapi_5F00_ex2_5F00_sci_5F00_kernel.txte2e.ti.com/.../5270.led_5F00_ex1_5F00_blinky.txt

    如果您有任何其他问题、他们将会看到。

    谢谢、

    查尔斯

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

    您好、Charles、

    我使用十六进制文件尝试了相同的步骤。 总体而言、我观察到相同的行为。 我可以将您的闪烁程序加载到闪存中并运行它、但在重置并尝试运行整个过程后、通常会以与以前相同的方式挂起。

    为了澄清一点、我 一直在使用 XDS110的用户 UART 端口进行串行通信。 我想知道、这是否是问题发生的地方、而不是在目标器件中。 这可能解释了为什么 XRSn 不能解决这个问题(因为 XRSn 不会复位 XDS110)、但是整个电路板上电周期也可以解决这个问题。

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

    尊敬的 Mike:

    用于串行通信的 UART 在每次连接设备(其他设备可能声称该端口)时是否使用相同的端口? 当您在 CCS 中时、测试连接是否正在进行?

    我只能认为 COM 端口上还有其他设备占用相同的空间。 如果我找到一些东西、会告诉您。 如果需要、我们可以调用它。

    谢谢、

    查尔斯

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

    通常、除了来自 Launchpad 的两个 COM 端口外、我没有任何 COM 端口、请参阅下面的内容。 我只从一台笔记本电脑尝试过此操作、COM 端口号一直保持一致:

    我已经看到、如果指定了错误的端口、serial_flash_programmer 会返回错误消息、使其变得显而易见。 但是、在我得到这种挂起行为之前、它似乎总是开始与 XDS110通信、显示"Getting Comm state"、"Bbuilding Comm DCB "、"ading port settings"消息。 如果 COM 端口选择错误、我认为不会得到这么远的结果。

    今天、我还尝试使用示波器在挂起条件下观察 SCI 活动。 但是、每当我将探针连接到目标的 RXD 信号(通过跳线 J101)时、我都无法再出现挂起行为。 取下探头尖端、然后它开始再次悬挂。 将示波器的接地端连接到 launchpad 似乎没有任何效果。 不知道该怎么做。

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

    尊敬的 Mike:

    您知道器件的当前版本吗? 它应该列在 C28侧芯片上。

    谢谢、

    查尔斯

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

    您好、Charles、

    下面是 LaunchPad 上目标器件的顶部图片:

    此致、

    Mike

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

    尊敬的 Mike:

    在器件的勘误表中、它表示 SCI 波特率寄存器在 SCILBAUD 和 SCIHBAUD 之间分开、并且 ROM SCI 引导加载程序在执行之前期望值为0。 权变措施是在调用 ROM SCI 引导加载程序(https://www.ti.com/lit/er/sprz439g/sprz439g.pdf)之前将 SCIHBAUD 清零

    为了确保这一点、我已经添加了一个我正在使用的器件的图像、并为 SCI 设置了相应的开关。

     

    此致、

    查尔斯