【E3 MCAL】基于 E3210 的信息安全 Demo Bootloader 验签 APP

一、E3210 参数

E3210 是基于Dual-Core ARM Cortex-R5F 的嵌入式应用微控制器,有 32KB 的 I-Cache、32KB 的 D-Cache 和 128KB TCM,内置了 1M 的 SRAM,可以支持 8 路 CAN/CANFD、12 路 LIN/UART、百兆以太网、1 路 USB2.0、1 路 I2S 、4 路 I2C、4 路 SPI 等各种串行通信接口。



二、校验 APP 流程说明

Bootloader 校验 APP 是放在 BM 中去做的,仿照 BootRom 中校验 Boot 的流程去实现对 APP 的校验,校验函数实现逻辑是参考 “E3_SSDK_PTG3.0_Source_Code\ssdk\boards\e3_gateway\app_demo\xip_verify”例程去实现的(此例程需要打上 P2 patch)。


三、代码说明

此处使用 xip_verify 工程代码做讲解,E3210 信息安全 Demo 代码若有需要可以联系我们。

1、image_verify

① 计算 crc_c 值与 BPT 中的 crc_v 值作比较。



② 计算 APP 的 HASH 值与 BPT 中的 HASH 值作比较。



③ 判断产品是否符合生命周期,在Fuse 中可以配置产品的生命周期。



④ 计算 BPT 中 rcp 的 HASH 并与 Fuse 中的 ROTPK1_BASE 作比较。



⑤ 用存在 RCP 中的公钥,解签 BPT 中 签名(解签后得到 BPT 数据 HASH 值), 计算 BPT 数据的 HASH 值,并对比前两步骤 HASH 值是否相同。


2、fuse_init_for_demo

由于 Fuse 只能写入一次,因此在测试阶段可以采用写入 Fuse 影子寄存器的方式去测试,此处是写入了 Fuse 中 ROTPK1_BASE 槽位,用于 image_verify 函数的 ⑤ 解签。


3、Mcu_StateMachine

但 Boot_Reason == Boot_APP 时,则会启动对 APP 的校验,Semidrive_ImageVerify 函数是对 APP 在 Flash 上的数据就行校验,校验通过后才会将 APP 从 Flash 搬运到 RAM,搬运结束后会调用 Semidrive_ImageVerify_InRam 函数用了校验 RAM 上的 APP 数据与 Flash 上的 APP 数据是否保持一致,通过后才会执行 BM 跳转 APP 的代码。



四、操作流程

1、制作 PAC 包

由于采用 AB 分区的方式,并且希望所有程序都打包到一个 PAC 包中,因此需要重新制作 PAC 包,可以通过修改 json 文件来实现。



① sf_path:需要打包的 Boot 工程生成 bin 文件地址;

     downloader_path:使用 USB(dloader) 下载还是 Jtag(flashloader) 下载。

② boot_package_num:Boot 的数量,此处我们使用 AB 双分区,Boot 数量设置为 2(最大为 3)。

③ boot0_addr、boot1_addr:Boot 在 Flash 中存放的具体地址。

④ other_file:APP 在 Flash 中的存放地址,此外我们使用 AB 双分区,数量也是两个。

修改完成后调用 CMD 命令自动生成 PAC 地址:

prebuilts\windows\python-3.7.0\python.exe tools\genpac.py -f D:\Work\2023\Project\8.CATL\1.KunPeng\E3_SSDK_PTG3.0_Source_Code\ssdk\boards\e3_176_ref\app_demo\xip\pac_config_ospi.json

使用 SDToolBox 打开最新的 PAC,包含 BOOTA/B 和 APPA/B,后续若 Boot 和 APP 有变动只需要将其对应工程的 Bin 文件签上 BPT 后直接替换此处地址即可。


2、串口 log 说明



五、参考文档

参考:《SemiDrive_E3_MCAL_FUSA_User_Guide_Rev00.03》
参考:《E3210_MCU_Datasheet_Rev01.00》
参考:《E3210_MCU_TRM_Rev01.00》
参考:《AppNote_E3_Boot_and_OTA_Rev01.06》

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论