CH579 BLE OTA升级备忘

CH579 BLE OTA升级备忘
官方例程业OTA和IAP两部分,将FLASH分为三部分如下
MAIN区:0---------------0X1E000(120K)
更新区 :0X1E000----0X3C000(120K)
IAP :0X3C000-------------------(10K)
在这里插入图片描述

程序总体思路是:将FLASH分为前后120K+120K+10K三个区,为了方便描述,简称对应ABC三区,A区和B区实际上只是一个程序,在KEIL中更改不同的STAT地址,生成对应地址的BIN文件,用于主要用户的APP部分,C区主要为拷贝程序,
在A区完成OTA文件传输后,
DisableAllIRQ();
/* 保证打印结束 /
DelayMs( 10 );
/
跳入ImageIAP运行 */
GotoResetVector(IMAGE_B_ENTRY_ADD);//IMAGE_IAP_ENTRY_ADD);--------此处跳入地址为0X1E000(即120K处)
此时为关中断状态的,在此120K处,ReadImageFlag确定(升级标记写在0x0003E800)当前是哪个分区, 发现是在B区运行,则将当前中断向量拷入到0处(因为中断向量表无法像STM32那样映射),这样的话,就可以直接在B区完整运行程序了,即使下次启动,中断向量也是拷贝的B区的,所以它将直接跳到B区运行程序了。
理论上讲,这样只要AB就可以完成互相升级工作,但一般有BLE的库,加上用户的程序,占用SIZE较多,120K空间不足,我的想法是,外扩FLASH,将OTA传来的文件转在外扩的W25Q32中,等文件传完,再跳转到IAP,将所有W25Q中的数据搬到内部FLASH然后重启(以前多次用过这个方法,通过串口,网口均适用,我想BLE也没问题,暂还未尝试)

主要文件传输处理函数在:

  • Function Name : Rec_OTA_IAP_DataDeal
  • Description : 接收到OTA数据包处理------------烧写、校验、完成处理过程均在此
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值