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.

[参考译文] TMS320F28375D:TMS320F28375D:SCI 引导模式(FMSTAT 寄存器内容:01010)

Guru**** 2430620 points
Other Parts Discussed in Thread: C2000WARE, TMS320F28375D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1459066/tms320f28375d-tms320f28375d-sci-boot-mode-fmstat-register-contents-01010

器件型号:TMS320F28375D
主题中讨论的其他器件:C2000WAREash

工具与软件:

尊敬的专家:

 我遇到这个问题已经几个星期了,不能解决它。 请举手示意一下。
CCS 版本:12.5.0.00007
使用的示例:C:\ti\c2000\C2000Ware_5_00_00_00\utilities\flash_programmers\serial_flash_programmer\serial_flash_programr.exe

             C:\ti\c2000\C2000Ware_5_00_00_00\utilities\flash_programmers\serial_flash_programmer\F2837xD_sci_flash_kernels_cpu01.txt

             C:\ti\c2000\C2000Ware_5_00_00_00\utilities\flash_programmers\serial_flash_programmer\f2837xD_FW_upgrade_example\blinky_dc_cpu01.txt

我 使用 cmd 工具打开"serial_flash_programmer.exe"、并使用命令"serial_flash_programr.exe -d f2837xD -k F2837xD_sci_flash_kernels_cpu01.txt -a blinky_dc_cpu01.txt -b 9600 -p COM9"

我将引导 ROM 代码(SCI 引导)移到了我的项目中、闪存内核成功传输、但应用 程序失败。

FMSTAT 寄存器内容:01010.

我做了另一个实验、 在相同的环境下、 我自己的代码也使用上述方法失败、但是我使用工具 C2progV2.1成功烧录了 SCI 模式。

我认为这两种方法之间存在差异: "serial_flash_programmer.exe"是使用".txt"代码、此代码由"hex2000.exe"二进制;"C2progV2.1"是使用".hex"代码。

我不知道这两种写作风格的区别是什么, 我只知道相同的环境,是 SCI 模式刻录,一个可以成功,一个不能成功。

我认为硬件概率没有问题、我渴望得到一个解决方案:使用"serial_flash_programmer.exe"完成 SCI 模式烧录、解决错误"FMSTAT 寄存器内容:01010"

请给我一些建议。

