网站首页 > 技术教程 正文
什么是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,这样对于上位机的开发、维护干啥的都简化了。
猜你喜欢
- 2024-10-23 基于S12 MagniV系列的LIN Bootloader设计
- 2024-10-23 怎么使用USBasp给arduino烧写bootloader?
- 2024-10-23 腾讯 ROG 游戏手机 6 / Pro 公开内核源码并支持解锁 bootloader
- 2024-10-23 浅谈基于uds的bootloader设计(简要概述u-boot的主要功能)
- 2024-10-23 Bootloader引导程序uboot(bootice 引导)
- 2024-10-23 基于CAN总线的Bootloader设计与实现
- 2024-10-23 Rust语言开发操作系统-第二章(最小化内核)
- 2024-10-23 基于RT-Thread完整版搭建的极简Bootloader
- 2024-10-23 海信阅读手机A9现可解锁bootloader并获取root权限
- 2024-10-23 三星警告Galaxy Z Fold 3解锁bootloader将失去相机功能
你 发表评论:
欢迎- 最近发表
-
- linux日志文件的管理、备份及日志服务器的搭建
- Linux下挂载windows的共享目录操作方法
- Linux系统中的备份文件命令(linux系统中的备份文件命令有哪些)
- 麒麟KYLINOS|通过不同方法设置用户访问文件及目录权限
- 「Linux笔记」系统目录结构(linux目录的结构及含义)
- linux中修改归属权chown命令和chgrp命令
- 工作日报 2021.10.27 Android-SEAndroid权限问题指南
- Windows和Linux环境下,修改Ollama的模型默认保存路径
- 如何强制用户在 Linux 上下次登录时更改密码?
- 如何删除Linux文件夹中除某些扩展名之外的所有文件?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)