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:SCI 引导加载程序上传代码和放大器需要~5分钟;在定制 PCB 上的波特率超过38400时失败

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1510925/tms320f28379s-sci-bootloader-takes-5-mins-to-upload-code-fails-above-38400-baud-on-a-custom-pcb

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

工具/软件:

尊敬的 TI 团队:

我将在定制 PCB 上使用 TMS320F28379S、并将器件配置为通过启动 使用引导选择引脚的 SCI 引导模式 。 虽然引导加载程序可以正常工作、但确实如此 非常慢 —几乎需要花费时间 5分钟 上传固件。 此外、引导加载过程 波特率高于38400时失败

以下是设置详细信息:

  • 控制器 :TMS320F28379S (在定制 PCB 上)

  • 启动模式 :通过引导引脚设置为 SCI 模式。

  • SCI 刷写工具 :serial_flash_programmer.exe来自 C2000Ware

  • 使用的引导加载程序示例 F2837xS_SCI_Flash_Kernel

  • 测试的波特率

    • White check mark 9600→工作

    • White check mark 38400→工程

    • X 57600→失败

    • X 115200 μ s→

  • 上传时间为38400 :~5分钟~50 KB 固件

  • BMSP 的 GPIO 重映射  

    • GPIO72

    • GPIO73
      (默认为 GPIO72和 GPIO84 -更改反映在 OTP 存储器中)

  • 外部振荡器 : 16 MHz 水晶

  • 应用中的 PLL 配置 :200 MHz 系统时钟

  • 相匹配 :使用 USB-A 转 USB-C 电缆将 PC 连接到定制 PCB。 从 USB-C 端口进行连接 FT232 USB 转 UART IC 、它与 TMS320F28379S 控制器连接。

我的问题:

  1. TI 建议的方法可以实现 加快速度 SCI 引导加载或替代更快的引导模式?

  2. 哪个时钟源和频率可以执行 ROM SCI 引导加载程序 在引导过程中使用?

  3. 是否存在已知的波特率限制 默认 SCI 引导加载程序 在 ROM 中?

  4. 为什么尽管应用中有正确的 PLL、SCI 引导加载在57600和115200下仍然失败?

  5. 是否可以配置或覆盖 ROM 引导加载程序以支持这些功能 更高的波特率 (例如115200)来减少刷写时间?

感谢任何见解或建议—谢谢!

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

    您好:

    1.在 Windows 上从 COM 端口读取数据时会产生很大的开销(每次读取端口时~30ms)。 由于 bootROM 传输的逐字节性质、此开销会迅速增加。 可以做很多工作来加快 ROM 加载过程、但您可以修改 SCI 闪存内核/主机、从而不需要将每个单字节都从目标回显到主机。 或者、您可以使用另一个 MCU 作为主机、而不是主机 PC。

    2.使用 INTOSC2、10MHz 运行 SCI 引导模式。

    3、电缆和收发器的质量对 SCI 通信的稳定性起着重要作用。 您是否 使用较短的电缆或替代收发器观察到了同样的不稳定情况?

    4.见#3.

    5.不, ROM 引导加载程序使用自动波特率配置。 您可以尝试手动提高闪存内核的波特率、而不是使用自动波特率、但我仍然建议实现一些其他类型的握手来验证通信是否成功。

    此致、

    Skyler

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

    您好、Skyler、

    感谢您的回应—这对理解 SCI 引导加载速度缓慢的原因非常有帮助。

    作为跟进、我计划实施您对的建议 修改 SCI 闪存内核和主机工具 为了避免等待每个字节的回波、而是在较大的块中发送数据。

    请提供:

    1. 不限 参考文档、示例或指南 介绍了如何修改这两款器件 闪存内核 serial_flash_programmer.exe主机工具 基于块的传输?

    2. 具体来说、我应该在 C2000Ware 内核和 PC 工具代码的哪个位置应用更改?

    3. 进行此修改后、执行了什么操作 ~50kB 代码的预期刷写时间 38400和9600?

    我的主要目标是从开始缩短刷写时间 ~5分钟到1分钟以下 理想情况下 30秒 、使用 PC 作为主机。

    此外、如果事实证明此方法无法在1分钟内可靠地实现闪烁、您可以建议使用 最佳实践或替代引导方法(例如 SPI、CAN 或使用其他 MCU) 要在生产或现场更新环境中实现更快的刷写速度? 但我更喜欢使用 PC 作为主机。

    再次感谢您的支持。 请做必要的事情。

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

    您好:

    1.很遗憾,我们没有任何文档可以引导您完成这些修改。 概括来说、此处的门控实现是主机编程器期望其发送的每个字节都由目标器件回显。 除非成功接收到回显、否则它不会发送下一个字节。 您可以从主机中删除此功能、而不是使用基于校验和的回显方法。  

    2. 需要更新的 C2000ware 内核的主要函数是 SCIA_GetWordData()函数。 在主机端、需要更新 f021_DownloadImage ()函数。

    3.这取决于您的实现和收发器。  

    一般来说、CAN 会更快、最高可达1Mbps、并且收发器之间的差异更小。

    此致、

    Skyler

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

    您好、Skyler、

    正如您所提到的、我正在考虑修改、我对您所提到的内核文件有一些清晰的了解、但我如何修改 serial_flash_programr.exe 文件您可以提供有关这方面的见解  

    平均时间、我会更新代码修改进度。 如有任何疑问、请予以支持。

    您能否提供任何有关使用 CAN 实现引导加载程序的文档

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

    尊敬的 Rajamurugan:

    您可以 通过在 Microsoft Visual Studio 中打开 C2000ware 工程来修改 serial_flash_programr.exe 的源代码:

    C2000Ware_5_04_00_00\utilities\flash_programmers\serial_flash_programmer\serial_flash_programmer.sln

    以下应用手册中提供了有关 CAN 解决方案的参考文档:

     https://www.ti.com/lit/an/sprad51a/sprad51a.pdf

    需要注意的是、此器件将遵循 DCAN 实现、并且与修改串行闪存编程器源代码的能力类似、也可以在此处修改此程序的源代码:

    C2000Ware_5_04_00_00\utilities\flash_programmers\dcan_flash_programmer\dcan_flash_programmer.sln

    谢谢。此致、

    Charles