一、参考文档
1、《SDToolBox_User_Guide.pdf》
2、《GenAutoBurnImg_User_Guide.pdf》
3、《SemiDrive_E3_MCU_eHSM_MCAL使用手册_Rev01.00》
4、《AppNote_E3_Boot_and_OTA_Rev01.06》
5、《COPY FUSE测试流程以及注意事项》
6、《密钥部署说明.pdf》
具体 GenAutoBurnlmg 和 CmdEfuseTool 工具命令的使用上述两份文档都有详细讲解。
二、操作步骤
1、使⽤ GenAutoBurnImg tool ⼯具 ⽣成img 文件
① 进入“SDToolBox_R2.23.1601\App\GenAutoBurnImg\Bin”,security_deployment.json 是默认提供的配置文件,我们可以新建一个 efuse_config.json,将我们需要烧录的 efuse 的配置从 security_deployment.json 复制粘贴到 efuse_config.json。
② 单击 GenAutoBurnImg,使用命令行将 efuse_config.json 文件打包成 efuse_config.img 文件。打包命令:GenAutoBurnImg.exe make_img --config .\efuse_config.json --output .\efuse_config.img
三、配置文件替换说明
下表中的文件需要使用特定的 ssdk3.0-key(需要找原厂申请) 中的 dloader/flashloader 编译生成,通过修改 fuse_bin.c 中的
REAL_FUSE_NOT_SHADOW_REGISTER 0/1
控制将 SDToolBox_R2.23.1601\App\GenAutoBurnImg\Bin\security_deployment.img 下载到 efuse 寄存器还是 efuse 影子寄存器,从而来测试或使用内部 Key_id,下表中的文件见附件。
sf_efuse.bin |
USB 烧录方式,将配置 efuse 的值烧录到 efuse 中 |
ospi_e3_176_ref_dloader_efuse.pac | |
sf_shadow.bin |
USB 烧录方式,将配置 efuse 的值烧录到 effuse 影子寄存器中 |
ospi_e3_176_ref_dloader_shadow.pac | |
flashloader_efuse.out |
JTAG 烧录方式,将配置 efuse 的值烧录到 efuse 中 |
ospi_e3_176_ref_flashloader_efuse.pac | |
flashloader_shadow.out |
JTAG 烧录方式,将配置 efuse 的值烧录到 effuse 影子寄存器中 |
ospi_e3_176_ref_flashloader_shadow.pac |
2、文件替换说明
替换 sf_shadow.bin 文件(USB 下载):
① 将 bin 复制到“\SSDK\E3_SSDK_PTG2.1.1_Source_Code\ssdk\devices\E3106\dloader” 文件下,替换原来的 e3_176_ref_norflash.bin 文件。
② 复制完后将 bin 文件改名成 e3_176_ref_norflash.bin。
复制 ospi_e3_176_ref_dloader_shadow.pac 文件(USB 下载):
① 将 pac 复制到“SSDK\E3_SSDK_PTG2.1.1_Source_Code\ssdk\boards\e3_176_ref\app_demo\flashloader” 文件下。
替换 flashloader_shadow.out 文件(Jtag 下载):
① 将 bin 复制到“\SSDK\E3_SSDK_PTG2.1.1_Source_Code\ssdk\devices\E3106\flashloader” 文件下,替换原来的 flashloader_norflash.bin 文件。
② 复制完后将 out 文件改名成 flashloader_norflash.out。
复制 ospi_e3_176_ref_flashloader_shadow.pac 文件(Jtag 下载):
① 将 pac 复制到“E3_SSDK_PTG2.1.1_Source_Code\ssdk\boards\e3_176_ref\app_demo\flashloader” 文件下。
四、使⽤CmdEfuseTool 链接pac包部署img
连接 dloader pac 部署 img(USB 下载):
① 单击 CmdEfuseTool,使用命令行将 将 pac 和 efuse_config.img 下载到 efuse 的影子寄存器中,命令:CmdEfuseTool.exe -pac D:\Work\2023\Project\SemiDrive\SSDK\E3_SSDK_PTG2.1.1_Source_Code\ssdk\boards\e3_176_ref\app_demo\flashloader\ospi_e3_176_ref_dloader_shadow.pac -w -bin D:\Work\APP\SDToolBox_R2.23.1601\SDToolBox_R2.23.1601\App\GenAutoBurnImg\Bin\efuse_config.img
连接 flashloader pac 部署 img(Jtag 下载):
① 单击 CmdEfuseTool,使用命令行将 将 pac 和 efuse_config.img 下载到 efuse 的影子寄存器中,命令:CmdEfuseTool.exe -pac D:\Work\2023\Project\SemiDrive\SSDK\E3_SSDK_PTG2.1.1_Source_Code\ssdk\boards\e3_176_ref\app_demo\flashloader\ospi_e3_176_ref_flashloader_shadow.pac -w -bin D:\Work\APP\SDToolBox_R2.23.1601\SDToolBox_R2.23.1601\App\GenAutoBurnImg\Bin\efuse_config.img
五、当前使用的是 Key_id 与 efuse 的对应
Key_id[1] | FSRK |
Key_id[2] | SSRK |
Key_id[3] | DPK |
Key_id[4] | FUK |
Key_id[5] | FDK/PVK0 + FDK/PVK1 |
Key_id[6] | GP_KEY0 |
Key_id[7] | GP_KEY1 |
Key_id[8] | GP_KEY2 |
这里我们打包 efuse_config.img 文件写的是 GP_KEY0,通过 IAR 的 Memory 可以看到 0xF0821140 对应就是 efuse 中 GP_KEY0 的地址。当前 Key_id[1] 还无法使用,用 CmdEfuseTool 烧录 key_id[8],0xF30F1400 这个地址的值就会变成 0x02。用 writel 函数写 key_id[8],0xF30F1400 这个地址的值就是 0x00,当 0xF30F1400 为 0x00 时 Key_id[8] 才能使用。
评论