野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10140|回复: 14

RT1052烧写秘钥到efuse之后再烧录签名的程序或加密的程序都无法正确启动 【已解决】

[复制链接]
发表于 2018-9-29 20:18:33 | 显示全部楼层 |阅读模式
本帖最后由 zdx61115 于 2018-9-30 16:42 编辑

当前状态:MCU的efuse已经烧入了秘钥(在没有烧录efuse之前,使用flashloader工具来烧录未签名和未加密的代码都是可以运行的。)
              
我使用MfgTool2工具进行加密下载(SecureBoot)时整个过程也都是没问题的,都能正常下载,但是下载完毕之后无论 BT_CFG1_1 拉高还是拉低都无法正常启动程序(程序和在未签名烧写测试的时候是同一个程序)。


程序签名方式:
      程序签名使用的就是官方提供的文件“imx-flexspinor-normal-signed.bd”改动参数如下:
[mw_shl_code=java,true]options {
flags = 0x08;
startAddress = 0x60000000;
ivtOffset = 0x1000;
initialLoadSize = 0x2000;
DCDFilePath = "dcd.bin";
entryPointAddress = 0x60002000;
}[/mw_shl_code]

      程序QSPI Flash配置使用的是“program_flexspinor_image_qspinor.bd”文件,改动参数如下(使用的是华邦的W25Q256):
[mw_shl_code=java,true]section (0) {
    load 0xc0000207 > 0x2000;
    enable flexspinor 0x2000;
    erase 0x60000000..0x60040000;
    load 0xf000000f > 0x3000;
    enable flexspinor 0x3000;
    load myBinFile > kAbsAddr_Ivt;
}[/mw_shl_code]

程序加密方式也是把相应的文件中的配置改成上面这种参数,但是也无法运行。。。


疑问如下:
1.目前我不清楚我是否已经写入了正确的秘钥到efuse中?(签名的flashloader可以正常运行和引导程序下载这个应该说明是正确写入了吧)
2.为什么一样的配置,签名方式和加密方式都无法正确启动?


回复

使用道具 举报

发表于 2018-9-29 20:26:57 | 显示全部楼层
1.可以使用blhost命令读出efuse的烧写内容跟你的SRK是否一致。命令如下:efuse-read-once 0x18
2.从你上面的bd文件来看只是做了签名启动
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-29 20:30:15 | 显示全部楼层
cancore 发表于 2018-9-29 20:26
1.可以使用blhost命令读出efuse的烧写内容跟你的SRK是否一致。命令如下:efuse-read-once 0x18
2.从你上面 ...

加密方式的我也试过,不过没贴上来。可以分析得出来我签名方式为什么无法启动吗?是否还需要提供一下其他的相关信息?
回复 支持 反对

使用道具 举报

发表于 2018-9-29 20:34:35 | 显示全部楼层
zdx61115 发表于 2018-9-29 20:30
加密方式的我也试过,不过没贴上来。可以分析得出来我签名方式为什么无法启动吗?是否还需要提供一下其他 ...

不能启动是一直进入BootLoader吗?如果是就是校验失败,先确保SRK table的内容跟你读取的efuse是否一致。
回复 支持 反对

使用道具 举报

发表于 2018-9-29 20:40:43 | 显示全部楼层
cancore 发表于 2018-9-29 20:34
不能启动是一直进入BootLoader吗?如果是就是校验失败,先确保SRK table的内容跟你读取的efuse是否一致。

另外还要补充的一点是,加密前生成的srec文件得去掉xip部分内容,必须是从0x60002000开始的固件,否则也会验签失败
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-29 20:43:33 | 显示全部楼层
cancore 发表于 2018-9-29 20:34
不能启动是一直进入BootLoader吗?如果是就是校验失败,先确保SRK table的内容跟你读取的efuse是否一致。

如何确认启动的时候是一直进入BootLoader?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-29 20:45:42 | 显示全部楼层
cancore 发表于 2018-9-29 20:40
另外还要补充的一点是,加密前生成的srec文件得去掉xip部分内容,必须是从0x60002000开始的固件,否则也 ...

是从固件开始的吗?不包括IVT段吗?我目前是包括了IVT段,只删掉了前面的1k
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-29 20:50:05 | 显示全部楼层
cancore 发表于 2018-9-29 20:40
另外还要补充的一点是,加密前生成的srec文件得去掉xip部分内容,必须是从0x60002000开始的固件,否则也 ...

刚刚确认了下,efuse值和我的SRK一致的
回复 支持 反对

使用道具 举报

发表于 2018-9-29 20:58:51 | 显示全部楼层
zdx61115 发表于 2018-9-29 20:43
如何确认启动的时候是一直进入BootLoader?

你开着mfgtool,无论怎么复位一直都能识别到设备就是一直进入BootLoader
回复 支持 反对

使用道具 举报

发表于 2018-9-29 20:59:46 | 显示全部楼层
zdx61115 发表于 2018-9-29 20:45
是从固件开始的吗?不包括IVT段吗?我目前是包括了IVT段,只删掉了前面的1k

IVT内容都是自动填充的,不能包括IVT段
回复 支持 反对

使用道具 举报

发表于 2018-9-29 21:02:59 | 显示全部楼层
zdx61115 发表于 2018-9-29 20:50
刚刚确认了下,efuse值和我的SRK一致的

建议先确保签名启动能正常,再进行下一步加密,另外加密是哪一种加密方式?XIP?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-30 09:11:30 | 显示全部楼层
cancore 发表于 2018-9-29 20:58
你开着mfgtool,无论怎么复位一直都能识别到设备就是一直进入BootLoader

目前试了下,是一直可以识别到设备的。如果efuse秘钥和SRK不一致应该签了名的FlashLoader也会不能允许吧? 但是目前是签了名的FlashLoader一切正常。。。如果的确是SRK的问题,这个东西我在生成出来之后就一直没有动过的呀?(不过我重复操作生成秘钥好几次,它也只是提醒了我证书被正常更新,但是在我做了熔断efuse操作之后我就再也没有动过秘钥了)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-30 09:12:50 | 显示全部楼层
cancore 发表于 2018-9-29 21:02
建议先确保签名启动能正常,再进行下一步加密,另外加密是哪一种加密方式?XIP?

嗯,我一开始也是这么弄的,然后发现无论怎么样程序都不能启动,然后我就试着弄弄加密启动看看行不行。。。最后发现都不行
回复 支持 反对

使用道具 举报

发表于 2018-9-30 09:26:42 | 显示全部楼层
zdx61115 发表于 2018-9-30 09:11
目前试了下,是一直可以识别到设备的。如果efuse秘钥和SRK不一致应该签了名的FlashLoader也会不能允许吧 ...

没错,签了名的flashloader可以运行就证明STK正确了,这个千万别重复生成密匙了,请确保固件从0x60002000开始做一次签名启动试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-30 09:57:21 | 显示全部楼层
cancore 发表于 2018-9-30 09:26
没错,签了名的flashloader可以运行就证明STK正确了,这个千万别重复生成密匙了,请确保固件从0x60002000 ...

看了你这句回复之后我又重新确认了下生成的bin文件,发现我在生成sb文件的时候使用错文件了,用到了已填充的bin文件去了,导致后面启动引导位置久不正确了。。。现在签名启动已经搞定了!重新搞加密!!!谢谢大佬!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-27 15:52 , Processed in 0.040747 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表