本帖最后由 小恩GG 于 2021-6-17 17:35 编辑
关于LPC55sxx debug authentication,NXP官方网站有一篇应用笔记AN13037,详细介绍了LPC55sxx debug authentication 理论知识和操作步骤,有兴趣的小伙伴可以下载下来学习参考。
最近支持客户中,发现有些客户即使按照应用笔记的步骤操作,最后却仍然不能调试,验证失败。主要原因是SPSDK 这个工具版本不断更新,客户安装的最新版本,而应用笔记作者使用的老版本,所以作者文件内包含的文件和客户使用的工具不匹配,如果按照文档直接使用文件夹内的文件,就会验证失败。 本篇主要介绍基于最新版SPSDKv1.3.1,对LPC55s69 mcu 进行debug authentication的步骤,也给不习惯看英文文档的小伙伴一些参看。
步骤如下: 1. 安装SPSDK。
支持以下NXP产品: 支持的PC系统:- Windows 10, 64bit
- Ubuntu 16.04 or above, 64bit
- Mac OS 10.13 or above, x64
1.1 SPSDK是基于python 库和命令,所以需要先安装python,python3.6及以上版本。 根据个人电脑系统下载安装,我使用的是Win10-64bit.安装的python3.9.3.
1.2 创建python虚拟环境: python -mvenv nxp_env\venv (此处默认c:\nxp作为根目录) 激活环境: venv\Scripts\activate
如果成功激活,在CMD命令行中会看到: (venv) C:\nxp\nxp_env>
1.3. 将SPSDK安装到venv环境下。 (此命令下载并安装的是最新版本SPSDK) 安装结束后,借助help命令查看是否安装好了: spsdk –help 下载安装好SPSDK后,在GitHub上可以找到对应版本的使用例子以及需要的文件。
2. 生成需要的5对秘钥。 四对是用来加密MCU的,英文名是Roots of Trust,简称ROT。 一对用来签发证书使用,英文名DebugCredential Key, 简称 DCK。 实际使用中,ROT是供应商所有,DCK在使用者手里。
2.1 生成四对RoT. (venv) C:\nxp>nxpkeygen -p 1.0 genkey keys\rot0_2048.pem (venv) C:\nxp>nxpkeygen -p 1.0 genkey keys\rot1_2048.pem (venv) C:\nxp>nxpkeygen -p 1.0 genkey keys\rot2_2048.pem (venv) C:\nxp>nxpkeygen -p 1.0 genkey keys\rot3_2048.pem
2.2 生成一对DCK 如果都生成成功,可以在Keys文件夹下看到五对秘钥。 后面步骤会用到这些文件。其中rotx_2048.pub是公钥,需要将四个公钥的哈希值写入CMPA,使用SPSDK 工具生成cmpa.bin,再用blhost烧写斤芯片。
3. 配置芯片的PFR 3.1 生成配置CMPA的文件 cmpa.bin, 需要用到四把RoT的公钥,和一个cmpa_example_config.json配置文件,配置文件可以在附件中找到。 pfr generate -c cmpa_example_config.json -i -fkeys\rot0_2048.pub -f keys\rot1_2048.pub -f keys\rot2_2048.pub -f keys\rot3_2048.pub-o cmpa.bin
3.2 生成CFPA 所用到的cfpa_example_config.json配置文件同样见文末附件。 pfr generate -ccfpa_example_config.json -i -o cfpa.bin
4. 签发证书: 实际使用中,此处是使用者将DCK的公钥给开发商,然后开发商利用此公钥,加上RoT的私钥和公钥来签发证书。使用者拿着这个证书验证,通过后就可以调试。 (具体证书原理,可以网上搜索了解。) 生成证书命令: (venv) C:\nxp>nxpkeygen gendc -ckeys\config.yml keys\dck_rsa_2048.dc 证书生成后,自动存放到keys文件夹内:
5. 开始测试 5.1打开一个lpc55s69 的SDK demo, 例如led_blinky, 连接板子,debug,确保可以正常运行。(此时还没有启用debug authentication.)
5.2 用blhost 将cmpa.bin 和cpfa.bin烧写到mcu。 是lpc55s69进入ISP模式,通过串口把两个文件烧写到对应的位置。 1)首先测试串口是否通,串口号根据自己板子和电脑连接的实际情况而定,我的是COM25。 blhost -p COM25 get-property 1 2)把cmpa.bin烧写到CMPA起始地址0x9e400,cfpa.bin烧写到CFPA起始地址0x9de00。注意每款芯片的CMPA和CFPA地址也许不同,请查看对应的手册更改。 blhost -p COMx write-memory 0x9e400 cmpa.bin blhost -p COMx write-memory 0x9de00 cfpa.bin
6.尝试调试:
复位mcu,调试,发现无法连接芯片。
7. 调试认证: 使用者拿着DCK的私钥和开发者给颁发的证书进行debug验证。 nxpdebugmbox -i pyocd -p 1.0 auth -b 0 -c keys\dck_rsa_2048.dc -kkeys\dck_rsa_2048.pem 如果验证通过,可以看到:
8.再次调试: 验证通过后,再点击debug 按钮进行调试,可以成功连接板子并运行了。
|