一、前言
- 打包的目的:
- 将编译产物bin文件转换为Boot Package格式。ROM启动时需要识别这种格式的文件。
- 将Boot Package形成PAC文件用于下载工具烧录。PAC文件中包含了Dloader、SFS 等其他需要烧录或参与烧录过程的文件。
- 打包环境
硬件平台:芯驰 E3640 E3_GATEWAY_A03 开发板
软件平台:SemiDrive_E3 SSDK PTG3.0/MCAL PTG3.0
二、PAC文件结构和打包过程
- PAC文件是下列文件的集合:
图 1 pac文件内容
2.下图为打包过程示意图:
图 2 打包步骤
- sfs.img 仅存在于Nor/Hyper Flash的pa c包中,存储 Flash 信息,供 ROM 启动时读取。
- rfd.img 仅存在于 Nor/Hyper Flashpac 包中,用于 Flash 加密启动。
- 存储设备 eMMC 与 SDcard 所使用 PAC 文件是一样的,区别在于工具下载 SDcard 时,仅下载 BOOT2.img 作为 Normal Boot Package 文件,因为 SDcard 仅支持 1 个 Boot Package。
- FDA.img 是 Dloader 或 Flashloader 程序,这里称为 Downloader 程序。该程序仅下载时存在于 IRAM,不占用系统的存储空间。
- 当 FDA.img 为 Dloader 时,拨码至 USB 模式上电,ROM 启动后,工先下载 Dloader 程序至 IRAM 中,ROM 接收完 Dloader 程序并校验通过后在 IRAM 中运行该程序,Dloader 会初始化通讯接口与存储设备,然后与上位机进行通讯,根据指令将各个 Boot Package、SFS、RFD 文件写入到存储设备中。
- 当 FDA.img 为 Flashloader 时,拨码至 JTAG/SWD 模式上电,工具将 Flashloader 程序加载到 IRAM 中,然后调用 Flashloader 中的函数将各个 Boot Package、SFS、RFD 文件写入到存储设备中。
三、 SSDK 之 Python 脚本自动打包
- 编译后由 SemiDrive 提供的 SSDK 中脚本 tools/genpac.py 自动打包,py 可以解析项目的打包配置文件 pac_config.json,一键完成自动打包:
- 将编译产物 binary 合成 BootPackage;
- 选择 SFS 的配置文件,将配置文件转换为 img 用于打包,同时能够指定 Boot Package 的地址;
- 选择打包 Dloader 或 Flashloader,对 Dloader 进行签名,Flashloader 不签名;
- 可以进行加密配置;
- 形成 SDFactoryTool 软件烧录所需的 PAC 文件;
- 指定 SSDK demo 打包
- 打包命令:
prebuilts\windows\python-3.7.0\python.exe tools\genpac.py -b e3_gateway -p gpio -v IAR -c Debug -f devices\E3640\pacconfig\pac_config_sf.json --chipid=E3640 -d dloader
图3 执行打包命令
- 工具烧录和启动验证
图4 工具烧录
图5 启动验证
四、 MCAL 打包流程
- IAR编译工程
请先通过IAR将想要打包的Project以Release的形式先进行make,
图6 切换 Release 模式
Project→Edit Configurations→Release
make 后会得到编译后的工程bin文件。
通过 IAR IDE 环境进行编译 MCAL 工程,(需为 Release 工程)编译产物路径为:
iar/iar_v850/$(PROJECT)/Release/Exe/$(BOARD).bin ;
以 E3_ref_gateway_E3640 为例:
生成的 bin 文件在 \MCAL\MCAL_release\iar\iar_v850\E3_ref_gateway_E3640\Release\Exe 下
图7 编译生成文件
- 自动打包
SemiDrive 提供的 MCAL 中包含打包自动打包脚本 tools/mcal_genpac.py , mcal_genpac.py 可以解析项目的打包配置文件 pac_config.json 进行打包,可以一键完成,并且已将脚本打包成脱离环境的 exe 可执行文件 tools/mcal_genpac.exe :
- 将编译产物 binary 合成 BootPackage;
- 选择 SFS 的配置文件,将配置文件转换为 sfs.img 用于打包,同时能够指定 Boot Package 的地址;
- 选择打包 Dloader 或 Flashloader,对 Dloader 进行签名,Flashloader 不签名;(注:默认将board的对应Dloader和Flashloader都打包进Pac包中,默认使用Dloader)
- 可以进行加密配置;
- 形成SDFactoryTool软件烧录所需的PAC文件
打包命令:.\tools\mcal_genpac.exe -p E3_ref_gateway_E3640 -v IAR
图8 执行打包命令
图9 工具烧录
图10 启动验证
五、 总结:
编译时注意 Debug/Release 模式的切换(SSDK 使用 Debug 模式编译即可,而 MCAL 的 Release 用于通过 SDtools 方式烧写);
注意两者打包时 cmd 指令的区别。特别是 MCAL 打包时, E3640 默认为 hyperflash,当需要指定为 norflash 时,需要在后面添加 -f norflash 参数。E3106、E3104、E3110、E3205 系列默认为 norflash,当需要指定为 hyperflash 的时候需要添加 -f hyperflash。(具体命令参数解析和打包的规则见参考文档)。
如对此有更多需求,敬请联系世平集团 ATU 部门,atu.cn@wpi-group.com。
六、 参考文档
《AppNote_E3_Boot_and_OTA》
《E3系列MCAL打包工具User Guide》
欢迎在博文下方留言评论,我们会及时回复您的问题。如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com
作者:Alan Li / 李亚楠
评论