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.

[参考译文] TMS320C6678:EMIF16引导失败

Guru**** 2589300 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/589120/tms320c6678-emif16-boot-failed

器件型号:TMS320C6678

您好!

一个电路板上有三个 c6678、我组装了两个电路板。

三个 DSP 在 电路板1上成功引导 、但在电路板2上只有两个 DSP 的引导成功。

我在  电路板#2上检查了启动失败 DSP 的输入电压和时钟 、发现没有异常状态。

我在下面的电路板#2上写下了我的调试结果:

1>没有     引导模式时、我可以通过调试器将二进制代码连接并写入 DSP。  当没有引导模式时、 我可以毫无错误地连接全部三个 DSP。

2>然后我将 引导模式更改为 EMIF16引导模式、然后断电。

3> 上电后、一 个 DSP 的引导  失败。 NOR 闪存的 CS 信号在上电后的短时间内发生变化、因此我认为 DSP 的引导模式设置良好。

4>当 EMIF16引导模式时、我可以将目标连接到两个成功引导的 DSP、而不会出现任何错误、但我无法将目标连接 到引导失败的 DSP。 当我尝试 通过调试器连接到启动失败的 DSP 时、我遇到错误消息-"Error connecting to the target (Error - 1143 @ 0x0)"或"Error connecting to the target (Error - 1144 @ 0x0)"

我需要知道 启动失败的 DSP 和启动成功的 DSP 之间有什么区别。

-> 在没有引导模式的情况下、我可以通过调试器将目标连接到全部三个 DSP。

->在 EMIF16引导模式下、我只能通过调试器连接成功引导的两个 DSP。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我检查了启动失败 DSP 的 SYSCLKOUT。 大约为208MHz。 由于所需的内核时钟为1.25GHz、我认为至少内部 PLL 是可以的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当其中一个 SOC 上的 DSP 引导失败时、您能否运行调试 GEL 文件并在此处附加日志:
    processors.wiki.ti.com/.../Keystone_Device_Architecture

    此日志应报告程序计数器、器件 PLL 状态以及是否报告了任何引导错误日志。 是否可以独立于这些电路板上的其他 DSP 引导每个 DSP。 此外、引导故障中是否存在任何模式。 同一个 DSP 是否始终发生故障、或者三个 DSP 中的任意两个是否发生故障。 如果在上电后启动的第一个 DSP 始终失败、那么在第一个 DSP 退出复位时、NOR 闪存器件一定不能上电。 在 EMIF 线路上放置一个示波器,看看它在上电后是否获得任何 EMIF 通信?


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

    1>
    您要使用的 GEL 文件是'Sanon_SystemDebug_v0.4.GEL'?
    我下载并检查了引导相关器件、发现某些字段的地址与 c6678数据表不同。 例如、GEL 文件中 BOOTCFG_BOOTPROGRESS 的地址为(0x02620140u)、但数据表中的地址(0x02620140u)是保留字段。
    GEL 文件中 BOOTCFG_PWRSTATECTL 的地址也是(0x02620140u)、与 BOOTCFG_BOOTPROGRESS 相同。 在数据表中、PWRSTATECTL 的地址为(0x02620150)。'

    我需要检查哪个地址正确以及 BOOTPROGRESS 字段的含义。

    2>
    只要我进行测试、同一 DSP 就始终会失败。
    我不明白您的意思-"在第一个 DSP 退出复位时、闪存器件也不得上电"。
    在 DSP 的复位信号被置为无效之前、板载闪存也不受电。
    有三个板载 Nor、每个 NOR 独立连接到每个 DSP。

    3>
    当我尝试连接目标时、我遇到了两种情况。 一种情况是"连接到目标时出错"、另一种情况是连接成功。
    无论如何、当我遇到"连接到目标时出错"时、我尝试了 CCS 菜单上的许多"重置-系统重置"、并看到 DSP 完成了引导过程。 "系统重置"的尝试编号不同、有时一个、有时两个或三个。
    CCS 系统复位后、DSP 进入哪个状态?

    4>
    当我成功连接到目标时、我通过'SHAND_SystemDebug_v0.4.GEL'检查了'boot status。
    BOOTPROGRESS、BOOTCFG_BOOTCOMPLETE 和 BOOTCFG_RESET_STAT 的值与引导成功 DSP 的值不同。

    首先、BOOTPROGRESS 为0xD0400000 (引导失败)和0xD0000000 (引导成功)
    正如我在1>提到的、BOOTPROGRESS 地址是根据数据表保留的字段、因此我不确定该值是否值得检查。

    BOOTCFG_RESET_STAT 为0x8000000000 (引导失败)和0x800000FE (引导成功)
    内核何时未收到本地复位?

    BOOTCFG_BOOTCOMPLETE 和 BOOTCFG_RESET_STAT 的值在每次引导失败时都不同。
    我没有检查 BOOTPROGRESS 值、因此不知道 BOOTPROGRESS 值是否更改。


    我希望找到任何线索来解决这个问题。


    我在下面粘贴了引导/复位状态示例:

    C66xx_16:凝胶输出
    C66xx_16:GEL 输出:****** C6678启动状态
    C66xx_16:凝胶输出

    C66xx_16:GEL 输出:BOOTPROGRESS[31:0]-> 0xD0400000
    C66xx_16:GEL 输出:bootcfg_BOOTCOMPLETE --> 0x00000003

    C66xx_16:GEL 输出:C6678内核0 -->引导过程已完成
    C66xx_16:GEL 输出:C6678内核1 -->引导过程已完成
    C66xx_16:GEL 输出:C6678内核2 -->正在启动。 未完成
    C66xx_16:GEL 输出:C6678内核3 -->正在启动。 未完成
    C66xx_16:GEL 输出:C6678内核4 -->正在启动。 未完成
    C66xx_16:GEL 输出:C6678内核5 -->正在启动。 未完成
    C66xx_16:GEL 输出:C6678内核6 -->正在启动。 未完成
    C66xx_16:GEL 输出:C6678内核7 -->正在启动。 未完成
    C66xx_16:凝胶输出
    C66xx_16:GEL 输出:****** C6678复位状态
    C66xx_16:凝胶输出

    C66xx_16:GEL 输出:bootcfg_reset_STAT --> 0x8000000

    C66xx_16:GEL 输出:C6678全局复位-->器件接收到全局复位
    C66xx_16:GEL 输出:C6678内核0复位-->内核0未接收到本地复位
    C66xx_16:GEL 输出:C6678内核1复位-->内核1未接收到本地复位
    C66xx_16:GEL 输出:C6678内核2复位-->内核2未接收到本地复位
    C66xx_16:GEL 输出:C6678内核3复位-->内核3未接收到本地复位
    C66xx_16:GEL 输出:C6678内核4复位-->内核4未接收到本地复位
    C66xx_16:GEL 输出:C6678内核5复位-->内核5未收到本地复位
    C66xx_16:GEL 输出:C6678内核6复位-->内核6未接收到本地复位
    C66xx_16:GEL 输出:C6678内核7复位-->内核7未接收到本地复位