一、概述
-
其实早在六、从0开始卷出一个新项目瑞萨RZN2L之loader app分离工程优化,我们就分享了通过loader+app(FSP1.1.0)实现固件升级
-
但是近期升级到FSP2.1.0确实不好用了,本文分享新的工程源码和其中的问题
-
源码只包括工程构建和必备的功能,例如固件具体传输、校验需自行实现
二、源码和问题说明
-
提供了基于FSP1.1.0和FSP2.1.0的官方的loader+app双工程
RZN2L_bsp_xspi0bootx1_loader_fsp110
RZN2L_bsp_xspi0bootx1_app_fsp110RZN2L_bsp_xspi0bootx1_loader_fsp200
RZN2L_bsp_xspi0bootx1_app_fsp200 -
可以通过串口/usb来查看loader引导app的过程
-
可以通过串口、usb、以太网等在loader中传输固件,需自己实现
-
低于FSP1.3.0版本升级到FSP2.0.0以上版本,启动和链接文件改动较大。
-
源码是较通用的加载方式,更高级的分散加载需要自行修改,可以参考w我的十一、从0开始卷出一个新项目之瑞萨RZN2Lrzn2l_coremark_fsp200工程构建和gcc .ld链接文件的修改方法和
嵌入式科普(21 22 29)c代码究竟是如何一步步运行的 -
新旧版本使用的GCC编译器也影响
-
FSP驱动存在未判断回调函数是NULL的bug
三、重新理解芯片引导启动过程
-
芯片启动
-
loader text
-
loader startup本质
四、固件加密
-
OTP和UID
-
AES加密
https://github.com/kokke/tiny-AES-c
五、其他固件升级方案
-
UART/USB启动
参见相关例程 -
EtherCAT FOE
参见相关例程,带双分区 -
以太网升级例程
未提供xspi版本
六、总结
-
回头再看芯片启动过程、升级固件引导过程还是细节很多,未理解本质一定会碰到问题
-
loader+app属于熟知的“IAP升级”有灵活性;UART/USB启动、EtherCAT FOE只需要很少的研发投入
-
固件加密的思考