编程技术分享平台

网站首页 > 技术教程 正文

什么是Bootloader #单片机(32单片机boot1和boot0作用)

xnh888 2024-10-23 16:22:44 技术教程 21 ℃ 0 评论

什么是Bootloader?

Bootloader是什么?这里以一个单片机为例给大家讲一下。首先能看到的就是单片机里面的Flash,正常情况直接运行的是APP。如果用了Bootloader,第一个运行的程序就是Bootloader,它会干什么?一共有四点。

·首先加载APP,比如这里有两个APP,可以通过Bootloader来切换,意思就是单片机上电之后第一个运行的程序是Bootloader。根据Bootloader里面的一些设置,它会去选择加载APP1还是APP2。为什么有两个?大家会说。

·第二个是升级,比如要对单片机进行OTA,也就是远程升级,或者通过USB对它进行下载。下载是怎么下?就是把APP进行擦除,擦完之后把新的APP加进来,这就实现了下载。

下载要使用一些通讯手段,比如USB或者是Wifi 4G,在Bootloader里面就会有相应的通讯代码,它会利用通讯代码把要下载的程序加载到Flash的特定位置,并且把原来的APP擦了,这下就会用到APP2。这是什么意思?

如果下载到一半,这个时候设备突然断电了或者突然出现了故障,本来应该要下完的,其实只下了一半,这个时候只要一运行肯定就会出问题。Bootloader会去校验APP一正不正常,如果不正常就会去回滚。一般会存两个APP,一个是当前版本,一个是上一次版本。发现当前升级的用不了,就会自动去运行上一个APP,以最大程度的确保产品是保持能用的状态。

还有一种最坏的结果就是两个APP都运行不起来,它就会停留在Bootloader里面等待下一次的升级。

·下来是安全,一般做一些安全性的产品,比如POS机、那它肯定不期望APP受到篡改。这个时候我们每次商店就会利用Bootloader来对我们的APP进行校验,甚至还会对你后面的密要这些进行校验,并且进行解密,解密完了再执行。

如果有一个黑客修改了你的APP,他想让你的Bootloader去加载这个有问题的APP,那你的Bootloader每次上电会把APP进行计算,算出来一个值和第一次下载的值进行对比,如果不相等,那就说明APP遭到了篡改,这就是安全。

·然后是故障恢复,比如说你的APP出了问题,运行的时候受到了损坏,那这个时候我们的布特loader也能检查出来,它和我们升级失败是一样的,它就会去运行另外一个APP,或者就停在布特loader里面等待用户升级。

就比如你的手机有时候操作系统坏了,它就会进入个所谓的DFU式BL,你就可以理解为这个就是Bootloader。而这里有一个推荐的Bootloaderopen BLT,你可以去研究一下,这个项目很好,它从单片机的代码一直到上位机都有提供。一般Bootloader升级是需要上微机的,它这些都给你提供了。

还有一个就是你可以去ST恩智浦这些大厂家,他们都有提供开源的Bootloader_,你也可以根据你用的单片机去厂家找,这样就避免了一个移植。如果你想做到通用,就比如你有多款单片机,那你就可以把它们都移植上一个openBLT,这样对于上位机的开发、维护干啥的都简化了。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表