OTA设计1)固件下载流程,2)Flash分区/读写/切换,对于Flash的操作,SAMD5x/E5x的Dual Bank实现起来是非常简单的,可以参考一下AliOS-Things的Demo:
1. Flash划分https://github.com/alibaba/AliOS-Things/blob/rel_3.0.0/board/atsame54-xpro/board.c,此Demo将1MBytes的Flash分成了480K*2作为AB分区切换使用,4K+8*3K做为参数保存使用,当然还要调整相应Link文件 https://github.com/alibaba/AliOS-Things/blob/rel_3.0.0/platform/mcu/atsamd5x_e5x/Drivers/gcc/gcc/same54p20a_flash.ld
2. Flash读写,参考https://github.com/alibaba/AliOS-Things/blob/rel_3.0.0/platform/mcu/atsamd5x_e5x/hal/hal_flash_port.c
3. BANK切换其实就一条寄存器设置:https://github.com/alibaba/AliOS-Things/blob/rel_3.0.0/platform/mcu/atsamd5x_e5x/hal/misc.c#L47,参考这个Reboot函数就好了,主要判断是否需要切换BANK,如果是就调用Bank Swap寄存器设置
所以对于Flash的操作(规划分区/读写/切换)只要参考上面的设置就好了。
最主要是OTA的下载的部分,这部分属于应用层的设计,只能根据你们实际需求来做了,当然也可以参考AliOS-Things的流程,不过这个demo由于用到了阿里的IoT服务,所以里面还牵扯了很多登录认证,传输加密,MQTT消息传输,WIFI连接,TCP/IP协议栈等流程。有点小复杂,主要看你们的需求了。2018的Master里有介绍ATSAME54+ATWILC1000跑通OTA的步骤(https://bbs.21ic.com/icview-2524156-1-1.html),里面有用到阿里的云服务,可以参考一下。
|