SemiDrive E3 SSDK和MCAL打包的区别

一、前言

  1. 打包的目的:
  • 将编译产物bin文件转换为Boot Package格式。ROM启动时需要识别这种格式的文件。
  • 将Boot Package形成PAC文件用于下载工具烧录。PAC文件中包含了Dloader、SFS 等其他需要烧录或参与烧录过程的文件。
  1. 打包环境

硬件平台:芯驰 E3640 E3_GATEWAY_A03 开发板

软件平台:SemiDrive_E3 SSDK PTG3.0/MCAL PTG3.0

 

二、PAC文件结构和打包过程

  1. 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 脚本自动打包

  1. 编译后由 SemiDrive 提供的 SSDK 中脚本 tools/genpac.py 自动打包,py 可以解析项目的打包配置文件 pac_config.json,一键完成自动打包:
  • 将编译产物 binary 合成 BootPackage;
  • 选择 SFS 的配置文件,将配置文件转换为 img 用于打包,同时能够指定 Boot Package 的地址;
  • 选择打包 Dloader 或 Flashloader,对 Dloader 进行签名,Flashloader 不签名;
  • 可以进行加密配置;
  • 形成 SDFactoryTool 软件烧录所需的 PAC 文件;

 

  1. 指定 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 打包流程

  1. 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 编译生成文件

  1. 自动打包

        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 / 李亚楠

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

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

评论