查看: 2561|回复: 2

[分享] LPC55sxx 验证调试(Debug Authentication)经验分享

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20187
最后登录
2024-5-9
发表于 2021-6-7 18:37:46 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2021-6-17 17:35 编辑

     关于LPC55sxx debug authentication,NXP官方网站有一篇应用笔记AN13037,详细介绍了LPC55sxx debug authentication 理论知识和操作步骤,有兴趣的小伙伴可以下载下来学习参考。

    最近支持客户中,发现有些客户即使按照应用笔记的步骤操作,最后却仍然不能调试,验证失败。主要原因是SPSDK 这个工具版本不断更新,客户安装的最新版本,而应用笔记作者使用的老版本,所以作者文件内包含的文件和客户使用的工具不匹配,如果按照文档直接使用文件夹内的文件,就会验证失败。
    本篇主要介绍基于最新版SPSDKv1.3.1,对LPC55s69 mcu 进行debug authentication的步骤,也给不习惯看英文文档的小伙伴一些参看。

步骤如下:
1.     安装SPSDK。  
SPSDK 是Secure  Providing SDK 的缩写,它是一个集成了许多加密工具的软件库(https://github.com/NXPmicro/spsdk ),目前支持NXP的LPC55xx和I.MX-RT系列。所有包含的API以及使用说明都可以在此网站查看:https://spsdk.readthedocs.io/en/latest/api/dat.html
    支持以下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
1.png
(此处默认c:\nxp作为根目录)
激活环境:
venv\Scripts\activate
2.png
如果成功激活,在CMD命令行中会看到:
(venv) C:\nxp\nxp_env>
55.png

1.3. 将SPSDK安装到venv环境下。
(此命令下载并安装的是最新版本SPSDK)
11111.jpg
安装结束后,借助help命令查看是否安装好了:
spsdk –help
4.png
下载安装好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
5.png

2.2 生成一对DCK
6.png
如果都生成成功,可以在Keys文件夹下看到五对秘钥。
7.png
后面步骤会用到这些文件。其中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
8.png

3.2 生成CFPA
所用到的cfpa_example_config.json配置文件同样见文末附件。
pfr generate -ccfpa_example_config.json -i -o cfpa.bin
9.png

4. 签发证书:
实际使用中,此处是使用者将DCK的公钥给开发商,然后开发商利用此公钥,加上RoT的私钥和公钥来签发证书。使用者拿着这个证书验证,通过后就可以调试。
(具体证书原理,可以网上搜索了解。)
生成证书命令:
(venv) C:\nxp>nxpkeygen gendc -ckeys\config.yml keys\dck_rsa_2048.dc
10.png
证书生成后,自动存放到keys文件夹内:
11.png

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
12.png

6.尝试调试:
复位mcu,调试,发现无法连接芯片。
13.png

7. 调试认证:
使用者拿着DCK的私钥和开发者给颁发的证书进行debug验证。
nxpdebugmbox -i pyocd -p 1.0 auth -b 0 -c keys\dck_rsa_2048.dc -kkeys\dck_rsa_2048.pem
authentication.jpg
如果验证通过,可以看到:
sucessful.jpg

8.再次调试:
验证通过后,再点击debug 按钮进行调试,可以成功连接板子并运行了。

Authenticaion_test_file.zip

14.68 KB, 下载次数: 9, 下载积分: 威望 1

回复

使用道具 举报

  • TA的每日心情
    开心
    昨天 16:53
  • 签到天数: 1338 天

    [LV.10]以坛为家III

    88

    主题

    4296

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9063
    最后登录
    2024-5-9
    发表于 2021-6-8 09:08:46 | 显示全部楼层
    本来对python没有太大的好感。
    现在看来,python的应用范围还是比较广,要抓紧学习了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-8-30 17:43
  • 签到天数: 306 天

    [LV.8]以坛为家I

    14

    主题

    1746

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    2541
    最后登录
    2023-8-30
    发表于 2021-6-8 18:41:47 | 显示全部楼层
    感谢分享,真心不错
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-10 00:07 , Processed in 0.116778 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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