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.

[参考译文] TMS320F28388S:用于 TMS320F28388S 的闪存内核

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1228197/tms320f28388s-flash-kernel-for-tms320f28388s

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

我使用的是器件型号  TMS320F28388S。

任何内核是否能够用于单个 CPU 版本?  

CPU1-CPU2:
C2000Ware_x_x_xx_xx > driverlib >f2838x>examples>C28x_dual>flash_kernel
CPU1-CM:
C2000Ware_x_x_xx_xx > driverlib >f2838x>examples>c28x_cm>flash_kernel

谢谢

Prashant Patil

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

    尊敬的 Prashant:

    您可以使用以下 示例并选择 CPU1

    CPU1-CPU2:
    C2000Ware_x_x_xx_xx > driverlib >f2838x>examples>C28x_dual>flash_kernel

    此致

    Rajeshwarwy

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

    您好、Rajeshwarm:

    感谢您的回复...

    我采用了相同的闪存内核代码并将其添加到了文档中提到的以下行、  

    "${CG_TOOL_HEX}""${BuildArtifactFileName}"-boot -gpio8 -a -o "${BuildArtifactFileBaseName}.txt"

    第一个自动波特锁定到加载内核成功、但第二个自动波特锁定、即"自动波特到发送函数消息"被卡住。 以下日志、了解更多详细信息、

    TX:6、Rx:6、dwRead = 1 count=21438
    Tx:0、Rx:0、dwRead = 1 count=21439
    TX:25、Rx:25、dwRead = 1 count=21440
    TX:76、Rx:76、dwRead = 1 count=21441
    Tx:0、Rx:0、dwRead = 1 count=21442
    TX:6F、Rx:6F、dwRead = 1 count=21443
    Tx:0、Rx:0、dwRead = 1 count=21444
    Tx:0、Rx:0、dwRead = 1 count=21445

    传输的比特率/s 是:1167.216553加载内核成功!
    等待内核引导完成...
    正在尝试自动波特以发送函数消息...

    卡在自动波特锁上的原因是什么?  

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

    尊敬的 Prashant:

    您是否能够将断点放在 f2838x_codestartbranch_cpu1.asm 文件中、并查看内核是否能够长分支到 main? 它如何分支到 main? 这可能是器件卡在自动波特锁定状态的原因、因为在内核由主机编程器加载后、控制权被传输到目标上的内核应用程序。 在向目标发送应用程序消息时、如果内核从未分支到 main、则不会接收到该消息。

    自动波特锁定的另一个可能原因是传输的波特率。 波特率是否设置为标准9600?

    谢谢。此致、

    查理

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

    尊敬的 Charles:

    如果我们从 code composer 或 studio 运行固件升级代码、则可以轻松添加断点、因为代码用于 Linux、添加断点有点困难。
    按照文件中的建议、Buad 费率为9600。

    添加一些更多详细信息、

    我们有两款处理器 TMS32028388S 和 TI Sitara 处理器。
    Linux 在 Sitara 处理器上运行、我们将通过该处理器升级 TMS320、具体情况如下:
    我已针对 Linux 交叉编译了 c2000ware_4_02_00_00代码、并尝试通过 UART/SCI 接口升级 TMS32028388S。


    案例1) TI Sitara 评估板(例如 BeagleBone)和 C2000 F28003x 控制卡
    i)固件升级应用程序代码(移植到 Linux 的 C2000ware 源代码)
    ii)闪存内核
    III) F28003x 的目标应用文件
    通过这种组合、我们验证了固件应用代码并能够从 Sitara 流程升级 F28003x。

    案例2) TI Sitara 评估板(例如 BeagleBone)和 TMS32028388S
    i)固件升级应用代码(移植到 Linux 的 C2000ware 源代码)、在第1种情况下验证相同的情况。
    ii)上述帖子中给出的 f2838x 闪存内核
    III) F28388S 的目标应用文件

    在第2种情况中、我们仅更改了特定于目标板的闪存内核、即 TMS32028388S。
    我们可以加载内核、但它卡在上面提到的第二个自动波特锁上。

    谢谢

    Prashant Patil

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

    我没提到闪存内核代码是根据  Rajeshewary 的建议从以下路径获取的、

      C2000Ware_x_x_xx_xx > driverlib >f2838x>examples>C28x_dual>flash_kernel

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

    尊敬的 Prashant:

    对于情况2需要测试的一些事项、您是否能够使用示波器查看 Sitara 和 F2838之间的 SCI 自动波特? 从而可以看到正在发送什么数据包。  

    此致、
    查理

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

    尊敬的 Charles:

    根据定制电路板上安装的晶体将时钟频率配置到闪存内核源代码中后、可以解决上述问题。  

    现在、我正在进行安全固件升级。

    您能否分享有关如何使用安全内存进行固件升级的更多详细信息?  

    如何检查固件文件的真实性和完整性?

    如何将固件加载到所需的闪存扇区,即默认闪存扇区之外的闪存扇区?

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

    尊敬的 Prashant:  

    1)将需要 查看安全内存固件升级过程,将为您提供详细信息。

    2) 2)您可以通过 对正在发送的数据运行校验和来检查固件文件的完整性。 主机编程器可以做到这一点、但由于您无法在这种情况下使用它、因此您仍需要校验和功能来与 SCI TX/RX 引脚连接。 flash_kernel_ex3_sci_get_function.c 文件中存在一个校验和函数、该函数用于向主机传达文件内容是否符合预期。  

    3)您可以更改  链接器命令文件的各个部分以 加载到不同的闪存组(例如、Flash4而不是 Flash3)

    谢谢。

    查理