本文主要是介绍BootLoader和OTA的关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
什么需要BootLoader
在Linux系统中,软件组成可以跟Windows进行类比:
BootLoader的主要作用是:
-
初始化硬件:比如设置时钟、初始化内存
-
启动内核:从Flash读出内核、存入内存、给内核设置参数、启动内核
-
调试作用:在开发产品时需要经常调试内核,使用BootLoader可以方便地更新内核
在单片机中,软件没那么复杂,一般只有一个程序,上电就运行这个程序,并不需要BootLoader。
但是涉及软件升级时,必须引入要BootLoader。假设没有BootLoader,程序无法升级自己:
-
单片机资源比较紧张,Flash容量比较小,一般无法存储两份程序
-
当前的程序在Flash上运行,它无法更新自己:通过网络下载程序到内存后,烧写到Flash不就破坏本身正在运行的程序了吗?
所以在单片机中,涉及软件升级时,必须引入BootLoader:
Flash上烧写有BootLoader和APP(用户程序),启动过程如下:
-
上电时BootLoader先运行
-
BootLoader判断发现:Flash上有APP并且无需升级,BootLoader就会启动APP
-
BootLoader判断发现:Flash上没有APP或者需要升级,BootLoader执行升级操作
2. 后续
我们学习单片机的BootLoader,目的是进行OTA升级。
我们学习Linux的OTA升级,离不开u-boot。
所以,我们先学习BootLoader再学习OTA。
后续分为2个项目:
-
BootLoader
-
对于单片机,我们从0写一个BootLoader
-
对于Linux,我们从0写一个BootLoader,然后分析u-boot的源码
-
-
OTA
-
我们先分析开源软件SWUpdate,理解标准的OTA方案
-
再在单片机、Linux上分别实现OTA
-
这篇关于BootLoader和OTA的关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!