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.

[参考译文] TMS320VC5402:一个以上的数据似乎未正确编程

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1075178/tms320vc5402-one-data-over-two-seems-not-correctly-programmed

部件号:TMS320VC5402
线程中讨论的其他部件:XDS510

大家好,

我正在调查生产过程中发生故障的电路板。
设计比较旧,生产也比较大,我们为此制作了几百块板。

在其中一个系统中,我无法正确地对其进行编程。

所以我有两个问题,我们如何解释在 bootloader 和外部闪存中,两个词中只有一个被正确编程?

有一两个以上的问题滞留在 FFFF,您是否曾遇到过此类问题?

我想知道 RAM 中的关键部件是否损坏,从而无法在 IPROG,数据或外部闪存中正确写入整个单词?

如何使用我的 Blackhawks USB XDS510直接加载我的引导加载程序?

我累了负载存储器功能,但没有成功...

请找到 CCS 读取的内存与十六进制文件内容之间的比较。
00替换为 FF。


提前感谢您的帮助,

此致,

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

    您好,Avid,

    [引用 userid="500427" url="~ë/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-one - data-over -似乎未正确编程"]

    在其中一个系统中,我无法正确地对其进行编程。

    所以我有两个问题,我们如何解释在 bootloader 和外部闪存中,两个词中只有一个被正确编程?

    [/引用]

    bootloader 位于片上 ROM 中。 您是否认为外部闪存中存在辅助引导加载程序以及应用程序程序/数据?

    所以你正在尝试对闪存重新编程,闪存写在一个主板上不正确,而在另一个主板上写正确? 您是否有其他主板来检查您是否看到了相同的行为?

    外部闪存如何交互?

    • 是否正在使用外部总线接口? 配置是什么?
    • 正在使用哪种类型的闪存? 您有数据表吗?

    您是否能够擦除闪存? 通常,“0xFFFF”模式表示该单词尚未被写入。 您可以通过检查数据表来确认这一点吗?

    [引用 userid="500427" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-one - data-over -似乎未正确编程"]我想知道 RAM 中的关键部件是否损坏,无法在 IPROG,数据或外部闪存中正确写入整个单词[引用]

    VC5402数据表中未提及 IPROG 和数据。 链接器命令文件中是否定义了这些 DARAM 内存区域?

    您是否认为写入闪存的内部 RAM 内容正确且/或不包含正确的数据?

    您是否可以通过 JTAG 连接到电路板并逐步了解编程器代码? 您能否在将 DARAM 写入闪存之前检查其内部内容?

    [引用 userid="500427" url="~/support/processors-group/processors/f/processors-forum/1075178/TMS320VC5402-1-one-data-over-two-sAppears-not-correctly-programmed "]如何使用我的 Blackhawk USB XDS510直接加载我的引导加载程序?

    在进行任何格式转换以进行刷新之前,您是否拥有用于引导加载程序的可执行.out 文件? 如果您可以通过 JTAG 连接到主板(我认为这是因为您在 CCS 中共享了内存浏览器窗口的快照),那么您应该能够像加载任何其他可执行文件一样加载 bootloader .out 文件。

    此致,
    弗兰克

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

    你好,弗兰克,

    感谢您的及时回复。 以下是我的答案:

    [引用 userid="16636" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-一个数据-两个数据-似乎-未正确编程/3979216#3979216"],您是否认为外部闪存中存在辅助启动器以及应用程序/数据?

    如果我的解释不清楚,这不是很抱歉,事实上,引导加载程序就像您提到的那样在 ROM 中,我们的外部闪存中也有固件。 引导加载程序和固件通过引导加载程序加载程序进行编程。输出允许在能够加载引导加载程序和固件的位置进行 CAN 通信。 我所看到的是,引导加载程序和将数据写入闪存中,我们缺少了一半的单词。

    [引用 userid="16636" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-一个数据-两个数据-似乎-未正确编程/3979216#3979216"],因此您正在尝试重新编程闪存,闪存未正确写入一个主板,而写入另一个主板[引用]

    是的,正确。

    [引用 userid="16636" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-one - data-over -似乎-未正确编程/3979216#3979216"]您是否有其它主板来检查您是否看到了相同的行为?

    不是,这是第一个出现此问题的问题。

    [引用 userid="16636" url="~/support/processors-group/processors/f/processors-forum/1075178/TMS320VC5402-One-data-bo-two-sAppears - pro似乎-未正确编程/3979216#3979216"]外部闪存接口如何显示

    外部闪存(S29AL008J)通过地址总线 A15-A0和并行数据总线 D15-D0直接连接到 DSP

    [引用 userid="16636" url="~/support/processors-group/processors/f/processors-forum/1075178/TMS320VC5402-One-data-bo-two-sAppears - pro似乎-未正确编程/3979216#3979216"]您是否能够擦除闪存?

    是的,我可以擦除闪存,也可以毫无问题地对其进行编程。 所以,这不是我会说的闪耀的结果。

    0xFFFF 表示为空。 因此,我同意您的观点,即数据不会被写入。

    但内部 ROM 中的情况相同。 根据我从 DSP ROM 存储器中获得的屏幕截图,我们可以看到,只有一个字超过两个字被正确写入。

    [引用 userid="16636" url="~/support/processors-group/processors/f/processors-forum/1075178/TMS320VC5402-One-data-bo-two-sAppears - inspect-correct-programmed/3979216#3979216"]链接器命令文件中是否定义了这些 DARAM 内存区域?[/]

    我不知道如何检查,可以帮帮我吗?

    [引用 userid="16636" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-One-data-bo-two-sAppears - pro似乎-未正确编程/3979216#3979216"]您是否可以通过 JTAG 连接到主板并逐步通过编程器代码?

    是的,我可以,这就是我获得 ROM 区域屏幕截图的方式

    [引用 userid="16636" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-一个数据-二进制-似乎-未正确编程/3979216#3979216"]您能否在将内部 DARAM 内容写入闪存之前检查其内容?

    我将尝试看看我是否可以在那里设置断点。 我会随时向您发布信息。

    [引用 userid="16636" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-一个数据-二进制-似乎-未正确编程/3979216#3979216"]您是否拥有用于引导加载程序的可执行.out 文件

    是的,我已经这样做了。  

    我希望我能回答你的所有请求,

    此致,

    狂热

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

    您好,Avid,

    感谢您的回复,但我仍不清楚您要做什么。

    ~引用 userid="500427" URL"~/support/processors-组/处理器/f/processors- forum/1075178/TMS320VC5402-One-data-over-two-s蠢-似乎未正确编程/3979908#3979908"]引导加载器位于 ROM 中,因为您提到了 URL[userid="TMS320799402">/v-processors 支持器/397402#v-probe-prochor/cc-procher/397402]/cc-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-probe-

    bootloader 位于片上 ROM 中,无法更新。 请访问 www.ti.com/.../spra618,1.2片上 ROM 说明。 您的意思是引导加载程序由 bootloader_loader.out 编程? 如何加载 bootloader_loader.out?

    片上 ROM 引导加载器可以从不同的外部来源传输使用代码。 在这种情况下,我想您正在使用并行引导模式,请参阅 www.ti.com/.../spra618,并行引导模式(支持8位和16位),并从外部闪存传输用户代码。 这是正确的吗?

    您应该有一些方法对外部闪存进行编程。 这通常通过单独的可执行文件(.out 文件)来实现。 您是如何对闪存进行编程的?

    [引用 userid="500427" url="~/support/processors-group/processors/f/processors-forum/1075178/TMS320VC5402-One-data-bo-two-sAppears -似乎未正确编程/3979908#3979908">,但内部 ROM 中的情况相同。 根据我从 DSP ROM 存储器中获得的屏幕截图,我们可以看到,只有一个字超过两个字被正确写入。

    根据我可以确定的内容,屏幕截图显示外部内存空间中的内存@ 0x8000。 请参阅 VC5402数据表(www.ti.com/.../tms320vc5402,内存映射)。

    [引用 userid="500427" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-一个数据-两个数据-似乎-未正确编程/3979908#3979908"]我不知道如何检查,您能为我提供帮助吗?

    您对 IPROG 和数据有何定义? 您在哪里获得了这些定义? 请参阅数据表中的内存映射。

    您似乎应该逐步通过闪存编程器。 您是否有.out 文件用于该文件,是否可以通过 JTAG 加载该文件?

    此致,
    弗兰克

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

    你好,弗兰克,

    感谢您的回答。
    我做了很多研究,多亏了你的联系,我现在更清楚了。

    事实上,我知道当我们把 MP/MC 放到一个位置时,关于地址,我们正在研究外部闪存。

    因此,将 bootloader 编程到外部闪存的一种方法是运行 bootloader_loader.out 代码。 这将启用 CAN 通信(与 MCP2515),因此我们能够将引导加载程序代码+固件代码加载到外部闪存中。

    现在,在我正在调查的特定故障板中,我有一半的数据在外部闪存中。 正如您在我的屏幕截图中看到的那样,两个以上的一个数据似乎是空的。


    这不是来自 Flash 组件,我已经对其进行了测试,我可以通过特定边界扫描软件 XJTAG 软件正确读取和写入该组件,在该软件中,我可以直接将十六进制文件加载到闪存中。  

    但当我尝试通过 CAN 对外部闪存进行编程,从而要求 DSP 对 CAN 请求解码并写入闪存时,我只有一半的信息。 我担心 RAM 部分出现故障,说明为什么只有一半的字被发送到外部闪存。

    顺便说一句,我不知道如何通过 CCS 将我的 bootloader +固件代码直接加载到外部闪存中。 如果有办法,请免费填写。

    此外,假设我能够将外部内存的映像从一个好的主板转储到一个文件中,并将其直接重新注入到我的故障主板的闪存中,DSP 应该正常运行? 在我的配置中,DSP 寄存器中不需要任何程序?

    [引用 userid="16636" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-One-data-bo-two-sAppears - pro似乎-未正确编程/3980154#3980154"]您对 IPROG 和数据的定义是什么?

    我知道内部代码正在启动时将 PROG 的一部分复制到 IPROG 中。 数据区域是在用.out 文件生成的地图文件中定义的。

    因此,IPROG 或数据的腐败可能解释为什么我漏掉了我一半的词语?

    提前感谢您,


    此致,

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

    您好,Avid,

    我的理解是,DSP 与以下方面联系在一起:

    • MCP2515 CAN 控制器通过 SPI。 这提供与 CAN 总线的通信。
    • S29AL008J 通过外部总线接口闪存。

    您有一个 DSP 程序 bootloader_loader.out。 该计划:

    • 启用与 CAN 的通信
    • 通过 CAN 总线与其他一些设备通信
    • 通过 CAN 总线接收其他设备写入闪存的数据
    • 将数据写入闪存

    在对闪存进行编程后,DSP 将设置为 MP/MC=0模式,并使用并行引导模式从闪存启动。

    我的理解是否正确?

    [引用 userid="500427" url="~/support/processors-group/processors/f/processors-forum/1075178/TMS320VC5402-One-data-bo-two-sAppears - pro似乎-未正确编程/3980292#3980292"] MP/MC 到一个[/引用]

    好的,这意味着您处于微处理器模式。 但是,这意味着您没有执行片上 ROM 引导加载程序。 请参阅 VC5402数据表,带 bootloader 的片上 ROM。

    [引用 userid="500427" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-one-data-over-two-sAppears - inspect-correct-programmed/3980292#3980292"]将引导加载程序编程到外部闪存的方法是运行 bootloader_loader.quote.example/quote 代码[]

    如何将 bootloader_loader.out 加载到 DSP 内存? 您是否从 JTAG 加载此类产品? 如果不加载 bootloader_loader.out 到 DSP 内存,就无法与 CAN 总线通信并写入闪存,对吗?

    [引用 userid="500427" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-One-data-bo-two-wie-s蠢-未正确编程/3980292#3980292"]这不是来自闪存组件的,我已经对其进行了测试,我可以通过 JTAG 扫描将其直接读取和写入特定的闪存文件,并将其写入特定的 XI 软件边界。]

    好的,你说你有其他方法写闪存,除了 bootloader_loader.out,你还可以验证闪存内容是否正确? 但是,当您使用 JTAG 连接到 DSP 时(没有执行 bootloader_loader.out),并查看闪存内容时,尽管您已经验证了闪存的编程是否正确,但似乎所有其他字都没有被编程?

    [引用 userid="500427" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-一个数据-二进制-似乎未正确编程/3980292#3980292">,但当我尝试通过 CAN 对外部闪存进行编程时,要求 DSP 对闪存进行解码时,我只能写入一半的信息。 我担心 RAM 部分有问题,解释为什么只有一半的字被发送到外部闪存。

    或者,当您使用 bootloader_loader.out 对闪存进行编程时,闪存内容是否不正确?

    [引用 userid="500427" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-一个数据-两个数据-似乎未正确编程/3980292#3980292]]我知道内部代码正在启动时将 PROG 的一部分复制到 IPROG 中。 数据区域在我的地图文件中定义,地图文件是使用.out 文件生成的。

    什么是“内部代码”? DSP ROM 中的代码? bootloader_loader.out 的一部分? 如何加载“内部代码”?

    您是否正在查看 bootloader_loader.out 的映射文件? 请分享显示 IPROG 和数据存储区域的地图文件片段吗?

    [引用 userid="500427" url="~/support/processors- group/processors/f/processors- forum/1075178/TMS320VC5402-一个数据-两个数据-似乎-未正确编程/3980292#3980292"],因此 IPROG 或数据损坏可能解释为什么我漏掉一半单词?

    我建议如下。 确保 MP/MC=0,这样引导加载程序就不会执行。 通过 JTAG 加载 bootloader_loader.out 的调试构建。 然后逐步了解该代码并检查:

    • DSP 存储器中是否从 CAN 总线接收到正确的单词,或者是否存在损坏?
    • DSP 存储器缓冲区中的单词是否正确,这些缓冲区将在编程前编程到闪存中?
    • 编程后闪存中的单词是否正确? 使用独立于 DSP 的"XJTAG 软件"方法验证这一点。

    此致,
    弗兰克