主题中讨论的其他器件:SysConfig
工具与软件:
您好、TI 团队:
在最近的测试中、我们看到有两种 在将数据编程到 OTP 后无法接收 TISCI_MSG_FLAG_ACK 的情况。 您能帮助我们了解一下可能出现的问题吗?
DebugP_assertNoLog ((STATUS == SystemP_SUCCESS)&&((respParam.flags & TISCI_MSG_FLAG_ACK)== TISCI_MSG_FLAG_ACK));
谢谢!
Hong
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.
工具与软件:
您好、TI 团队:
在最近的测试中、我们看到有两种 在将数据编程到 OTP 后无法接收 TISCI_MSG_FLAG_ACK 的情况。 您能帮助我们了解一下可能出现的问题吗?
DebugP_assertNoLog ((STATUS == SystemP_SUCCESS)&&((respParam.flags & TISCI_MSG_FLAG_ACK)== TISCI_MSG_FLAG_ACK));
谢谢!
Hong
如果出现故障、日志中将显示一个错误代码、用于分析故障。
这些日志来自仅 UART0上提供的 SBL。
日志如下所示
Starting Keywriting Enabled VPP keys Certificate found: 0x70042b00 Keywriter Debug Response:0x0 Success Programming Keys
您好!
请应用以下补丁在 UART0控制台上打印 SYSFW 日志
diff --git a/source/security/sbl_keywriter/am243x-evm/r5fss0-0_nortos/keywriter_utils.c b/source/security/sbl_keywriter/am243x-evm/r5fss0-0_nortos/keywriter_utils.c
index c48be90f..cc875f39 100644
--- a/source/security/sbl_keywriter/am243x-evm/r5fss0-0_nortos/keywriter_utils.c
+++ b/source/security/sbl_keywriter/am243x-evm/r5fss0-0_nortos/keywriter_utils.c
@@ -226,6 +226,21 @@ void keywriter_setBoardCfg(void)
}
}
+void dump_sysfw_logs()
+{
+ uint8_t* ptr = (uint8_t*)0x44043000;
+
+ DebugP_log("\r\n<<SYSFW_LOGS\r\n");
+
+ for(int32_t i = 0; i < 0x0FE0; i++)
+ {
+ DebugP_log("%c", *ptr);
+ ptr++;
+ }
+
+ DebugP_log("\r\nSYSFW_LOGS\r\n");
+}
+
void keywriter_processKeyConfig(void)
{
int32_t status = SystemP_SUCCESS;
@@ -254,6 +269,8 @@ void keywriter_processKeyConfig(void)
DebugP_log("Keywriter Debug Response:0x%x \r\n", (uint32_t) response.debug_response);
+ dump_sysfw_logs();
+
if (( status == SystemP_SUCCESS ) && ( response.debug_response == 0x0U ))
{
DebugP_log("Success Programming Keys \r\n");
此致、
Prashant
您好 Prashant:
我仍在努力重现这个问题。
同时、您能否帮助了解当我们在日志中有成功编程密钥时、此处可能会出现什么问题、
但在接下来的这个步骤中失败了。
DebugP_assertNoLog ((STATUS == SystemP_SUCCESS)&&((respParam.flags & TISCI_MSG_FLAG_ACK)== TISCI_MSG_FLAG_ACK));
当 未以标志接收到 TISCI_MSG_FLAG_ACK 时、对 Keywriter 会有什么影响? 这是否意味着之前的编程失败? 这与"成功编程密钥"存在某种冲突。
谢谢!
Hong
您好!
理想情况下、 如果 Keywriter 在日志中报告"Success Programming Keys"、则标志应具有 TISCI_MSG_FLAG_ACK。
同时、如果我们在日志中有成功编程密钥、您能帮助了解此处可能出现的问题吗
评估这种情况可能发生的条件(如果可能的话)是不可行的。 如果您可以重现问题并提供 SYSFW 日志、则我们可以分析故障。
除此之外、我可否知道以下情况?
此致、
Prashant
您好 Prashant:
感谢您的答复。
我尝试添加 SYSFW 日志来调试此问题并 看到 其他一些问题。
我在使用添加的 SYSFW 日志打印对外部 OTP 数据进行编程时看到了此故障、并且也无法转储外部 OTP 数据、请查看有关外部 OTP 数据转储问题的详细信息的电子邮件。
对密钥编程失败、状态= 0、response.debug_response = 0x20000000
对于另外两个问题、
非常感谢、
Hong
您好、Hong:
编程密钥失败、状态= 0、response.debug_response = 0x20000000
请共享 SYSFW 日志。
并且无法转储外部 OTP 数据
无法直接读取 EXT OTP MMR。 SYSFW 为 EXT OTP 提供 API:
https://software-dl.ti.com/tisci/esd/latest/2_tisci_msgs/security/extended_otp.html
对于 Keywriter、您无需读回任何内容。 SYSFW 日志具有验证 OTP 编程所需的任何内容。
此致、
Prashant
您好 Prashant:
感谢您的答复。
我能够在 Keywriter 工程中添加 SYSFW 日志打印功能、具有一个字节的较小 EXT OTP 大小。
对于较大的 EXT OTP 大小、response.debug_response = 0x20000000可能还具有一些其他问题。 鉴于这不是我们的用例、而只是测试用例、我想重新强调一下 未收到 TISCI_MSG_FLAG_ACK 的问题、正如我先前在运行 Keywriter 对 OTP 密钥进行编程时所指出的。
我们将尝试在打印 SYSFW 日志的情况下重现问题、并将通过电子邮件发送此问题。
谢谢!
Hong
您好 Prashant:
>如果客户获得了"成功编程密钥"、他们是否已验证 OTP 是否已根据其证书正确编程?
今天验证了 OTP 已成功编程、且 SMPK 和 BPMK 密钥的哈希均正确。
>客户是否验证 print 语句没有执行、因为执行卡在 DebugP_assertNoLog 语句中、还是只是推测?
有一个 DebugP_log()应该在 DebugP_assertNoLog 行之后执行、但它没有被打印出来。 在 DebugP_LOG()之后有一个 GPIO 切换,也没有被执行(这是观察到的)。 在我们应该接收的"Success Programming Keys"和 DebugP_LOG()之间只有这个断言。
DebugP_assertNoLog ((STATUS == SystemP_SUCCESS)&&((respParam.flags & TISCI_MSG_FLAG_ACK)== TISCI_MSG_FLAG_ACK));
我们已在另外两个已启用 syslog 的主板上进行了测试、但我们无法重现相同的问题。 我们正在尝试在同一个板上重现问题、到目前为止还没有运气。
谢谢!
Hong
您好 Prashant:
我只幸运地重现了这个问题,但后来无法重现。 我在该设置中没有 JTAG 调试器。
成功案例的 UART0日志:
找到的密钥证书:0x7005xxxx
Keywriter 调试响应:0x0
成功编程密钥
将 GPIO0_xx 设置为低电平以禁用 VPP
对于失败的情况:
找到的密钥证书:0x7005xxxx
Keywriter 调试响应:0x0
成功编程密钥
=>此处缺少最后一行。 当我们上次测量 VPP 时、可以看到 VPP 没有被禁用。
谢谢!
Hong
我只有一次机会重现此问题、但随后无法重现。 我在该设置上没有 JTAG 调试器。
如果没有其他调试信息、则我们在这里无法采取太多措施来找出问题的根本原因。
我刚浏览了 Keywriter v09_01_00、看到 UART0配置为中断模式、这可能会由于 UART 勘误表而导致问题。 请在轮询模式下配置 UART0、然后查看问题是否再次出现。
如果仍然如此、请添加如下调试打印内容:有关标志值的打印、如果问题再次出现、请提供引导日志:
否则、有 Keywriter v10.00.08可用、因此您也可以进行试用。
此致、Prashant
您好!
我只知道此 UART 错误、但这仅限于 ROM 代码。
勘误表 i2371仅适用于 ROM。 但此勘误源于勘误表 i2310、它会影响在中断模式下使用 UART 的任何操作。
将 UART1从密钥编写器中删除 example.cfg 会导致 SYSFW 失败吗?
您可以从 SysConfig 中删除 UART1。
此致、
Prashant
您好、Hong:
我们删除了启用 UART0 ISR 并 从 example.syscfg 中删除了适用于 Keywriter 的 UART1、并着手使用此更新运行一些循环测试。 到目前为止、健全性检查看起来很好。
这听起来不错。
请注意、 默认情况下 Keywriter v10.00.08将 UART 配置为轮询模式。 最好迁移到最新版本以提高稳定性。
此致、
Prashant
BTW、对于 keywriter v10.00.08、我看到它同时支持组合模式和传统模式。 我们是否可以在用例中使用旧模式?[/QUOT]仅对于在早期版本中使用 JTAG 来运行 Keywriter 的客户、才支持 keywriter v10.00.08中的旧模式。
强烈建议使用组合的引导流程。