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.

[参考译文] TMS320F28379D:f28379d 远程编程 — 每次下电上电时通过 SCI 引导直接连接至 RAM、无需闪存内核

Guru**** 2905430 points

Other Parts Discussed in Thread: TMS320F28379D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1646465/tms320f28379d-remote-programming-of-f28379d--directly-to-ram-via-sci-boot-every-power-cycle-without-flash-kernel

部件号: TMS320F28379D
主题: C2000WARE 中讨论的其他器件

您好 TI 社区、

我们的定制电路板具有以下架构:
- NXP LPC4088 ARM Cortex-M4 作为主控制器(运行 RT-Thread RTOS)
- TMS320F28379D 作为 DSP
- FPGA 在同一板上

每次下电上电时的引导序列:
1. LPC4088 首先启动
2. LPC4088 通过 串行对 FPGA 进行编程  
3. LPC4088 然后需要加载并运行 DSP 应用程序

DSP 与 LPC4088 的连接:
- GPIO42 (SCITXDA)→LPC4088 UART RX
- GPIO43 (SCIRXDA)→LPC4088 UART TX

引导引脚固定为:
- TRST = 0、GPIO72=0、GPIO84=1(SCI-A 引导模式)

我们的要求:
- DSP 固件将频繁更改
-我们希望 LPC4088 通过 SCI 在每个启动周期加载最新的 DSP 应用程序
-我们希望避免每次启动都进行闪存编程,以防止闪存磨损。

我们的问题:
LPC4088 是否可以使用 SCI 引导加载程序协议(与 hex2000 -boot -a -sci8 输出格式相同)直接将 DSP 应用程序发送到 DSP RAM 中、而根本不使用闪存内核 (F2837xD/sci_flash_kernels_cpu01.txt)?

我们对 TRM 和引导 ROM 文档的理解:
DSP 在 SCI 引导模式下上电
2. DSP BootROM 自动将 GPIO42/43 配置为 SCITXDA/SCIRXDA
3. DSP 发送 0xAA 用于自动波特检测
4、主机以 0xAA 0x08 密钥值进行响应
5.主机发送 16 个保留字节
6.主机发送入口点地址
7、主机发送数据块(块大小+起始地址+数据)
8.主机发送 0x0000 结束标记
9、BootROM 分支到入口点、DSP 开始从 RAM 执行

如果这是正确的、只在我们需要对闪存进行编程时才需要闪存内核、对于我们每次引导加载到 RAM 的用例、我们可以完全跳过内核、直接在 LPC4088 上实现 SCI 引导协议。

其他问题:
1. DSP 上电和接收 0xAA 之间是否有任何时序要求 — BootROM 在超时之前等待多长时间?
DSP 应用程序是否需要任何特殊的链接器配置才能从 RAM 与闪存运行?
3.应用程序的 RAM 大小是否有任何限制—哪些 RAM 区域可以安全地用于通过 SCI 引导加载应用程序?
4.特别是在 F28379D 上使用这种方法时是否有任何新手或已知问题?

我们已经验证:
- COM 端口通信工作(环回测试通过)
-现在我正在尝试使用这个命令闪存,但卡在行:正在下载..

C:\ti\c2000\C2000Ware_1_00_02_00\utilities\flash_programmers\serial_flash_programmer>serial_flash_programr.exe -d f2837xD -k F2837xD_sci_flash_kernels_cpu01.txt -a blinky_cpu01.txt -p COM8 -b 9600

C2000 串行固件升级程序
版权所有 (c) 2013 Texas Instruments Incorporated。  保留所有权利。

正在获取通信状态
建筑通信 DCB
调整端口设置

调用 f021_DownloadKernel CPU1 内核
正在将 F2837xD_sci_flash_kernels_cpu01.txt 下载到器件...

41== 0^C

提前感谢您的帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果正确,则仅在我们想要对闪存进行编程时才需要闪存内核 — 对于我们每次引导加载到 RAM 的用例、我们可以完全跳过内核、直接在 LPC4088 上实现 SCI 引导协议?

    是的、正确。 只有当需要对片上闪存进行编程时、才需要闪存内核。

    [quote userid=“699826“ url=“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1646465/tms320f28379d-remote-programming-of-f28379d--directly-to-ram-via-sci-boot-every-power-cycle-without-flash-kernel DSP 上电和接收 0xAA 之间是否有任何时序要求 — BootROM 在超时之前等待多长时间?

    F2837xD 上没有 SCI 引导超时。 它将在自动波特率锁定模式下等待、直到发送正确的密钥值。

    [quote userid=“699826“ url=“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1646465/tms320f28379d-remote-programming-of-f28379d--directly-to-ram-via-sci-boot-every-power-cycle-without-flash-kernel DSP 应用程序是否需要任何特殊的链接器配置才能从 RAM 与闪存运行?

    我要参考 C2000Ware 中的示例 RAM 链接器命令文件、具体来说: C2000Ware_26_00_00_00\device_support\f2837xd\common\cmd\2837xD_RAM_lnk_cpu1.cmd

    [quote userid=“699826“ url=“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1646465/tms320f28379d-remote-programming-of-f28379d--directly-to-ram-via-sci-boot-every-power-cycle-without-flash-kernel 应用的 RAM 大小是否有任何限制 — 哪些 RAM 区域可以安全地用于通过 SCI 引导加载应用程序?

    唯一的限制 是不将代码加载到驻留在存储器 RAMM0 块中的栈中。 我想不出还有其他限制。

    [quote userid=“699826“ url=“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1646465/tms320f28379d-remote-programming-of-f28379d--directly-to-ram-via-sci-boot-every-power-cycle-without-flash-kernel 特别是在 F28379D 上使用这种方法时存在任何新手或已知问题?

    有时、其他用户会尝试使用不兼容的波特率、该波特率太高、但在这里似乎并非如此(您配置了 9600bps)。

    我会仔细检查您的数据流结构。 具体而言、在步骤 (3) 中、您声明 DSP (F2837xD) 会发送 0xAA。 主机应将 0x08AA 发送至 DSP。 这是自动波特率字符/密钥值。

    此致、
    马特