安全引导加载程序测试

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support..我们将在未来几天修复错误/优化搜索和标记。
9个帖子/ 0个新
最后一篇
托马斯Donhauser
离线
最后一次露面:5个月2周前
加入:2019-10-20 10:45
安全引导加载程序测试

你好!

我需要测试我的安全引导加载程序之前,它是闪到OTP。因此我有三个问题:

1)测试引导加载程序本身的最佳方法是什么?现在我通过SS-Studio在Ram中首先在进行它。但不确定这是对还是错?

2)如何写只有关键到OTP?我可以用cli_programmer做这个吗?是的,怎么说呢?

3)如何不禁用我的devel USB-Kit的JTAG,甚至当安全引导加载程序被闪到OTP。

我一直在阅读文档,但非常担心因为在OTP中做了一些错误的事情而杀死我的devel板。

谢谢,

托马斯

设备:
PM_DIALOG.
离线
最后一次露面:2小时44分钟前
职员
加入:2018-02-08 11:03
你好托马斯•Donhauser

你好托马斯•Donhauser

谢谢你在网上提出的问题。请问您现在使用的是哪种DA1468x产品?是DA14680/681还是DA14682/683?此外,这是DA14682 / DA14683安全启动教程你所指的文件?

谢谢,PM_DIALOG.

托马斯Donhauser
离线
最后一次露面:5个月2周前
加入:2019-10-20 10:45
嗨,它是DA14683 USB-套件

你好,这是da14683 USB-Kit devel板。我已经知道你提到的链接。但是它没有说明如何测试一个安全的引导加载程序。它只是简单地描述了如何使用SS-IDE脚本来实现这一点。请您详细地参考我的3个问题。

谢谢!

PM_DIALOG.
离线
最后一次露面:2小时44分钟前
职员
加入:2018-02-08 11:03
你好托马斯•Donhauser

你好托马斯•Donhauser

