为何须要bootloader

本文连接:https://blog.csdn.net/u012351051/article/details/50557899

受单片机和ARM7等小型CPU设备编程思惟的影响,开始对嵌入式linux和PC中存在bootloader/BIOS的意义有了疑问

bootloader到底有没有必要存在呢?答案是:大部分状况下是有必要的。

首先,bootloader的做用是在硬件商店后运行的第一段软件代码,也叫引导加载程序,是在操做系统内核运行以前运行的一小段程序,这小段程序的做用通常是初始化硬件设备,好比内存啊,堆栈等等,从而将系统的硬件环境编程一种合适的状态,而后再引导加载操做系统,如linux或windows。

乍一看,其实挺有用,但这是必定必须的吗?显然不是,由于彻底能够上电直接运行操做系统,固然这个操做系统的开头必需要包含上述bootloader的功能。这一点在单片机和ARM7中使用keil编程环境能理解。

可是,问题来了,若是咱们想升级操做系统呢?咱们想升级应用程序呢?这一点对于windows或者linux都是很常见的,若是没有bootloader,那么咱们必需要找到烧写电脑或者CPU的烧写工具,事实上,这对于生产商来说,都不是一件容易的事情。可是有bootloaer就很方便了,咱们只须要将升级后的操做系统放到“硬盘”或nandflash中的某个位置,而后断电重启一下,bootloader就能在引导系统的同时,完成了对操做系统的升级。这样是否是很方便了。

后续,目前有一些手机厂家对bootloader“上锁”,这个就至关因而给bootloader引导上了把锁,升级的操做系统若是是自家的,天然是有“解锁”的钥匙的,可是是其余家的,那就不行了。

linux

 

假如你作的产品卖给用户,当你发现该产品存在致命的问题,你是否是要去对程序进行更改,因为销售路径遍及各地,你不可能拿着一堆东西(电脑、下载器等)去找人家升级程序吧? 再说产品都是包装好的,预留的接口都是经常使用的接口,如USB、232/485 、SD卡等等,难道你还要去拆卸产品?   有了Bootloader就方便不少了,例如将升级文件拷贝在SD卡里面,或者经过nfs tftp,简单按下按钮、点一下屏幕就能够升级,别人操做起来也方便。编程

 

上述论述,若是须要升级系统,windows

bootloader将功能并入linux,那么须要从新编译整个image工具

sd卡没什么问题,都是将image拷贝进去,比较方便(bootloader和linux分开,就是拷贝linux image,不然就是拷贝整个image)操作系统

对于nand启动(bootloader和linux分开,能够经过tftp或nfs将linux image下载到内存,再经过uboot烧写到nand,有网口就能够,不然就是要经过工具烧写nand了),在这一点上是有差异的。.net

 

以上是一个缘由,还有一个缘由是:blog

内核启动须要必要的启动参数
(1)内核是不能开机自动彻底从零开始启动的,内核启动须要别人帮忙。uboot要帮助内核实现重定位(从SD卡到DDR )uboot还要给内核提供启动参数。

启动内核第一步:加载内核到DDR中
uboot要启动内核,分为2个步骤:第一步是将内核镜像从启动介质中加载到DDR中,第二步是去DDR中启动内核镜像。(内核代码根本就没考虑重定位,由于内核知道有bootloader帮忙把本身加载到DDR中连接地址处,内核就直接从连接地址处运行的)接口

相关文章
相关标签/搜索