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 的编程、以用于大规模生产。
我对 DSLite 和从 UniFlash 生成的命令行环境有一些不愉快的经历。
最常见的方法是在编程闪存或 OTP 存储器的过程中编程中断、使器件处于奇怪的状态。
通常可以在 CSS 中更正状态、但这很耗时。 编程错误的器件百分比很高。
这就是我决定切换到 DSS (调试服务器脚本编写)的原因。
我已经修改了名为 loadti (用 JavaScript 编写)的示例、并成功地在两个内核中对闪存进行了编程(到目前为止没有 OTP)。
我有一些问题要问 DSS:
Fullscreen123456789101112131415161718+++Calculate checksum...getFlashChecksum: ENTRYwaitUntil: ENTRY timeout: infiniteC28xx_CPU1: Calculating Checksum...C28xx_CPU1: Main Flash Checksum: 0x8774C28xx_CPU1: Main ECC Checksum: 0x2121C28xx_CPU1: OTP Checksum: 0xFC00C28xx_CPU1: OTP ECC Checksum: 0xFF80waitUntil: RETURNwaitUntil: ENTRY timeout: infinitewaitUntil: RETURNSEVERE: Error getting data associated with "FLASHCHECKSUM": Unknown keyError code #4020, could reset target!XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+++Calculate checksum...
getFlashChecksum: ENTRY
waitUntil: ENTRY timeout: infinite
C28xx_CPU1: Calculating Checksum...
C28xx_CPU1: Main Flash Checksum: 0x8774
C28xx_CPU1: Main ECC Checksum: 0x2121
C28xx_CPU1: OTP Checksum: 0xFC00
C28xx_CPU1: OTP ECC Checksum: 0xFF80
waitUntil: RETURN
waitUntil: ENTRY timeout: infinite
waitUntil: RETURN
SEVERE: Error getting data associated with "FLASHCHECKSUM": Unknown key
Error code #4020, could reset target!
在 DSS 中使用 OTP 是否有任何特定的顺序或要求?
此致、
Piotr Romaniuk
您好!
[报价 userid="64714" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1393575/tms320f28379d-using-dss-for-automatic-programming-the-chip "]最痛苦的是在对闪存或 OTP 内存进行编程的过程中编程中断、使设备处于奇怪的状态。[/QUOT]Dslite 应该非常可靠。 至少这是目标。 您能否提供有关此故障的更多详细信息、例如任何错误消息和解决此问题所需的技术?
调用 debugSession.memory.loadProgram ()时,如何检查和打印编程进度?
仍然没有一种简单的方法可以做到这一点。 我想您可以为控制台启用完全详细信息、并且您应该在程序加载期间获得更多诊断消息、但消息中也会有很多噪声。
yan li10 说:为什么在尝试获取记忆的校验和时出现异常? 我尝试了 debugSession.flash.getFlashChecksum ()以及 calculateChecksum ()。
日志如下:
yan li10 说:dslite 不会出现此问题、正确吗? 正在使用哪个 CCS 版本。
yan li10 说:在 DSS 中使用 OTP 是否有任何特定的顺序或要求?这是面向器件专家的问题。 我会为它创建一个单独的线程。
谢谢
Ki
尊敬的 Ki:
dslite 应该非常可靠
使用 DSLite 时、我发现大约5%的编程失败。 我在 Linux 中使用了 XDS100v3和 bash 脚本。
我运行以下编程序列:
DSLite 的首次调用- cpu02的 OTP 和闪存、
DSLite 的第二次调用-如上所述、但对于 cpu01。
不幸的是、DSLite 正在闪存之前对 OTP 进行编程-它可能会按地址升序排列来自一个文件的数据[?]
我刚刚在我的环境中改进了日志记录、所以我会收集一些问题的统计数据、并将与您分享准确的消息。
现在、我只记得以下内容、单独出现错误:
您能否提供此故障的更多详细信息、如任何错误消息以及解决此问题所需的技术?
我修复了 CCS 中的芯片、方法是启动调试会话并针对错误编程的内核执行手动解锁、擦除和编程操作。 这一过程耗时、不是大规模生产的可接受解决方案。 我写了详细的错误消息、稍后我将提供这些错误消息。
进一步说明与 DSS 有关。
这还不是一个简单的方法。 我想您可以为控制台启用完全详细信息、并且您应该在程序加载期间获得更多诊断消息、但消息中也会有很多噪音。
我已经对打印的消息使用了设置"全部"、但没有显示任何进度。 LoadProgram ()只是封锁,直到它完成,我感到惊讶,因为 CCS 和 DSLite 提供了一些进度信息。 它看起来很奇怪,因为有一些大块,但至少有一些东西。 这两个程序是如何实施进展的、它们是否依赖于 DSS API?
使用 dslite 时不出现此问题、正确吗? 正在使用哪个 CCS 版本。[/QUOT]是的、这是 DSS。 我使用 CCS 12.1.0中的 DDS、到目前为止 Windows 版本、稍后我切换到 Linux。
[报价 userid="2210" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1393575/tms320f28379d-using-dss-for-automatic-programming-the-chip/5332989 #5332989"]在 DSS 中使用 OTP 是否有任何特定的顺序或要求?这是面向器件专家的问题。 我会为它创建一个单独的线程。
[报价]我只是想确定是否可以通过执行 LoadProgram()函数从一个文件(.hex 或.out)对 OTP 和 FLASH 进行编程。 我知道芯片站点、我的问题不是关于编程 API (即 DSS)。
此致、
Piotr Romaniuk
PS
使用 Java 中的 DSS 时、日志如下所示:Fullscreen12345678910111213141516171819C28xx_CPU2: Calculating Checksum...C28xx_CPU2: Main Flash Checksum: 0x4E91C28xx_CPU2: Main ECC Checksum: 0xE052C28xx_CPU2: OTP Checksum: 0xFC00C28xx_CPU2: OTP ECC Checksum: 0xFF80waitUntil: RETURNwaitUntil: ENTRY timeout: infinitewaitUntil: RETURNSEVERE: Error getting data associated with "FLASHCHECKSUM": Unknown keyERRORcom.ti.ccstudio.scripting.environment.ScriptingException: Error getting data associated with "FLASHCHECKSUM": Unknown keyat com.ti.debug.engine.scripting.Flash.getData(Flash.java:225)at com.ti.debug.engine.scripting.Flash.calculateChecksum(Flash.java:248)at test1.main(test1.java:34)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC28xx_CPU2: Calculating Checksum... C28xx_CPU2: Main Flash Checksum: 0x4E91 C28xx_CPU2: Main ECC Checksum: 0xE052 C28xx_CPU2: OTP Checksum: 0xFC00 C28xx_CPU2: OTP ECC Checksum: 0xFF80 waitUntil: RETURN waitUntil: ENTRY timeout: infinite waitUntil: RETURN SEVERE: Error getting data associated with "FLASHCHECKSUM": Unknown key ERROR com.ti.ccstudio.scripting.environment.ScriptingException: Error getting data associated with "FLASHCHECKSUM": Unknown key at com.ti.debug.engine.scripting.Flash.getData(Flash.java:225) at com.ti.debug.engine.scripting.Flash.calculateChecksum(Flash.java:248) at test1.main(test1.java:34)
使用 DSLite 时、我观察到大约5%的编程失败。 [报价]好的、这是一个偶发的误差。 也许有些模糊的时间问题。
我写了详细的错误消息、稍后我将提供。谢谢你
[/quote]我已经对打印的邮件使用了设置"全部"、但没有显示任何进度。 LoadProgram ()只是封锁,直到它完成,我感到惊讶,因为 CCS 和 DSLite 提供了一些进度信息。 它看起来很奇怪,因为有一些大块,但至少有一些东西。 这两个程序是如何实施进展的、它们是否依赖于 DSS API? [报价]DSLite 与 DSS 分开。 CCS IDE 可以依赖多个 API、包括 DSS 以及直接在后台调用 GEL。
我能看到您的 DSS 脚本吗? 您是否可以重命名为*。txt 并将其附加?
感谢您添加的详细信息。 我会跟一些专家跟进。 当我收到更多信息时、我会随时向您通报最新情况。
Ki:
这件事是紧迫的。
本周13块板编程错误。 闪存或 OTP 编程已中断。
此致、
Piotr Romaniuk
很抱歉延迟了响应。 我有一些答案。
对于以下各项:
yan li10 说:严重:获取与"FLASHCHECKSUM"相关的数据时出错:未知密钥
这是由于 flash.calculateChecksum ()调用造成的。 此 API 用于支持旧版旧版 C2000器件。 虽然此调用还将在更现代的 C2000器件上获得校验和、但 API 依赖于这些更现代的器件中不存在的 FLASHCHECKSUM 属性。 因此、这是例外情况。 可以捕获和忽略异常。 一个更好的选择是 改用 flash.performOperation ("CalculateChecksum")、这不会导致异常。
[报价 userid="64714" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1393575/tms320f28379d-using-dss-for-automatic-programming-the-chip/5335840 #5335840"] 2. . 一切都连接正确dslite 无法检测到 XDS100调试探针。 如果主机操作系统未正确枚举 XDS100或由于某种原因断开了连接、则可能会发生这种情况。 我没有很好的解释为什么这会突然发生,如果事情已经正常工作。 我假设当这种情况发生时、xds100串行实用程序无法检测到任何东西。
yan li10 说:在 DSS 中使用 OTP 是否有任何特定的顺序或要求?
我还在做这方面的工作。 我可能需要将该线程重新分配给器件闪存专家。
尊敬的 Ki:
这是由于 flash.calculateChecksum ()调用。 此 API 用于支持旧版旧版 C2000器件。 虽然此调用还将在更现代的 C2000器件上获得校验和、但 API 依赖于这些更现代的器件中不存在的 FLASHCHECKSUM 属性。 因此、这是例外情况。 可以捕获和忽略异常。 更好的选择是改用 flash.performOperation ("CalculateChecksum")、这不会导致异常。[/QUOT]我如何读取校验和? 我在 API 文档 getFlashCheckChecksum ()和 getOTPChecksum ()中看到了,但我如何获得 ECCs 校验和呢?
我假设在这种情况下 xds100serial 实用程序无法检测到任何内容。FDTI 驱动器对我而言始终是稳定可靠的。 也许 XDS100v3上存在一些问题?
我有一些来自板的标度、它们被错误编程。 我还没有日志、但我遵循以下情况:
- 闪存和 OTP 完全未编程、
- 只有 OTP 中的 LINKPOINTERS 已编程(正确值)、闪存为空
- OTP 已正确编程、但闪存为空
- OTP 正确、但闪存已部分编程(I 比较校验和)
除[1]之外的所有这些情况看起来都已中断编程序列。 案例[1]看起来未执行到 XDS 的连接。
此致、
[/quote]
Piotr Romaniuk
如何阅读校验和? 我在 API 文档 getFlashCheckChecksum ()和 getOTPChecksum ()中看到了,但我如何获得 ECCs 校验和?[/报价]flash.calculateChecksum 将把所有的校验值输出到控制台。 但我假设您希望在脚本中获取校验和值、以便将其分配给变量。 有一种方法可以通过访问调试器属性来实现此目的。 我将研究如何为您获取此信息。
[报价 userid="64714" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1393575/tms320f28379d-using-dss-for-automatic-programming-the-chip/5349070 #5349070"]我有一些来自板的标度、它们被错误编程。 我还没有日志、但我遵循以下情况:
- 闪存和 OTP 完全未编程、
- 只有 OTP 中的 LINKPOINTERS 已编程(正确值)、闪存为空
- OTP 已正确编程、但闪存为空
- OTP 正确、但闪存已部分编程(I 比较校验和)
除[1]之外的所有这些情况看起来都已中断编程序列。 案例[1]看起来未执行到 XDS 的连接。
[报价]我看到您创建了一个相关主题。
谢谢观看、下面请 C2000闪存专家进行讲解。
有一种方法可以通过访问调试器属性来执行此操作。 我将为您寻找此信息。
尝试如下操作:
var checksum = debugSession.flash.performOperation("CalculateChecksum"); // Checksum values var main = debugSession.options.getString("FlashCRCMainValue"); var ecc = debugSession.options.getString("FlashCRCECCValue"); var otp = debugSession.options.getString("FlashCRCOTPValue"); var otp_ecc = debugSession.options.getString("FlashCRCOTPECCValue");
你(们)好
感谢您提供校验和的解决方案。
我没有将其标记为"这已解决我的问题"、因为仍有其他问题未决、我还不希望此主题关闭。
此致、
Piotr Romaniuk
我没有将它标记为"这解决了我的问题"、因为还有其他未决问题、我还不希望关闭此主题帖。
让我们使用您的另一个线程来解决其他闪存 OTP 问题。 我已提请 C2000专家注意该报告。