在启用安全启动的情况下,BootROM默认禁用JTAG。您可以通过配置SYS_CTRL_REG[DEBUGGER_ENABLE]位域从您的应用程序启用JTAG,以便访问调试器。然而,“安全引导”的概念是不允许JTAG访问,因此通过这种方式系统将变得不安全。如果你想在你的应用程序中启用JTAG,你应该注意以下几点:

  • 如果secure_boot_reg [force_debugger_off是否设置为1,则系统调试器SWD完全禁用。没有办法恢复这个问题。
  • 如果安全设备(0x7F8EA68)字段写入到OTP报头0xAA,那么设备是安全的,所有安全特性被启用
  • 在继续使用安全引导机制之前,应用程序映像应该是功能齐全的。如果它没有功能,就没有任何办法恢复它。如果它是功能性的,并且你想重写QSPI Flash,这应该用相同的密钥存储到OTP和通过JTAG完成。
  • 我强烈建议使用一些额外的开发板,以防安全引导失败。这种机制用于使应用程序映像不可访问和容易受到攻击。
  • 确保应用程序固件完全正常运行,并启用调试器位域。请按照逐步进行教程。请记住,从我们方面测试了两倍。

希望我的评论会帮助你。如果您有任何其他后续问题,请告诉我。

谢谢,PM_DIALOG.

托马斯Donhauser
离线
最后一次露面:5个月2周前
加入:2019-10-20 10:45
你好,

你好,

谢谢你的回答。对不起,但你的回答没有多大帮助。上面的教程说明了如何使用SS-Studio实现这一点,有趣的信息隐藏在脚本中。但对于生产,不建议这样做。在ar NOWHERE中运行了太多步骤的脚本以一种我觉得可以与之相媲美的方式记录下来。所以我猜我是该死的脚本分析工具,以获得所需的信息。我是da14683的忠实粉丝,我对SS-Studio很满意。唯一的缺点是文档。至少,任何东西都可以在任何地方描述,但我要把所有部分信息结合成一个稳定的画面。

如果您查看我的3个问题,您将看到这是迄今为止回答了这些问题。让我提示与你判断的教程一样,没有帮助。因为I'f读过他们,我会在这里询问你。你的盖子在芯片上做得很好,但你搞砸了记录了闭管部分!

PM_DIALOG.
离线
最后一次露面:2小时44分钟前
职员
加入:2018-02-08 11:03
你好托马斯•Donhauser

你好托马斯•Donhauser

我正在处理你的问题,很快就会回复你。

谢谢,PM_DIALOG.

托马斯Donhauser
离线
最后一次露面:5个月2周前
加入:2019-10-20 10:45
THX,太棒了!

THX,太棒了!

PM_DIALOG.
离线
最后一次露面:2小时44分钟前
职员
加入:2018-02-08 11:03
亲爱的托马斯•Donhauser

亲爱的托马斯•Donhauser

请在我的纪念品下方找到。

问题1:是的,你是对的。这是测试引导加载程序本身的正确方法。您应该通过SS-Studio执行它的RAM。

问题2:是的,您可以使用CLI_Programmer才能仅在OTP中编写键。请打开CLI-Programmer.exe并执行HELP命令:

cli-programmer.exe -help返回语法:... write_key   写对称或非对称键及其位反转到OTP内存。是OTP中的一个密钥(和反相密钥)索引。对于对称键的非对称键和0-7,此参数的有效范围为0-3。是一个没有任何前缀的关键十六进制字符串。00112233ABBCCDD。非对称密钥必须具有32到64个字节的长度,并且对称密钥必须具有32个字节的长度。READ_KEY [ [KEY_IDX]]读取对称或非对称密钥。如果未传递[key_idx],则读取所有非对称或对称密钥(通过

如何将密钥写入OTP

要仅在OTP中编程一个键,请使用以下命令语法(在GDBServer在下面的语法开始后,否则可以使用UART)作为下面的示例:

CLI_Programmer GDBServer Write_OTP 0x07F8E8C0 8 0x2B7E1516 0x28aed2a6 0x0xf71588 0x09cf4f3c 0x809079E5 0x62f8ead2 0x522c6b7b 0xc810f32b

您可以使用命令语法读回键:

cli_programmer gdbserver read_otp 0x07f8e8c0 20

读结果:

1d18 16 15 7e 2b a6 d2 ae 28 ..~+…(1d19 88 15 f7 ab 3c 4f cf 09 ....< o ..1D1A E5 79 90 80 D2 EA F8 62 .y.....b 1D1B 7B 6B 2C 52 2B F3 10 {k,R+…

从UART编写安全引导设备的过程

下面是一个从UART编写安全引导设备的过程。GDB服务器也可以在命令行中使用cli_programmer代替UART。

  • 用于在OTP中编写安全启动器,使用命令使用CLI_Programmerwrite_otp_exec.
  • 要在OTP中编写键,请使用cli_programmer和命令write_key

为方便起见,你可以在附件中找到一个文件夹作为参考。请检查那里的命令。批处理文件的执行顺序从它们的名称就很明显(我让它们从订单号开始)

准备安全引导设备的操作分为两(2)段

段#1:开发人员的准备工作

  1. 生成product_keys.xml文件用键在产品中写入。键和文件可以由SmartSnippets Studio生成,或使用mkimage.exe(参见mkimage.exe的帮助),甚至手动。唯一重要的是保持格式。

重要:永远不要丢失这个文件。如果这丢失了,就不可能为该设备创建新的有效映像。

  1. 生成secure_img_cfg.xml..该文件可以由SmartSnippets Studio生成,或者使用一个批处理文件,就像附加的那样,甚至可以手动生成。唯一重要的是保持格式。

  1. 构建应用程序映像(例如pxp_reporter)。最重要的是使用SUOTA功能来构建它

  1. 为OTP构建安全引导加载程序。最重要的是使用与上面的应用程序相同的分区表。

  1. 有sw_version.h连同二进制文件,批处理文件和XML文件,以避免长路径

段#2:在大规模生产或测试台中运行的步骤。

  1. 程序FLASH与:
    1. FW镜像
    2. 图片标题
    3. 资源
  2. 在OTP中编程键
  3. 在OTP中编写安全引导加载程序
  4. 在OTP中启用安全引导和生产模式

在附加的zip文件中,有一组批处理文件供回所有上述步骤。

非常重要的说明:

libprogrammer必须用下面的修复补丁,然后重新构建libprogrammercli_programmer.exe.exe.在尝试在安全引导中程序的程序设备之前。

如果没有此修补程序,在OTP中写入键时可能会出现超时,并且具有失败。

diff --git a/utilities/cli_programmer/libprogrammer/protocol_cmds.c b/utilities/cli_programmer/libprogrammer/protocol_cmds.c index e2f592a..6609e23 100644 --- a/utilities/cli_programmer/libprogrammer/protocol_cmds.c +++ b/utilities/cli_programmer/libprogrammer/protocol_cmds.c @@ -733,7 +733,7 @@ int protocol_cmd_write_otp(uint32_t address, const uint32_t *buf, uint32_t len) return err; } - err = wait_for_ack(150); + err = wait_for_ack(1500); return err; }

问题3:正如我在前面的注释中提到的,是的,您可以在应用程序代码中重新启用它。ROM引导程序将不会在安全引导模式下启用它。

生产线工具(plt)

对话框设计了一种生产测试和编程单元,使您可以降低成本并提高单元的卷测试和编程的吞吐量。

- 易于集成:基于DLL的命令

- OTP/Flash/EEPROM编程的灵活性(也支持安全引导)

- 低总体成本的测试仪设备

—高水平的并行化和短的测试时间。

- 最多16次并行编程和测试

请查看我们的PLT支持网页

https://www.dialog-seminile.com/produ雷电竞官网登录cts/production-line-tool.

此致,

PM_DIALOG.

托马斯Donhauser
离线
最后一次露面:5个月2周前
加入:2019-10-20 10:45
亲爱的PM_Dialog !

亲爱的PM_Dialog !

非常感谢你!你的冗长答案抬起周末的想法。我将验证每个提示并执行您的推荐并在反馈后重新回来。

问候,
托马斯