stm32BootLoader初接触-2

上次已经弄清楚f2板子的flash操作,将HAL库的一些函数取出,改成以地址为输入参数的擦除与写入函数。

现在需要理清  flash里的两个app 和SD卡里待升级的app之间的  升级关系  与  跳转关系。

升级关系:

flash当中储存了两个app,和两个app的状态,每个app有三个状态:status,use,version。

status状态表示了app是否是新更新的,每个app在更新时,新写入的永远标志都为newer,而flash当中没有被擦除掉剩余的(flash当中有两个app,每次只擦除刷写其中一个)则在更新后被置为older(无论之前status是什么,都被置为older)

use状态表示了这个app是不是可用的(也就是可以顺利启动跑起了的),每个app在写入的时候这个状态都是cant_use,BootLoader会先跳转至newer状态的app并运行,如果能够成功运行一段时间(待确定),则在用户程序中将这个newer状态的app的use状态改写为can_use。

version 是此版本的版本号,作为此次开发的板子,由于没有任何外界触发条件(即没有按钮与屏幕的输入),所以板子每次上电都是自动检测是否更新app,以version版本号作为是否更新的条件。

升级过程:(合并词--SDversion == SDapp的version)

上电——检测flash中两个app的version和SD卡中app的version,若SDversion > flashversion,证明此SDapp没有被更新过,进入更新状态———比较flashapp的use位,优先更新cant_use状态的app,若没有cant_use则比较status,升级olderapp——更改status状态——将app[2]状态写入flash


跳转关系:

BootLoader引导后跳转至newer状态的app——能够运行,写flash更改newerapp的use状态为can_use。

若不能使用,暂时未解决,下面是不能使用的思想:

BootLoader引导后跳转至newer状态的app——多次不能运行,在引导程序中写flash更改status为older,则BootLoader再次引导时若没有newer,则跳转至can_use状态的app。


用户升级设备时,若进入升级状态则以跑马灯表示进入,亮蓝灯表示正在升级,升级成功则亮5s绿灯,在以跑马灯结尾表示升级结束进入用户程序。

若失败,则亮红灯不变。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值