你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
any012 发表于 2019-8-14 10:17 " S, o8 Y6 v. O8 G+ S% I; y请教,bootloader为什么要分任务一和任务二,下载完后直接更新app不行吗? 1 }' G" G, Q6 E , K d: l. {4 w: M# E9 {# h任务一中:
any012 发表于 2019-8-14 10:565 b$ D' a+ B3 q! w% W/ I- c& i 谢谢,受教。( `5 a! N$ k$ r! A8 V: _9 r ( m. y q* V) n2 f$ F7 Z, f 就是bootladder任务一,开始0.2秒以后,将启动标志位设为app启动,如果下载完成,则将启动标 ...
奏奏奏 发表于 2019-8-14 11:17 0 C7 s1 p5 d6 M" N/ O8 p, T3 W经过这么提醒,确实任务二中第一次写入启动标志是多余的。
any012 发表于 2019-8-14 11:27 2 {1 M# t }7 q$ f还有个疑惑,任务一中,为什么要经过0.2秒后才设置启动标志,一开始就设置启动标志不行吗? ...
不错
任务一中:* ^) J6 D2 N, R6 q. n
“运行0.2秒后,写入标志位F1,令重启后跳转到A区,目的防掉电后变砖”
这段不懂,任务一和任务二必须在0.2秒内完成吗?! p" L! k4 w6 d) u
(1)直接更新APP的风险在于,如果接收OTA数据包的过程中意外断电,即使重新上电也会变砖。4 Q" j+ o; @, y' a3 N
' C. Q! @2 g& h6 b; L3 I: @& x
(2)写入标志位要快,如果等开机10秒后写入,那么这10秒期间断电就直接变砖。
(3)并非任务一和任务二必须在0.2秒内完成,而是写入标志位到FLASH这个操作必须在0.2秒内完成。目的就是防止意外断电重启后变砖。
就是bootladder任务一,开始0.2秒以后,将启动标志位设为app启动,如果下载完成,则将启动标志设为任务二启动,在这之前如果断电,说明下载未完成,启动后重新执行app任务。
任务一完成后,重启进入bootladder任务二,更新app程序,在此期间断电的话,重启进入的还是bootladder任务二,重新更新app程序,直到完成后,设启动标志为app任务。8 F* S0 V5 p: ~ k# T8 k9 ^
' ]5 |8 F5 W' W# |$ r) [" v$ J
那么bootloadder任务二里,没有必要再设置一遍启动标志吧?
; d' F Y* X" M$ ^
! l) W8 g" f# B* S" W6 E
经过这么提醒,确实任务二中第一次写入启动标志是多余的。
还有个疑惑,任务一中,为什么要经过0.2秒后才设置启动标志,一开始就设置启动标志不行吗?
我试一下。
之前是因为写入FLASH的时候影响系统初始化,开机运行受影响。