如图,给有需要的同行借鉴或者讨论。 # L+ x( C; _; H4 p4 w( T. r
不错
2 l( N2 n$ [& [ V, ~; x% z& m7 Y8 \* ~
任务一中:
“运行0.2秒后,写入标志位F1,令重启后跳转到A区,目的防掉电后变砖”
这段不懂,任务一和任务二必须在0.2秒内完成吗?
(1)直接更新APP的风险在于,如果接收OTA数据包的过程中意外断电,即使重新上电也会变砖。
(2)写入标志位要快,如果等开机10秒后写入,那么这10秒期间断电就直接变砖。2 ]- P9 d. R8 Q
: F( v7 O# J8 B1 j! O0 z
(3)并非任务一和任务二必须在0.2秒内完成,而是写入标志位到FLASH这个操作必须在0.2秒内完成。目的就是防止意外断电重启后变砖。
就是bootladder任务一,开始0.2秒以后,将启动标志位设为app启动,如果下载完成,则将启动标志设为任务二启动,在这之前如果断电,说明下载未完成,启动后重新执行app任务。
任务一完成后,重启进入bootladder任务二,更新app程序,在此期间断电的话,重启进入的还是bootladder任务二,重新更新app程序,直到完成后,设启动标志为app任务。1 ?2 f. B8 X, ~% o) {
6 @! j* K' n2 t9 C. c2 O8 c
那么bootloadder任务二里,没有必要再设置一遍启动标志吧?& t# l# }# K8 I* K
& w: ]8 V5 W6 J
经过这么提醒,确实任务二中第一次写入启动标志是多余的。
还有个疑惑,任务一中,为什么要经过0.2秒后才设置启动标志,一开始就设置启动标志不行吗?
我试一下。" H8 R3 a' s S7 B2 |, ~
之前是因为写入FLASH的时候影响系统初始化,开机运行受影响。