本帖最后由 小恩GG 于 2023-4-19 14:24 编辑
准备工作: 硬件:lpc55s66
具体步骤如下: 1,新建工作空间 打开SEC, 新建一个工作空间,选择处理器,选择芯片连接接口,开发周期选择Development,启动模式Boot选择“Signed”(因为需要配置CMPA,CFPA,所以此处需要选择Signed启动方式。然而选择此方式就意味着使能了secure boot功能,如果不需要使能secure boot功能, 后续配置CMPA,CFPA时,关闭即可。)。
2,生成密钥 选择“PKImanagement”界面。 点击“Generatekeys…”按钮生成4对密钥,配置密钥类型和长度。(实际开发中,这个密钥就是OEM生成并使用的。)
3,生成配置文件CMPA和CFPA 打开“Build image”界面,添加应用工程的二进制文件,填写启动地址,选择密钥,生成SBKEK,最后编译。
确定成功编译后,在工作空间文件夹gen_sb下可以找到cfpa.bin 和cmpa_non_sealed.bin。注意:此处不建议使用cmpa_sealed.bin,因为这个将锁死芯片的配置,不可逆的,开发阶段使用non_sealed.令,因为步骤1周开发周期选择的Development, 所以SEC默认也会使用。cmpa_non_sealed.bin
4,使能验证调试。 配置芯片的CMPA和CFPA,使能调试验证,并将四对密钥中公钥的哈希值写入CMPA中。 此处,我们需要手动修改CMPA和CFPA。
4.1,配置cmpa.bin 打开cmpa_non_sealed,参考lpc55s66用户手册以及附件中的excel表格,配置cmpa。 主要配置CC_SOCU_PIN和CC_SOCU_DFLT,详细介绍可以参考芯片用户手册,或者 AN13037。 PIN/DFLT bit field settings: • 1/1 - debug access always enabled(pinned) • 1/0 - debug access always disabled(pinned) •0/0 - debug access enabled using debugauthentication
所以,使能debug authentication,需要配置CC_SOCU_PIN和CC_SOCU_DFLT每位(bits0:15)为0, bit 16:31取反。所以,配置0x9e410 -0x9e413 为 00 00 FF FF ,配置0x9e414 -0x9e417 为 00 00 FF FF
更改如下:
此文章不使能安全启动(secure boot),所以SEC_BOOT_EN选择plain image (00), SKIP_DICE配置为00. (具体位置可以参考用户手册中附件Projected Flash Region 表格)。
更改如下:
4.2 配置cfpa.bin 打开cfpa.bin,增加版本号,可以提前进入ISP模式,读取版本号,如果时02,那么设置为大于等于03即可。本文设置为03:
根据芯片用户手册,VENDOR_USAGE,DCFG_CC_SOCU_NS_PIN,DCFG_CC_SOCU_NS_DFLT, 这三部分的高16位根据低16的取反,所以配置如下:
修改完成后,保存。
4.3烧写CMPA/CFPA 使芯片进入ISP 模式,SEC 支持USB, UART,SPI已经I2C,此文章使用UART。 建立连接:Target->Connections…->configureUART port and Baud rate, then click “Test connection” button:
Result 显示0K,说明连接成功,点击OK。
打开“Write image”界面,点击“Write image”,烧写cmpa和cfpa. 至此,(OEM)使能了验证调试。
5.调试申请 返回“PKI management”界面,点击“Generate debug key…”生成调试密钥,长度和类型需要和OEM生成的密钥一致。
生成调试申请证书: 点击“Create debugcertificate request…”, “Debugpublic key”选择上一步生成的调试密钥的公钥,UUID 全零代表可以调试所有此型号的芯片,根据客户实际需求也可以配置位某一块芯片的UUID。
选择证书存放路径,此文选择默认路径。
6. 生成调试证书 此步骤实际中由OEM完成。 点击“Generate debugcertificate…”, 证书申请选项选择上一步生成的申请,”Sign with ROT key” 选择四对密钥中某一个私钥,选择生成证书的路径: 点击OK,证书生成。
7. 调试: 点击“Open debugport…”, “Debug certificate”选择步骤6中生成的证书,”Debug private key”选择调试密钥的私钥,“Probe”选择调试接口,点击OK。 成功后,就可以用调试器正常调试。
小结: 本文介绍了借助MCUXpressoSecure Provisioning 工具实现验证调试,配置使能了验证调试功能后,强烈不建议恢复默认(关闭验证调试),很有可能芯片锁死,无法进入ISP模式。
|