安全引导加载程序测试

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
9个帖子/ 0个新
最后发表
托马斯Donhauser
离线
最后看到:4个月,3个星期前
加入:2019-10-20 10:45
安全引导加载程序测试

这就跟你问声好!

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

1)什么是最好的方式来测试引导加载程序本身?现在我通过SS-Studio在RAM中启动它。但不确定这是对还是错?

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

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

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

谢谢,

托马斯。

设备:
PM_Dialog
离线
最后看到:1天7小时前
工作人员
加入:2018-02-08 11:03
你好托马斯•Donhauser

你好托马斯•Donhauser

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

谢谢,PM_Dialog

托马斯Donhauser
离线
最后看到:4个月,3个星期前
加入:2019-10-20 10:45
你好,这是da14683 USB-Kit

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

谢谢!

PM_Dialog
离线
最后看到:1天7小时前
工作人员
加入: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
离线
最后看到:4个月,3个星期前
加入:2019-10-20 10:45
你好,

你好,

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

如果你看看我提出的3个问题,你会发现到目前为止没有一个问题得到回答。给我一些像你提到的教程的提示是没有帮助的。因为在我请你们来支持我之前我已经读过了。你们在芯片上做得很好,但是你们在记录有趣的部分时搞砸了!

PM_Dialog
离线
最后看到:1天7小时前
工作人员
加入:2018-02-08 11:03
你好托马斯•Donhauser

你好托马斯•Donhauser

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

谢谢,PM_Dialog

托马斯Donhauser
离线
最后看到:4个月,3个星期前
加入:2019-10-20 10:45
谢谢,太好了!

谢谢,太好了!

PM_Dialog
离线
最后看到:1天7小时前
工作人员
加入:2018-02-08 11:03
亲爱的托马斯•Donhauser

亲爱的托马斯•Donhauser

请在我的评论下面找到。

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

问题2:是的,你可以使用cli_programmer来只写OTP中的键。请打开cli-programmer.exe并执行帮助命令:

cli-program .exe -help返回语法:…write_key   将对称或非对称密钥及其位反转写到OTP内存中。是OTP中的键(和反键)索引。此参数的有效范围为0-3(非对称键)和0-7(对称键)。是一个没有任何前缀的十六进制密钥字符串,例如00112233AABBCCDD。非对称密钥长度为32 ~ 64字节,对称密钥长度为32字节。Read_key [ [key_idx]]读取对称或非对称密钥。如果[key_idx]没有传递,则读取所有非对称或对称密钥(type由选择)。如果没有传递,则读取所有非对称和对称密钥. ...

如何写一个键到otp

为了只编程一个键进入OTP,使用下面的命令语法(在gdbserver启动之后,下面的语法,否则可以使用UART),如下所示:

cli_programmer gdbserver write_otp 0x07F8E8C0 8 0x2b7e1516 0x28aed2a6 0xabf71588 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_programmer与命令write_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. 弗兰克-威廉姆斯的图像
    2. 图片标题
    3. 的资源
  2. 编写OTP中的键
  3. 在OTP中编写安全引导加载程序
  4. 在OTP中启用安全引导和生产模式

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

非常重要的注意:

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

如果没有这个补丁,在OTP中写入密钥时可能会超时并出现故障。

b/utilities/cli_programmer/libprogrammer/protocol_cmds.c索引e2f592a../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);返回错误;}

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

生产线工具(plt)

Dialog设计了一个生产测试和编程单元,使您能够在单元的体积测试和编程中降低成本和增加吞吐量。

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

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

低成本的测试设备

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

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

请查看我们的PLT支持网页

//www.wsdof.com/雷电竞官网登录products/production-line-tool

最好的问候,

PM_Dialog

托马斯Donhauser
离线
最后看到:4个月,3个星期前
加入:2019-10-20 10:45
亲爱的PM_Dialog !

亲爱的PM_Dialog !

非常感谢!你啰嗦的回答使我周末心情舒畅。我会核实每一个提示,执行你的建议,然后反馈给你。

问候,
托马斯。