Xiao

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

    Xiao、

    据我了解、您已经将 SCI 示例代码移植到您自己的工程中。 是否对此对内核进行了任何修改?

    FMSTAT 内容指示验证错误。 您能否检查 错误地址处的闪存内容以查看它们是否被正确编程?

    此致!

    Alex

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

    Alex、

    我的验证方法分为两个部分;首先、确保代码尽可能正确、因此我没有更改任何代码、我使用了 TI C2000Ware 代码、内核路径:C:\ti\c2000\C2000Ware_5_00_00\utilities\flash_programmers\serial_flash_programmer 代码路径:C:\ti\c2000\C2000Ware_5_00_00_00\dssky\c2000\device_00\device_v2\device_programmers 、验证所使用的代码是否正确、代码示例是否为正确、

    MCU LED 闪烁。 然后,我使用  serial_flash_programr.exe , SCI 模式失败,提示 错误"FMSTAT 寄存器内容:01010"。

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

    其次、 我想验证 TMS320F28375D 硬件是否良好、因此我使用了相同的闪烁代码演示、代码路径:C:\ti\c2000\C2000Ware_5_00_00_00\device_support\f2837xd\examples\cpu1\progky、但   我使用了另一个软件 C2320V2.1、它有 tmsf28375d sci 模式、我在硬件没有问题下成功烧录 TMS320F2837xd\examples\cpu1\progky、并且我在硬件未发现硬件问题。

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

    因此、我已尝试确保代码和硬件正确、但仍然失败、错误"FMSTAT 寄存器内容:01010"

    此致!

    Xiao

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

    Xiao、

    您能否共享确切的内核和应用程序.txt 文件? 我目前无法在我的终端上复制此内容

    此致!

    Alex

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

    Alex、

    这些是 内核和 app '.txt'文件。

    此致!

    Xiao

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

    Xiao、

    我还在研究这个问题。 您的器件上是否修改了 OTP?

    此致!

    Alex

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

    Xiao、

    我已经使用  F2837xD_sci_flash_kernels_cpu01_alt.txt 作为我的内核成功地对您的应用进行了编程。 此内核的唯一区别是用于 SCI 的 GPIO (28和29、84和85)。  

    它是否在定制电路板上运行? 您是否能够尝试在不同的器件/电路板上运行内核?

    此致!

    Alex

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

    Alex、

    我未 修改 OTP、而是用于 SCI 模式(84和85)。  

    程序在 我的定制板上运行,我有五个定制板,只有这一个编程失败(内核成功,应用失败),其他可以成功烧录。 但是、该故障电路板可以成功烧录使用过的"C2progV2.1"软件。

    此致!

    Xiao

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

    Xiao、

    使用 C2prog 编程后、您能否验证0x82A38位置(我们的内核出现故障的位置)是否已正确编程?

    此外、您能否尝试通过 JTAG 进行编程?

    此致!

    Alex

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

    Alex、ó n

    是、使用 C2prog、器件 正确运行编程后。 JTAG 还可以 正确编程和运行。

    最佳、

    Xiao

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

    Xiao、

    我正在内部测试一些东西、明天会有回应。

    此致!

    Alex

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

    Xiao、

    可以尝试两点:

    • 将不同的应用程序加载到同一个存储器区域、此操作是否成功?
    • 通过 JTAG 加载内核、然后检查内存内容、并在程序失败之前/期间/之后逐步执行程序
      • 编程前是否已擦除闪存?
      • 数据缓冲区中的内容是否与写入闪存的内容相匹配?

    要通过 JTAG 调试内核、请执行以下操作:

    1. 从"C2000WARE_ROOT\device_support\f2837xd\examples\dual\F2837xD_sci_flash_kernels\cpu01"导入内核项目
    2. 在.c (在 CopyData()函数中)的第275行、插入以下语句: if (BlockHeader.DestAddr == 0x82A38) Shared_Boot;
    3. 编译项目并将其加载到器件中
    4. 按 CCS 调试视图中的"Run"
    5. 使用 serial_flash_programr_appln.exe 发送应用程序(不是 serial_flash_programr.exe --这将尝试重新发送内核)

    此致!

    Alex

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

    Alex、

    很抱歉让你久等了。

       我已经完成了上面提到的两件事。 首先、将不同的应用程序加载到同一个存储器区域、失败。 其次、我通过 JTAG 调试内核、但没有插入 上面的语句、amd load blinky_dc_cpu01.txt、它也失败、错误地址也为 0x82A38。 检查内存、 我认为擦除正常、写入失败。 屏幕截图如下所示。

      然后、 我   从"C2000WARE_ROOT\device_support\f2837xd\examples\dual\F2837xD_sci_flash_kernels\cpu01"重置内核项目、这 发生了神奇的事情。  无论是 调试模拟内核还是使用"serial_flash_programmer.exe",并尝试了三种不同的应用程序,刻录过程都是成功的。  无法再重现错误。

       我很担心、这个错误发生在不同批次的电路板上。 那么、我如何防止这种问题发生呢?

    此致!

    Xiao

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

    Xiao、

    您是否有其他电路板仍然能够产生此问题(或可能尝试使用原始内核文件)? 我目前最猜测的是它与堆栈相关、但直到问题复制完毕后我们才确定。

    如果您能够重现:

    1. 单步执行 Fapi_issueProgrammingCommand ()后、闪存的内容是什么?
      1. 编程区域是否与 miniBuffer 变量的内容匹配?
    2. 您是否可以尝试为堆栈分配更多存储器? 这会改变行为吗?

    要展开堆栈、请执行以下操作:

    1. 打开"Project Properties"、然后导航至"Build">"C2000 Linker">"Basic Options"
    2. 将"Set C system stack size"字段更改为"0x300"

    此致!

    Alex

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

    Alex、ó n

    此电路板仍然有错误。 昨天可能会引起一些笑话,但在那段时间里,它确实不可能再现。

    今天,同样的问题再次发生在这个电路板、我已经完成了上述验证。

    首先、 在断点调试下、可以写入数据、这与 miniBuffer 相同。

    其次、即使将内核项目的堆栈扩展到0x300后、这个问题仍然存在。

    此致!

    Xiao

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

    Xiao、

    还有两件事需要尝试:

    • 注释 F2837xD_sysctrl.c 的第381行和382行、这将禁用数据缓存和预取缓冲区。
    • 单步执行编程命令后、在第311行上放置一个断点: if (fail=0)//首次失败
      • verify 命令在哪个循环迭代上报告失败?
      • 什么值存储在 oFlashStatusWord 中?
      • toVerify 变量的值是什么?

    此致!

    Alex

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

    Alex、ó n

    我 对 F2837xD_SYSCtrl.c 的381和382行有注释

    然后、我在第311行放置一个断点: if (fail=0)//首次失败、但该断点没有停止、错误仍然 存在。

    此致!

    Xiao

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

    Alex、ó n

    第一步、 断点 停止并转至第二步、 如果是这样、验证结果如下。

    dummy_read 和 BlockHeader.DestAddr

    第二个 dummy_read、 闪存为0x82A38、 编程未失败、oFlashStatus 值为"0"、在 flash_programming_cpu01.c 中 、我将断点设置为286,308,340,343行、程序在343行停止、没有其他行停止。

    此致!

    Xiao

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

    Alex、

    已成功将所有闪存编程为0。

    继续编程以再次擦除所有闪存、同时 成功。

    此致!

    Xiao

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

    Xiao、

    对不起,这个线被标记为已解决,我们的最后有一个混合体 我们将继续协助解决这一问题。

    我目前正在进一步研究这个问题、下周会给您回复。

    此致!

    Alex

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

    Alex、

    问题答案:

    • 至少在有问题的板上,C2Prog 连续成功了30次。 成功率超过99%、也可以在其他有问题的电路板上成功烧坏。
    • 一共有50个板。 大约有7个人有问题。
    • 我可以确认电压均处于数据表中指定的范围内。 此外、在 SCI 编程过程中、我已经用示波器测量了电压、发现电压没有下降。

    尝试的内容(结果):

    • 我插入以下语句:while (Fapi_checkFsmForReady ()== Fapi_Status_Fsm);in Shared_Boot.c 的 F2837xD_sci_flash_kernels_cpu01项目中
    • 问题仍然出现。
    • 将项目加载到器件中。 成功。
    • 替换".cmd"文件。 运行内核并尝试加载和编程应用程序。 这里仍然是一个失败。 但使用 JTAG 和 C2Prog 可以成功下载。

    好的。

    Xiao

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

    Xiao、

    • 在其他发生故障的器件上、您是否在同一存储器地址看到相同的错误?
    • 闪存内核的预期用例是什么?
    • 您是否可以尝试将器件从功能板更换/焊接到出现此问题的板上? 结果如何?

    此致!

    Alex

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

    Alex

    • 另一个器件错误位于不同 的地址、它随机呈现了四个不同的错误地址。 我可以肯定硬件连接没有问题、因为我在成功使用 C2prog 编程后仅使用了"serial_flash_programmer.exe"。

    • 此内核的应用场景是在工厂的大规模生产期间。 它用于为生产线工人提供自动老化装置。
    • 未执行此步骤。 通过焊接来移除这个芯片相当困难。 我不能保证在焊接过程中不会出现任何焊接错误。 我所有的电路板都采用了相同的设计、且我参考了 TI 的官方参考设计。 此外、这一问题经常发生。 之前、我邀请 TI 的 MCU AFE 到现场进行故障排除、但没有找到好的解决方案。

    此致!

    Xiao

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

    Xiao、

    您可以尝试通过 JTAG 引脚连接 SCI 吗? 我想排除所连接的其他电线可能产生的任何干扰。

    为此、请执行以下操作:

    1. 在 F2837xD_sci_flash_kernels_cpu01.c 和 SCI_GetFunction.c 中、找到所有"Scia"实例并将其替换为"Scib"  
    2. SCI_SCI1() Pinmux_Option 函数的内容替换为:
      EALLOW;
      GPIO_SetupPinOptions(70, GPIO_OUTPUT, GPIO_ASYNC);
      GPIO_SetupPinMux(70,GPIO_MUX_CPU1,6);
      GPIO_SetupPinOptions(71, GPIO_INPUT, GPIO_ASYNC);
      GPIO_SetupPinMux(71,GPIO_MUX_CPU1,6);
      EDIS;

      这会将器件配置为将信号从 JTAG 引脚(70和71)路由到器件的 SCI 模块
    3. 编译内核、然后通过 JTAG 连接至您的器件并运行内核
    4. 断开与设备的连接(确保内核持续运行)
    5. 将 SCI 线连接到与 电路板上 GPIO 70和71相对应的引脚
      1. GPIO70 = SCITXDB
      2. GPIO71 = SCIRXDB
    6. 运行主机编程器、是否仍然出现错误?

    此致!

    Alex

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

    Alex、

    我做了上述事情。  但在最后一步中有一个问题。 SCIB 无法连接。

    这是 cmd "serial_flash_programr_appln.exe -d f2837xD -a led_ex1_blinky.txt -b 9600 -p COM9"。

    此致!

    Xiao

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

    Xiao、

    此后它会进入自动波特模式吗?  如果未指定内核文件、则会输出该错误消息、即使该文件不是应用程序特有的内核版本所必需的、因此应该不会出现问题。

    此致!

    Alex

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

    Alex、ó n

    很抱歉、这是我的错。 我没有用"SCIB"代替所有的"SCIA"。

    现在、我正确地完成了上述操作并使用了 SCIB 进行刻录过程,但仍然收到一条错误消息。

    最佳、

    Xiao

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

    Xiao、

    我将对此进行进一步研究、下周早些时候会有回应。

    此致!
    Alex

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

    你好、Xiao、

    由于该主题已打开一段时间、您能否发布另一个主题以继续此讨论?

    谢谢。此致、

    Charles

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

    Charles

    我们可以在以下帖子中继续讨论该问题:https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1480722/tms320f28375d-sci-mode-fmstat-register-contents-01010

    此致!

    Xiao