无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6129|回复: 19
打印 上一主题 下一主题

嵌入式系统中引导加载器的选择

  [复制链接]
跳转到指定楼层
1#
发表于 2019-12-30 11:37:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
这篇文章讲的比较透彻

Guidelines for Choosing Bootloaders for Embedded Systems


https://pdfs.semanticscholar.org/5baa/31b61238a869e319c7b029147f84a85e76b8.pdf

谁能把这篇文章翻译一下?或者指示一下用什么翻译软件来翻译?
2#
发表于 2019-12-30 11:50:58 | 只看该作者
解压后用浏览器打开

为嵌入式系统选择引导程序的准则.zip

59.2 KB, 下载次数: 25, 下载积分: 无忧币 -2

点评

太好了!这就以此为基础,再美化编辑一下。  发表于 2019-12-30 12:53
回复

使用道具 举报

3#
 楼主| 发表于 2019-12-30 12:51:47 | 只看该作者
第1页
软件聚焦
为嵌入式系统选择引导程序的准则
PDF:09005aef84a29fd7 /来源:09005aef84a29fe8
版本A,03/12
©2012 Micron Technology,Inc. Micron和Micron徽标是Micron Technology,Inc.的商标。所有其他商标均为
各自所有者的财产。所有信息均按“原样”提供,无任何形式的保证。
为嵌入式系统选择引导程序的准则
贾斯汀·特里恩(Justin Treon)
美光软件工程师
自1990年代末以来,用于嵌入式系统的引导程序的选择范围有所扩大。不
不仅在市场上的引导加载程序中,而且在平台和
每个引导程序支持的操作系统。本文作为选择的指南
用于嵌入式系统的引导加载程序,可通过减少启动时间来缩短上市时间
冗余系统,调试和功能启用。文章中重点放在
Linux兼容的引导程序。但是,由于可行的引导加载程序可以引导许多运行
系统(从最基本的实时操作系统(RTOS)1到Linux服务器)
该指南与任何嵌入式系统有关。
引导程序基础
引导加载程序结合了引导捆绑的概念2系统并加载
操作系统的内核通过loader加载到内存中,因此命名为“ bootloader”。
使用少量代码来启用其运行系统的概念是基于
美国一句古老的谚语:“用靴子把自己拉到篱笆上”,这是不可能的
任务3。初始化系统所需的最小引导代码集为50
最多150条装配线,具体取决于体系结构和芯片组。尽管代码很小
设置,现代引导程序的大小已增加到256KB以上,以增加
跨多个板和架构的可移植性。功能集也不断增长,
引导加载程序现在包括调试功能以及从多个映像中进行选择的功能
加载到内存中。
引导系统不需要全功能的引导程序,但严格来说,没有
如果提供了引导代码,则需要bootloader。在具有NOR的系统中4 Flash或
其他直接访问的存储器,例如相变存储器(PCM 5),
引导代码可以添加到可以访问的映像的开头
直接从非易失性存储器。为此,必须在适当位置执行代码(XIP 6
直接从非易失性存储器。具有无法直接访问的内存的系统
(NAND 7 Flash)通常需要其他引导代码来驱动NAND控制器,
1 RTOS适用于实时应用程序。它可以执行实时事件。例如加速
科技的核®和Wind River的VxWorks ®
2 引导是最低功能的初始引导顺序,重点是物理内存配置,
存储器时序和总线时序。
3 http://en.wikipedia.org/wiki/引导程序
4 NOR是一种非易失性存储技术,由晶体管的平行对准组成。它使用热电子注入
编程。与NAND相比,该架构可实现更快的随机读取和更慢的块写入。NOR是最好的
用于代码存储。
5 PCM是一种位可更改的非易失性存储介质,旨在替代NOR和NAND。而不是将费用存储在
像Flash中的浮动单元一样,单元会通过通过电流来加热,以形成晶态或非晶态来存储位值。
6 XIP代码可直接在非易失性存储器中访问,而RAM中不会有阴影或分页的副本。
7 NAND是一种非易失性存储技术,由晶体管的串行对齐组成。它使用隧道注入
编程。与NOR相比,NAND架构由于更快的擦除速度而实现了更快的连续数据写入
速度。由于可靠性,NAND最适合用于用户数据存储。

第2页

软件聚焦
为嵌入式系统选择引导程序的准则
PDF:09005aef84a29fd7 /来源:09005aef84a29fe8
版本A,03/12
©2012 Micron Technology,Inc. Micron和Micron徽标是Micron Technology,Inc.的商标。所有其他商标均为
各自所有者的财产。所有信息均按“原样”提供,无任何形式的保证。
处理坏块,然后复制到RAM。一些系统实现了
在芯片组内置的ROM中进行引导加载。
引导加载程序的误解
市场上通常引用的大多数“引导程序”根本不是引导程序,而是
相反,第二阶段的引导加载程序用于在第一阶段之后加载操作系统
引导加载程序已经引导了系统。最著名的例子是
桌面引导程序如Microsoft Windows ®启动管理器(Bootmgr)和
适用于Linux的通用GRUB加载程序。自举系统的传统角色
由系统的第一阶段引导程序在桌面上输出。从历史上看,这是BIOS和
其替代EFI。使用基本的最小引导程序引导程序的概念
系统和功能齐全的第二阶段引导程序现已在嵌入式系统中流行
市场也是如此。
引导加载程序的类型
引导加载程序分为三类,下面将对其进行详细描述
部分:
预引导程序
第一阶段的引导程序
第二阶段自举程序
预引导加载程序和第一阶段引导加载程序
在嵌入式系统中使用多级引导系统的概念可能起源于
不需要一个小的代码段来初始化系统的NAND控制器
仅将NAND用于代码存储。没有此代码段,系统将无法
访问其非易失性存储。控制器初始化代码通常存储在ROM中,
开启或关闭处理器。使用可直接访问的内存(例如PCM,
不需要使用多级引导程序,因为不需要将映像加载到主程序中
内存在执行之前。但是,为了保护引导过程的所有阶段,都必须锁定并
保护固件并保护数字版权管理,这是ROM中的小型预引导程序
可用于检查引导加载程序的签名或对其进行解密,从而启用
系统以安全状态启动。
无论起源如何,一些芯片组制造商都会提供第一阶段的引导加载程序,
超出初始化NAND控制器或执行安全性校验和的功能集
预引导程序。例如,TI使用称为X-Loader 8的第一阶段引导程序,
不仅引导系统超出了片上ROM代码的范围,而且还加载了启动程序
屏幕。它还可以从其他媒体重新刷新系统。但是,这种精简
小于64KB的引导加载程序缺少用户界面和其他常见的功能
全功能的引导程序。可能使用第一阶段和第二阶段的引导程序
随着第二阶段引导加载程序中功能部件数量的增加,它会随着时间增加。
但是,选择第一级引导程序时几乎没有选择,因为系统
制造商仅限于芯片组制造商支持的产品。可以做的系统
8 Nishanth Menon的演讲,“没有引导加载程序的Linux”,2010年8月25日:
https://gforge.ti.com/gf/download/docmanfileversion/229/3870/linux-without-a-bootloader.ppt

第3页

软件聚焦
为嵌入式系统选择引导程序的准则
PDF:09005aef84a29fd7 /来源:09005aef84a29fe8
版本A,03/12
©2012 Micron Technology,Inc. Micron和Micron徽标是Micron Technology,Inc.的商标。所有其他商标均为
各自所有者的财产。所有信息均按“原样”提供,无任何形式的保证。
没有第一阶段的引导程序,只有第二阶段的引导程序。单引导程序
可以说,只有那些具有可直接寻址的非易失性存储器的系统。
第二阶段引导程序
看来,第二阶段引导加载程序最重要的任务是加载
预期操作系统的内核。但是,第二阶段的主要功能
引导加载程序用于设置系统计时并初始化所有必需的外围设备,例如
串行端口。第二阶段的引导加载程序通常在没有预
引导加载程序或第一阶段引导加载程序,因为其功能超出了第一阶段的功能
引导程序。将内核加载到RAM或直接跳转到内核开始
与正确设置XIP内核相比,XIP内核实现被认为是一项琐碎的任务。
RAM时序,闪存时序,系统总线配置以及可以
极大地改变了系统的性能和稳定性。现代第二阶段
引导加载程序有时也称为引导监视器,因为它们具有命令行
用户交互和调试功能的界面,超出了引导系统的范围
并加载内核或操作系统9
运行NOR Flash的系统中的引导程序关系如图 1和 2 所示。
表1中描述。
图1.引导程序关系-NOR Flash的简单案例
表1.引导程序关系-NOR Flash的简单案例
项目
采用
引导程序
执行所有引导操作,所有处理器和内存
时间和基本的MMU设置。它还启用外围设备(例如
作为以太网和串行端口),并在执行后加载内核
特定于体系结构的内核要求。
操作系统内核
设置内存管理并配置所有剩余的内存
外设。
运行NAND Flash的系统中的引导程序关系如图 2 所示。
表2中描述。
图2. Bootloader关系–具有安全性的NAND闪存的复杂案例
9 构建嵌入式Linux系统第一版,第247页。

第4页

软件聚焦
为嵌入式系统选择引导程序的准则
PDF:09005aef84a29fd7 /来源:09005aef84a29fe8
版本A,03/12
©2012 Micron Technology,Inc. Micron和Micron徽标是Micron Technology,Inc.的商标。所有其他商标均为
各自所有者的财产。所有信息均按“原样”提供,无任何形式的保证。
表2. Bootloader关系–具有安全性的NAND闪存的复杂案例
项目
采用
预引导程序
清除管道,启用NAND控制器,复制第一个-
将引导加载程序过渡到片上存储器,并执行安全检查
第一阶段的引导程序。
第一阶段引导程序
配置RAM,将第二阶段的引导程序复制到RAM
具有改进的NAND管理,并执行第二阶段
引导程序安全性。
第二阶段引导程序
完成所有系统时序更改(例如处理器,总线,
和内存),执行基本的MMU设置,并启用
该架构所需的其余外围设备。它也加载
执行特定于体系结构的内核后的内核
要求并在内核上执行安全检查,或者
内核/引导文件系统映像。
操作系统内核
设置内存管理,配置所有剩余内存
外设,并以安全状态运行系统。
在同一系统中使用前,第一阶段和第二阶段的引导程序
预引导程序,第一阶段引导程序和第二阶段引导程序可用于
在单个系统中结合。但是,根据系统的复杂性,可能
不必包括所有这三个。何时使用每种类型的通用指南
表3中提供了系统中的引导程序:
表3.何时使用每种引导程序类型的指南
类别
直接寻址
(NOR,PCM)
不直接
可寻址的
(例如NAND)
签名的引导程序
预引导程序
X
X
第一阶段
X
X
第二阶段
X
X
选择嵌入式Bootloader
选择引导加载程序时,架构支持应该是首要考虑的问题。板
如果您的体系结构支持,则可以生成支持文件和特殊功能
引导程序。考虑架构支持和调试工具的重要性时,它
令人惊讶的是,在市场上众多的引导加载程序中,只有三个可行
感兴趣的引导程序:Das U-Boot,BareBox和RedBoot。这些都可以用作
系统中的第二阶段或唯一的引导程序。其他功能齐全的专有和开放式
源引导加载程序缺少调试功能和驱动程序支持,这是满足会议需求的关键
上市时间目标。市场上有可以引导系统的快速引导引导程序。
比这些更快,但是通过在编译引导加载程序之前配置出未使用的功能
表4中所述,引导时间在大多数情况下是合理的。

第5页

软件聚焦
为嵌入式系统选择引导程序的准则
PDF:09005aef84a29fd7 /来源:09005aef84a29fe8
版本A,03/12
©2012 Micron Technology,Inc. Micron和Micron徽标是Micron Technology,Inc.的商标。所有其他商标均为
各自所有者的财产。所有信息均按“原样”提供,无任何形式的保证。
表4.嵌入式引导程序
引导程序
描述
Das U-Boot
这种“通用引导加载程序”可以说是最受欢迎的嵌入式引导加载程序,具有
支持的平台和功能最多。该加载器目前支持
PPC,ARM,X86,MIPS,AVR32,Blackfin处理器®,摩托罗拉68000,和其他架构10
裸盒
最初称为“ Das U-Boot版本2”,此软件在重命名时
不再支持其前身的旧板文件。现在独立
该项目通常比U-Boot快,并且可以轻松地从中移植驱动程序
将Linux内核移植到BareBox以减少开发时间。建议用于
具有新设计的芯片组制造商和系统制造商何时
完全支持指令集。BareBox当前支持PPC,ARM,x86,MIPS,
Blackfin和其他体系结构。但是,它不支持Motorola 68000和
AVR32,可在Das U-Boot 11中找到
红靴
该引导程序基于RedHat开发的eCOS RTOS,但是放置了一个
强调调试功能。最初被认为是
行业标准,但由于一系列的问题,已被Das U-Boot所掩盖
它支持的体系结构。对于需要系统的用户来说,这是一个出色的引导程序
广泛的调试功能,或者需要芯片组的eCOS支持或
参考平台。选择此引导加载程序之前,建议您先进行验证
Das U-Boot或BareBox是否具有更好的架构支持和相关的主板
支持具有足够的调试功能。RedBoot当前支持PPC,ARM,
x86,MIPS和其他体系结构12
就像在更改操作系统内核时一样,系统制造商应该
始终确保芯片组支持功能已提交并接受
引导加载程序维护程序,而不是仅由芯片组维护的私有版本
制造商。不确保这一点的可能后果是代码可能不会
维护或支持,并且可能存在错误。正如那些使用Linux内核的人
经验已经知道,代码编写得不够好,无法被主流用户接受。
Linux内核通常不足以在嵌入式系统上运行。一样是
对于给定的引导加载程序,芯片组和电路板启用为true。
在没有Bootloader的情况下引导Linux内核
使用构建选项,可以从功能齐全的Bootloader(例如Das)中剥离功能
U-Boot可以减少启动时间并减少安全漏洞的可能性。然而,
最短的启动时间不是旨在供命令行用户使用的引导程序的设计重点
相互作用。有轻量级的引导程序可供使用,例如Qi,旨在
快速引导系统并加载内核。但是,这与
完全放弃引导加载程序。运行基本乃至复杂RTOS的系统是
通常无需引导加载程序即可引导。相同的sans-bootloader概念可以
10 Das U-Boot源代码树:http : //git.denx.de/cgi-bin/gitweb.cgi? p=u-boot.git;a=tree; f=arch;hb=HEAD
11 BareBox源代码存储库:http ://git.pengutronix.de/?p=barebox.git;a=tree;f=arch;hb=HEAD
12个eCOS支持的硬件:http ://git.pengutronix.de/?p=barebox.git;a=tree;f=arch;hb=HEAD

6页

软件聚焦
为嵌入式系统选择引导程序的准则
PDF:09005aef84a29fd7 /来源:09005aef84a29fe8
版本A,03/12
©2012 Micron Technology,Inc. Micron和Micron徽标是Micron Technology,Inc.的商标。所有其他商标均为
各自所有者的财产。所有信息均按“原样”提供,无任何形式的保证。
通过将引导程序代码直接添加到内核将其应用于Linux内核13。这样做
因此,减少了启动时间,并且可以通过删除以下任何选项来使系统更安全
开发过程中引导加载程序中可能存在的安全漏洞
相。由于可以剥离和优化引导加载程序,因此使用内核的关键功能
因为引导加载程序将消除为驱动程序生成和维护驱动程序的冗余
内核和引导程序。
使用实用程序Kexec 14进一步完善了将内核用作引导加载程序的概念。
使内核能够在其自身上加载新内核。本质上,它将加载新内核
并在没有引导加载程序的情况下执行高速热启动。这对于
需要恢复模式,系统更新或开发系统的系统。典型的
系统可能首先启动进入基本恢复状态。然后,确定一个系统
不需要升级或恢复,系统将引导到功能更全的内核中,并且
使用Kexec的系统映像。小型调试内核和文件系统可能会代替
借助RedBoot等调试引导加载程序,它具有更大的调试功能
诸如Busybox之类的工具。该工具为嵌入式提供了一组功能丰富的小型实用程序
系统。
由于在主线Linux内核中没有使用此技术,因此仅建议使用
适用于启用新芯片组的人员或需要最短启动时间的开发人员。
但是,那些寻求接近即时启动时间的用户应该首先检查替代方法的使用。
压缩算法,编译选项和其他启动时间减少技术15。在
此外,对于没有直接可寻址存储器的系统,例如基于NAND的系统
系统,启用NAND控制器的最小预引导程序可能无法
处理加载可能包含错误块16的较大图像的任务。预引导程序
实现必须足够健壮,以加载由于不良而导致不连续的图像
块和磨损平衡。内核映像还必须包含解压缩算法
本身或未压缩存储。现代Linux内核支持的映像可以
解压缩自己。
摘要
对于芯片组开发人员,引导加载程序选择标准与系统差异很大。
设计师。芯片组开发人员可能需要实现对全新设备的支持
架构,而不是简单地为新外围设备添加驱动程序。另一方面,系统
设计人员更有可能需要对他们给定芯片组提供最多支持的解决方案
或在设计周期的限制下,使用类似的芯片组和电路板。考虑到这一点,
引导加载程序的选择取决于情况,而不是任何严格的规则。芯片组
制造商可能希望在ROM中使用最小的自定义引导程序,并跳过第二个-
阶段引导程序并直接引导到内核以减少支持的数量
13 Greg Ungerer的演讲,“没有引导加载程序的Linux”,2010年嵌入式Linux大会:
http://elinux.org/images/7/7b/LinuxWithoutABootLoader.pdf http://free-electrons.com/pub/video/2010/elc/elc2010-ungerer-
linux-without-bootloader.ogv
14 Magnus Damm的演讲,“ Kexec Ready for Embedded Linux”,2010年嵌入式Linux大会:
http://elinux.org/images/2/2f/ELC-2010-Damm-Kexec.pdf使用Kexec更快地重启Linux:
http://www.ibm.com/developerworks/linux/library/l-kexec.html
15种减少启动时间的技巧:http : //elinux.org/Boot_Time
16 Nishanth Menon的演讲,“没有引导加载程序的Linux”,2010年8月25日:
https://gforge.ti.com/gf/download/docmanfileversion/229/3870/linux-without-a-bootloader.pptARM Linux内核启动
要求:http//www.arm.linux.org.uk/developer/booting.php

第7页

软件聚焦
为嵌入式系统选择引导程序的准则
PDF:09005aef84a29fd7 /来源:09005aef84a29fe8
版本A,03/12
©2012 Micron Technology,Inc. Micron和Micron徽标是Micron Technology,Inc.的商标。所有其他商标均为
各自所有者的财产。所有信息均按“原样”提供,无任何形式的保证。
软件包。但是,如果新芯片组是现有芯片组的扩展或变体
推荐使用Das U-boot系列处理器,因为它提供了一系列工具和参考资料
平台。对于制作参考平台的公司而言,RedBoot是给定的绝佳选择
有效地将eCOS RTOS与平台端口捆绑在一起。对于
公司提供最终解决方案,建议使用BareBox的速度和驱动程序
可移植性,只要支持芯片组。Das U-Boot是另一个选择。
图3. Bootloader选择流程图

第8页

软件聚焦
为嵌入式系统选择引导程序的准则
PDF:09005aef84a29fd7 /来源:09005aef84a29fe8
版本A,03/12
©2012 Micron Technology,Inc. Micron和Micron徽标是Micron Technology,Inc.的商标。所有其他商标均为
各自所有者的财产。所有信息均按“原样”提供,无任何形式的保证。
关于作者
软件工程师Justin Treon拥有7年以上的经验
在Flash和存储软件中转至Micron。专攻嵌入式
在Linux和概念验证演示中,贾斯汀在
Micron的高级XIP文件系统(AXFS)的开发和
内存优化技术(TMO)。他还帮助发展
世界上第一台运行相变存储器(PCM)的手机。

回复

使用道具 举报

4#
发表于 2019-12-30 13:15:30 | 只看该作者
四海之内皆朋友,美好时光同分享
回复

使用道具 举报

5#
发表于 2019-12-30 14:01:05 | 只看该作者
本帖最后由 sghihor 于 2019-12-30 14:37 编辑


为嵌入式系统选择Bootloader指南



大大可以试下这个翻译软件,复制翻译,支持换行
https://copytranslator.github.io/download/









对于嵌入式系统选Bootloders的指南.zip

155.58 KB, 下载次数: 5, 下载积分: 无忧币 -2

点评

这个很棒,也收藏了。将来会抽时间进行人工整理。  发表于 2019-12-30 17:08
回复

使用道具 举报

6#
 楼主| 发表于 2019-12-30 17:03:27 | 只看该作者
file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps1.png


为嵌入式系统选择引导加载程序的指南


作者:Justin Treon Micron软件工程师


嵌入式系统的引导加载程序的选择从上世纪90年代末开始扩大;不仅是市场上引导加载程序的数量,而且是每个引导加载程序支持的平台和操作系统的数量。本文是为嵌入式系统选择引导装载程序的指南,通过减少冗余系统、调试和特性启用来帮助达到上市时间目标。本文的重点是linux兼容的引导加载程序。但是,由于可行的引导加载程序可以引导许多操作系统—从最基本的实时操作系统(RTOS)Linux服务器—本指南适用于任何嵌入式系统。1


引导装载程序基础


bootloader结合了bootstrappthe system和用一个加载器将操作系统的内核加载到内存中的概念,因此得名“bootloader”。2 “使用一小组代码使其运行的系统能够运行的概念是基于旧的谚语:“自力更生”,这是一个不可能完成的任务。3初始化系统所需的最小启动代码集在50150行汇编代码之间,这取决于架构和芯片组。尽管代码集很小,但现代引导加载程序的大小已经膨胀到256KB以上,以提高它们跨多个板卡和体系结构的可移植性。特性集也在增长,引导加载程序现在包括调试特性和从多个映像中选择要加载到内存中的能力。


启动系统不需要功能齐全的引导加载程序,但是严格地说,如果提供了引导代码,则不需要引导加载程序。在具有NORFlash或其他可直接访问内存(如相变内存(PCM))的系统中4 5
可以将引导代码添加到可以从非易失性内存直接访问的映像的开头。为此,必须直接从非易失性内存中就地执行代码(XIP)6内存不能直接访问的系统(NANDFlash)通常需要额外的引导代码来驱动NAND控制器,7


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps2.png


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps3.png


PDF: 09005aef84a29fd7/来源:09005aef84a29fe8 Rev。美光科技股份有限公司美光公司的商标是美光科技有限公司的商标。所有其他商标是其各自所有者的财产。所有信息都是在“现状”的基础上提供的,没有任何类型的保证。


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps4.png


处理坏块,并复制到RAM中。有些系统在芯片组内置的ROM中实现这种早期的引导加载。


引导装载程序错误


市场上通常引用的大多数“引导加载程序”根本不是引导加载程序,而是在第一阶段的引导加载程序已经引导了系统之后用于加载操作系统的第二阶段引导加载程序。最值得注意的例子是桌面引导加载程序,如Microsoft WindowsBoot Manager (BOOTMGR)Linux常用的GRUB加载程序。® 引导系统的传统角色由系统的第一阶段引导加载程序在桌面上执行。历史上,这一直是BIOS及其替代EFI。使用基本的、最小的引导加载程序来引导系统和功能齐全的第二阶段引导加载程序的概念现在在嵌入式市场也很流行。


类型的引导装载器


有三种类型的引导加载程序,详细描述如下:


•前引导加载程序•第一阶段引导加载程序•第二阶段引导加载程序


预引导加载程序和第一阶段引导加载程序


在嵌入式系统中使用多级引导系统的概念可能源于需要一个小的代码段来初始化仅将NAND用于代码存储的系统的NAND控制器。没有这个代码段,系统就无法访问它的非易失性存储。控制器初始化代码通常存储在ROM中,或者在处理器上,或者在处理器外。使用直接访问内存(PCM)的系统不需要使用多级引导加载程序,因为在执行映像之前不需要将其加载到主内存中。然而,为了保护启动过程的所有阶段,以锁定和保护固件,并保护数字权限管理,ROM中的一个小型预引导加载程序可以用于检查引导加载程序的签名或对其进行解密,从而使系统能够在安全状态下启动。


不管起源如何,一些芯片组制造商提供的第一阶段引导加载程序超出了初始化NAND控制器或执行预引导加载程序的安全校验和的功能集。例如,TI使用了一个名为x - loaderfirst -stage的引导加载程序,它不仅引导系统超过了on-die ROM代码,而且还加载了一个启动屏幕。8 它还可以从其他媒体重新刷新系统。但是,这个不到64KB的简化引导加载程序缺少用户界面和其他功能,而这些功能对于功能齐全的引导加载程序来说是很常见的。随着第二阶段引导加载程序中特性数量的增加,第一阶段和第二阶段引导加载程序的使用可能会随着时间的推移而增加。然而,在选择第一阶段引导加载程序时几乎没有选择,因为系统制造商被限制在芯片组制造商所支持的范围内。系统做的


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps5.png


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps6.png


PDF: 09005aef84a29fd7/来源:09005aef84a29fe8 Rev。美光科技股份有限公司美光公司的商标是美光科技有限公司的商标。所有其他商标是其各自所有者的财产。所有信息都是在“现状”的基础上提供的,没有任何类型的保证。


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps7.png


没有第一阶段的引导加载程序,只有第二阶段的引导加载程序。单引导加载程序系统可能只是那些具有可直接寻址的非易失性内存的系统。


第二阶段引导装载器


第二阶段引导加载程序的最重要任务似乎是加载预期操作系统的内核。然而,第二阶段引导加载程序的主要功能是设置系统计时和初始化任何需要的外围设备,例如串行端口。在没有预引导加载程序或第一阶段引导加载程序的系统中,通常单独使用第二阶段引导加载程序,因为它的功能超过了第一阶段引导加载程序。内核加载到RAM或者直接跳开始XIP内核实现内核的被认为是一个微不足道的任务相比,正确设置RAM计时,计时,系统总线配置,和任何系统设置,可以极大地改变系统的性能和稳定性。现代的第二阶段引导加载程序有时被称为引导监视器,因为它们具有用于用户交互和调试功能的命令行界面,这些功能超出了引导系统和加载内核或操作系统。9


运行NOR Flash的系统中的引导加载程序关系如图1所示,表1中对此进行了描述。


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps8.png


1所示。引导加载程序的关系,简单的情况下,也不是Flash


1。引导加载程序的关系,简单的情况下,也不是Flash






使用
引导装载程序


执行所有的引导操作,所有的处理器和内存




时间和基本的MMU设置。它还支持外围设备(




并在执行后加载内核




特定于体系结构的核心要求。
操作系统内核
设置内存管理并配置剩余的内存




外围设备。




运行NAND Flash的系统中的引导加载程序关系如图2所示,并在表2中进行了描述。


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps9.png


2引导加载程序关系复杂的情况下,NAND闪存与安全


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps10.png


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps11.png


PDF: 09005aef84a29fd7/来源:09005aef84a29fe8 Rev。美光科技股份有限公司美光公司的商标是美光科技有限公司的商标。所有其他商标是其各自所有者的财产。所有信息都是在“现状”的基础上提供的,没有任何类型的保证。


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps12.png


2。引导加载程序关系复杂的情况下,NAND闪存与安全


使用
Pre-Bootloader
清除管道,启用NAND控制器,将第一阶段引导加载程序复制到内存中,并对第一阶段引导加载程序执行安全检查。
第一阶段引导装载程序
配置RAM,使用改进的NAND管理将第二阶段引导加载程序复制到RAM中,并执行第二阶段引导加载程序安全性。
第二阶段引导装载程序
完成所有系统定时变化(如处理器、总线、
和内存),执行基本的MMU设置,并启用任何
架构所需的其他外围设备。它还加载
执行特定于体系结构的内核之后的内核
要求并执行对内核的安全检查
内核/引导文件系统映像。
操作系统内核
设置内存管理,配置所有剩余的外围设备,并以安全状态运行系统。


在同一系统中使用前阶段、第一阶段和第二阶段引导加载程序


预引导加载程序、第一阶段引导加载程序和第二阶段引导加载程序可以在单个系统中联合使用。但是,根据系统的复杂性,可能没有必要包括所有这三个。关于何时在系统中使用每种类型的引导加载程序,表3提供了一个通用指南:


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps13.png


选择嵌入式引导加载程序


在选择引导加载程序时,体系结构支持应该是主要考虑的问题。如果您的引导加载程序支持体系结构,则可以生成板支持文件和特殊功能。当考虑到架构支持和调试工具的重要性时,令人惊讶的是,在市场上众多的引导加载程序中,只有三种有用的引导加载程序:Das U-BootBareBoxRedBoot。它们中的每一个都可以用作系统中的第二阶段或惟一引导加载程序。其他全功能的私有和开源引导加载程序缺少调试特性和驱动程序支持,而这些是满足上市时间目标的关键。市场上有一些快速引导引导加载程序,它们引导系统的速度比这些程序快,但是通过在编译表4中描述的引导加载程序之前配置未使用的特性,在大多数情况下,引导时间是合理的。


PDF: 09005aef84a29fd7/来源:09005aef84a29fe8 Rev。美光科技股份有限公司美光公司的商标是美光科技有限公司的商标。所有其他商标是其各自所有者的财产。所有信息都是在“现状”的基础上提供的,没有任何类型的保证。


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps14.png


4。嵌入式引导装载器


引导装载程序
描述
Das U-Boot
这个“通用引导加载程序”可以说是最流行的嵌入式引导加载程序


支持的平台和功能的最大阵列。此加载程序当前支持
PPCARMx86MIPSAVR32BlackfinMotorola 68000等架构。®10
BareBox
最初称为“Das U-Boot版本2”,此软件在它被重命名时


不再支持其前任的遗留板文件。现在独立


项目通常比U-Boot更快,使驱动程序更容易移植


Linux内核可以减少开发时间。这是推荐的


芯片组制造商与新的设计和系统制造商时


完全支持指令集。目前支持PPC, ARM, x86, MIPS


Blackfin和其他架构。然而,它缺乏对摩托罗拉68000
Das U-Boot中找到了AVR3211
RedBoot
这个引导加载程序基于RedHat开发的eCOS RTOS,但是放置了一个


强调调试特性。这最初被认为是


行业标准,但已蒙上阴影的Das U-Boot由于数组


它支持的架构。对于需要的系统,这是一个优秀的引导加载程序


广泛的调试功能,或当eCOS支持需要为芯片组或


参考平台。在选择这个引导加载程序之前,建议您进行验证


无论Das U-Boot还是BareBox都具有更好的架构支持和相关板


支持足够的调试功能。RedBoot目前支持PPC, ARM
x86MIPS和其他体系结构。12


就像在进行操作系统内核更改时一样,系统制造商应该始终确保芯片组支持功能已经提交并被引导装载程序维护人员接受,而不是由芯片组制造商单独维护的私有版本。不确保这一点的一个可能的后果是,代码可能得不到维护或支持,并且可能潜在地充满了bug。那些具有Linux内核经验的人已经知道,如果代码编写得不够好,不能被主流Linux内核接受,那么这些代码通常就不能在嵌入式系统上运行。对于给定的引导加载程序的芯片组和板支持也是如此。


在没有引导加载程序的情况下引导Linux内核


使用构建选项,可以从诸如Das U-Boot这样的全功能引导加载程序中剥离功能,以减少引导时间和减少安全漏洞的可能性。然而,最小化引导时间并不是用于命令行用户交互的引导加载程序的设计重点。有一些轻量级的引导加载程序可用,比如Qi,它们用于快速引导系统并加载内核。然而,与完全放弃引导加载程序相比,这几乎没有什么优势。运行基本的甚至复杂的RTOS的系统通常在没有引导加载程序帮助的情况下引导。可以使用相同的sans-bootloader概念


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps15.png


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps16.png


PDF: 09005aef84a29fd7/来源:09005aef84a29fe8 Rev。美光科技股份有限公司美光公司的商标是美光科技有限公司的商标。所有其他商标是其各自所有者的财产。所有信息都是在“现状”的基础上提供的,没有任何类型的保证。


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps17.png


通过将引导代码直接添加到内核中,可以应用到Linux内核中。13这样做可以减少引导时间,并通过消除在开发阶段引导加载程序中可能存在的任何安全漏洞来提高系统的安全性。由于引导加载程序可以被剥离和优化,所以使用内核作为引导加载程序的关键特性是消除为内核和引导加载程序生成和维护驱动程序的冗余。
使用内核作为引导加载程序的概念由Kexec进一步扩展,它是一个实用程序,允许内核在自身之上加载新内核。14本质上,它加载新内核并在没有引导加载程序帮助的情况下执行高速热重启。这对于需要恢复模式、系统更新或开发系统的系统非常理想。典型的系统可能首先引导到基本恢复状态。然后,在确定不需要系统升级或恢复之后,系统将使用Kexec引导到功能更全的内核和系统映像。在Busybox等工具的帮助下,一个小型的调试内核和文件系统可以代替一个调试引导加载程序,如RedBoot,它具有更强大的调试功能。该工具为嵌入式系统提供了一组功能丰富的实用工具。


由于这种技术的使用不在主流的Linux内核中,所以只推荐那些启用新芯片组或需要最短启动时间的开发人员使用这种技术。然而,那些寻求接近即时启动时间的人应该首先检查替代压缩算法、编译选项和其他启动时间减少技术的使用。15此外,对于没有可直接寻址内存的系统(如基于NAND的系统),启用NAND控制器的最小预引导加载程序可能无法处理加载可能包含坏块的较大映像的任务。16预引导加载程序实现必须足够健壮,以加载由于坏块和磨损而不是连续的映像。内核映像还必须包含用于解压自身或未压缩存储的算法。现代Linux内核支持对映像进行解压缩。


总结


对于芯片组开发人员和系统设计人员,引导加载程序的选择标准是非常不同的。芯片组开发人员可能需要实现对全新架构的支持,而不是简单地为新外设添加驱动程序。另一方面,考虑到设计周期的限制,系统设计者更有可能需要对给定芯片组或类似芯片组和主板提供最大支持的解决方案。记住这一点,引导加载程序的选择取决于具体情况,而不是任何硬性的规则。芯片组制造商可能想要使用最小的,自定义引导加载在ROM和跳过第二阶段的引导加载程序,并直接引导到内核,以减少支持的数量


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps18.png


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps19.png


15减少引导时间的技术:http://elinux.org/Boot_Time
16 Nishanth Menon的演讲,“没有引导加载程序的Linux”,2010825:
https://gforge.ti.com/gf/download/docmanfileversion/229/3870/linux-without-a-bootloader.pptARM Linux内核引导要求:http://www.arm.linux.org.uk/developer/booting.php


PDF: 09005aef84a29fd7/来源:09005aef84a29fe8 Rev。美光科技股份有限公司美光公司的商标是美光科技有限公司的商标。所有其他商标是其各自所有者的财产。所有信息都是在“现状”的基础上提供的,没有任何类型的保证。


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps20.png


软件包。但是,如果新芯片组是现有处理器家族的扩展或变体,则推荐使用Das U-boot,因为它提供了一组工具和参考平台。对于制作参考平台的公司来说,RedBoot是一个很好的选择,因为启用eCOS RTOS实际上是与平台的端口绑定在一起的。对于制造最终解决方案的公司,只要支持芯片组,建议使用BareBox,因为它的速度和驱动程序的可移植性。Das U-Boot是另一种选择。


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps21.png


3引导装载程序选择流程图


PDF: 09005aef84a29fd7/来源:09005aef84a29fe8 Rev。美光科技股份有限公司美光公司的商标是美光科技有限公司的商标。所有其他商标是其各自所有者的财产。所有信息都是在“现状”的基础上提供的,没有任何类型的保证。


file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps22.png


关于作者
file:///C:\Users\wumo\AppData\Local\Temp\ksohtml2472\wps23.png
软件工程师Justin Treon为美光带来了超过七年的闪存和存储软件经验。专攻嵌入式Linux和概念验证演示,Justin在开发美光的高级XIP文件系统(AXFS)和内存优化技术(TMO)方面发挥了关键作用。他还帮助开发了世界上第一台移动电话运行相变存储器(PCM)


PDF: 09005aef84a29fd7/来源:09005aef84a29fe8 Rev。美光科技股份有限公司美光公司的商标是美光科技有限公司的商标。所有其他商标是其各自所有者的财产。所有信息都是在“现状”的基础上提供的,没有任何类型的保证。

回复

使用道具 举报

7#
发表于 2019-12-31 09:04:04 | 只看该作者
没有权限下载本附件,还是感谢,但看不太明白,像现在市场上常用的引导程序是那个?

点评

只要我有权限下载便可。请耐心等待我更新。经过我的人工整理之后,就会有比较满意的译文了。  详情 回复 发表于 2019-12-31 21:02
回复

使用道具 举报

8#
 楼主| 发表于 2019-12-31 21:02:42 | 只看该作者
linuxdisk 发表于 2019-12-31 09:04
没有权限下载本附件,还是感谢,但看不太明白,像现在市场上常用的引导程序是那个?

只要我有权限下载便可。请耐心等待我更新。经过我的人工整理之后,就会有比较满意的译文了。
回复

使用道具 举报

9#
 楼主| 发表于 2019-12-31 23:30:48 | 只看该作者
本帖最后由 不点 于 2020-2-5 09:04 编辑

嵌入式系统引导器选用指南

作者:贾斯汀·特里恩(Justin Treon) 美光软件工程师


自 20 世纪 90 年代末以来,市面上嵌入式系统引导程序的选择范围不断扩大。不仅引导器的数量增多了,而且每个引导器所支持的 CPU 平台和操作系统的数目也都有增加。本文将指导您如何为嵌入式系统选择引导加载程序,让您能够通过减少冗余系统、使用调试手段以及启用某些功能特性,来达到尽快上市的目标。本文着重介绍与 Linux 兼容的引导程序;然而,一个有生命力的引导程序通常可以引导许多操作系统——从最基本的实时操作系统(RTOS)到 Linux 服务器——因此本指南实际上可能适用于任何一个嵌入式系统。

引导器基本概念


引导加载器结合了引导系统和用加载器将操作系统内核加载到内存的概念,因此得名“引导加载器”。使用少量代码来启用代码本身所在系统的概念源于美国的一句老话,“用自己的鞋带把自己拉过篱笆”,这是一项不可能完成的任务。根据体系结构和芯片组的不同,初始化系统所需的最小汇编代码大致在 50 至 150 行之间。尽管必须的代码量很小,但现代引导加载器的大小已经膨胀到 256 KB 以上,以提高它们跨不同板卡和体系结构的可移植性。功能也在增强,引导加载程序现在已有了调试功能,并且能够让用户选择各种不同的映像加载到内存。

并不需要全功能的引导器来引导一个系统。严格地说,如果系统已经提供了引导代码,则完全不需要额外的引导器。在具有 NOR-Flash 或其它直接存取存储器(例如相变存储器,PCM)的系统中,可以将引导码放在一个映像的开头,这个映像能够从非易失存储器上直接运行。为此,必须能够从非易失存储器就地执行代码(XIP)。而那些不能直接访问存储器的系统(NAND Flash 的情形),通常需要额外的引导代码来驱动 NAND 控制器、处理坏块,然后复制到 RAM 上运行。有些系统是在芯片组内置的 ROM 中来完成这个早期的引导加载步骤。

引导器的一些误解

市面上常见的大多数“引导器”根本不是引导器,而是在第一阶段引导器已经引导系统之后用于加载操作系统内核的第二阶段引导器。最值得注意的例子是桌面引导器,如 Microsoft Windows®Boot Manager(BOOTMGR)以及 Linux 的通用 GRUB 加载器。在桌面系统中,系统引导的传统职能是由系统的第一级引导器来完成的。这向来都是 BIOS 及其替代品 EFI 的任务。用一个基本的、最小的引导器来引导系统或者引导一个全功能的第二阶段引导器,这样的想法在嵌入式领域也很流行。

引导器的类型

有三种类型的引导加载程序(详见下文):

・预引导器

・第一阶段引导器

・第二阶段引导器

预引导器和第一阶段引导器


在嵌入式系统中使用多级引导系统的概念可能源于需要有一小段代码来初始化系统中的 NAND 控制器,那样的系统只使用 NAND 存储器来保存代码。如果没有这一小段代码,系统就无法访问其非易失存储器。控制器初始化代码通常存储在 ROM 中,可能在处理器内,也可能在处理器外。使用直接可访问存储器(如PCM)的系统则不需要使用多级引导器,因为在执行映像之前不需要将其加载到主存储器中。但是,为了保证在启动全过程中能够锁定所有的启动步骤并保护固件免遭破坏以及保证数字权限管理模块的正常运转,可以在 ROM 中用一个小的预引导器来检查引导器的签名或解密引导器,使系统能够在安全状态下启动。

不管来源如何,一些芯片组制造商提供的第一阶段引导器超出了预引导器对 NAND 控制器进行初始化或安全校验的功能范围。例如,德州仪器使用一个名为 X-Loader 的第一级引导器,它不仅超越片上 ROM 代码(预引导器)的功能而对系统进行引导,而且还加载一个启动画面。它还能从其他介质重刷系统。但是,这个小于 64KB 的精简引导器缺少一个用户界面,也缺乏全功能引导器通常具备的其它一些功能。随着第二级引导器功能的不断增多,第一级和第二级引导器的使用率有望逐渐增加。然而,第一级引导器没有什么选择余地,因为系统制造商仅限于芯片组制造商支持的少数几家。那些没有第一级引导器的系统只使用第二级引导器。单引导器系统可以说只是那些具有直接可寻址非易失存储器的系统。

第二阶段引导器


第二级引导器的最重要任务就是加载预定的操作系统内核。然而,第二级引导器的主要功能是设置系统计时和初始化所需的外围设备,如串行端口。第二级引导器通常在没有预引导器和第一级引导器的系统中单独使用,因为它的功能超过了第一级引导器。与正确设置 RAM 计时、Flash 计时、系统总线配置以及可以显著改变系统性能和稳定性的那些系统设置相比,将内核加载到 RAM 或直接跳到内核的开始位置(在内核实现了 XIP——就地执行的情形)被认为是一项微不足道的任务。现代的第二级引导器有时被称为引导监视器,因为它们有一个命令行界面能与用户互动,方便调试。这些功能超出了引导系统以及加载内核或操作系统的范围。

采用 NOR Flash 的系统中引导器的关联情况如图 1 所示,表 1 作了说明。

引导器
操作系统内核

图1. 引导器关联图——NOR Flash的简单情况

表1. 引导器关联表——NOR Flash的简单情况
项目
用途
引导器
完成所有引导操作、所有处理器和内存计时以及基本MMU设置。它还启用外围设备(如以太网和串行端口),并在满足体系结构特有的内核需求后加载内核。
操作系统内核
建立内存管理并配置剩余的外围设备。

采用 NAND Flash 的系统中引导器的关联情况如图 2 所示,表 2 作了说明。

预引导器
第一级引导器
第二级引导器
操作系统内核


图2. 引导器关联图——带有安全性的 NAND Flash 的复杂情况


表2. 引导器关联表——带有安全性的 NAND Flash 的复杂情况
项目
用途
预引导器
清除管道,启用 NAND 控制器,将第一级引导器复制到片上内存,并对第一级引导器进行安全检查。
第一级引导器
配置RAM,使用改进的 NAND 管理将第二级引导器复制到 RAM 中,并对第二级引导器进行安全检查。
第二级引导器
完成所有系统计时更改(如处理器、总线和内存),执行基本的MMU设置,并为体系结构启用任何剩余的必需外围设备。它还会在满足体系结构特有的内核需求之后加载内核,并对内核或内核/引导文件系统映像进行安全检查。
操作系统内核
建立内存管理,配置剩余的外围设备,并在安全状态下运行系统。

在同一系统中使用前级、第一级和第二级引导器


预引导器、第一级引导器和第二级引导器可以在单个系统中结合使用。然而,根据系统的复杂性,可能不必包括全部三个。表3提供了在系统中何时使用每种引导器的一般准则:


表3. 何时使用每种引导器类型的指南
类别
直接寻址(NOR,PCM)
不可直接寻址
(如 NAND)
签名的引导器
预引导器

✔️
✔️
第一级引导器

✔️
✔️
第二级引导器
✔️
✔️


嵌入式引导器的选择



在选择引导器时,架构支持应该是首要考虑的问题。如果引导器支持该体系结构,则可以生成板卡支持文件和特色功能。当考虑到体系结构支持和调试工具的重要性时,令人惊讶的是,在众多的引导器中,只有这三个切实可行值得关注:Das U-Boot、BareBox 和 RedBoot。三者都可以用作第二级或唯一引导器。其他全功能的引导器专有或开源)一般都缺乏调试功能以及驱动程序支持,这是影响上市计划的关键。市场上有一些“快速引导”引导程序,它们引导系统的速度比表 4 中的这几个引导器快;但是在编译这几个引导器之前,如果配置掉一些不使用的功能,它们的启动速度往往也足够快。

表4. 嵌入式引导器
引导器
说明
Das U-Boot
这个“通用引导器”可以说是最流行的嵌入式引导器,具有最大的支持平台和功能阵列。此加载程序当前支持 PPC、ARM、x86、MIPS、AVR32、Blackfin®、Motorola 68000 和其他体系结构。
BareBox
最初称为“Das U-Boot 版本 2”,当该软件不再支持其前身的传统板卡文件时,它被重命名。这个现在独立的项目通常比 U-Boot 要快,并且可以很容易地将驱动程序从 Linux 内核移植到 BareBox 以减少开发时间。当指令集完全受支持时,这推荐给具有新设计的芯片组制造商和系统制造商。BareBox 目前支持PPC、ARM、x86、MIPS、Blackfin 和其他架构。然而,它缺乏对摩托罗拉 68000 和 AVR32 的支持,而 Das U-Boot 能支持。
RedBoot
这个引导器基于 RedHat 开发的 eCOS RTOS,但重点放在调试特性上。这最初被认为是行业标准,但由于它支持的体系结构阵列,Das U-Boot 已经使之黯然失色。对于需要大量调试功能的系统,或者芯片组或参考平台需要 eCOS 支持时,这是一个非常好的引导加载程序。在选择此引导加载程序之前,建议您验证 Das U-Boot 或 BareBox 是否具有更好的体系结构支持和具有足够调试功能的相关板卡支持。RedBoot 目前支持 PPC、ARM、x86、MIPS 和其他体系结构。

正如在进行操作系统内核更改时,系统制造商应始终确保芯片组支持功能已提交并被引导器维护人员接受,而不是仅由芯片组制造商维护的私有版本。不确保这一点的一个可能后果是代码可能不被维护或支持,并且可能会被 bug 所困扰。有 Linux 内核经验的人已经知道,编写得不够好,不能被主流 Linux 内核接受的代码通常不足以在嵌入式系统上运行。对于给定的引导器启用芯片组和板卡也是如此。

在不使用引导器的情况下引导 Linux 内核


使用 build 选项,可以从全功能的引导器(如Das U-Boot)中剥离功能,以减少引导时间并减少出现安全漏洞的可能性。然而,最小启动时间并不是用于命令行用户交互的引导器的设计重点。有一些轻量级的引导器,比如 Qi,用来快速引导系统并加载内核。然而,与完全放弃引导器相比,这没有什么优势。一个简单的甚或复杂的 RTOS 系统通常不使用引导器而直接启动。“无引导器”的概念同样可以用于 Linux 内核,只需在内核中直接添加引导码。这样做可以减少启动时间,并通过消除在开发阶段早已存在于引导器中的任何可能的安全漏洞,使系统更安全。由于引导器可以被剥离和优化,使用内核作为引导器的主要优点是可以避免分别为内核和引导器同时生成和维护两份不同的驱动程序的冗余。

Kexec 进一步提出了使用内核作为引导器的概念,Kexec 是一个实用程序,它使内核能够在自身上加载新的内核。实际上,它加载新内核并在没有引导器的帮助下执行高速热重启。这非常适合需要恢复模式、系统更新或开发系统的系统。典型的系统可能首先引导到基本恢复状态。然后,在确定不需要系统升级或恢复之后,系统将使用 Kexec 引导到功能更全面的内核和系统映像中。在 Busybox 等工具的帮助下,可以加载一个小型的调试内核和文件系统来代替像 RedBoot 这样的调试引导程序,RedBoot 具有更强的调试功能。Busybox 为嵌入式系统提供了一组功能丰富的小实用程序。

由于这项技术不在主线 Linux 内核中使用,因此只建议那些启用新芯片组的人或需要尽可能短的启动时间的开发人员使用这项技术。然而,那些寻求接近即时启动时间的人应该首先检查替代压缩算法、编译选项和其他启动时间减少技术的使用。此外,对于没有直接可寻址内存的系统,例如基于 NAND 的系统,启用 NAND 控制器的最小预引导加载程序可能无法处理加载可能包含坏块的较大映像的任务。预引导加载程序实现必须足够健壮,以加载由于坏块和磨损均衡而不连续的映像。内核图像还必须包含解压缩自身的算法或未压缩存储的算法。现代 Linux 内核支持自行解压缩的映像。


总结


对于芯片组开发人员和系统设计人员来说,引导器的选择标准是完全不同的。芯片组开发人员可能需要实现对全新架构的支持,而不是简单地为新外设添加驱动程序。另一方面,考虑到设计周期的限制,系统设计者更可能需要一个对给定芯片组或类似芯片组和电路板支持最多的解决方案。考虑到这一点,引导加载程序的选择取决于情况,而不是任何硬性和快速的规则。芯片组制造商可能希望在ROM中使用一个最小的自定义引导加载程序,跳过第二阶段引导加载程序并直接引导到内核中,以减少支持的软件包的数量。然而,如果新的芯片组是现有处理器家族的扩展或变体,则推荐 DAS U-Boot,因为工具集和参考平台的原故。对于制作参考平台的公司来说,RedBoot是一个很好的选择,因为启用 eCOS RTOS 可以有效地与平台的端口捆绑在一起。对于生产最终解决方案的公司,只要支持芯片组,就推荐使用 BareBox,因为它的速度和驱动程序的可移植性。Das U-Boot是另一种选择。



开始











是 ← 
须支持
eCOS?
















须尽快
启动
系统?
→否→
BareBox
支持芯
片组?

 














用 Linux
作引导器

←否←
Das U-Boot
支持芯
片组?
←否←
BareBox
的调试工
具够用?










RedBoot
作引导器
← 否 ←
Das U-Boot
的调试工
具够用?

BareBox
作引导器












Das U-Boot
作引导器






图3. 引导器选择流程图

(待续)

回复

使用道具 举报

10#
发表于 2020-2-1 21:05:01 | 只看该作者
不点 发表于 2019-12-31 23:30
嵌入式系统引导器筛选指南
作者:贾斯汀·特里恩(Justin Treon) 美光软件工程师

能不能自己更换?若可以的话,怎样更换?
回复

使用道具 举报

11#
发表于 2020-2-20 12:35:10 | 只看该作者
进来学习的,有没有新进展,还是不太懂
回复

使用道具 举报

12#
发表于 2020-3-5 08:29:12 | 只看该作者
不点大师研究得怎样了?最新成果分享下
回复

使用道具 举报

13#
发表于 2020-3-16 12:03:20 | 只看该作者
学习了
回复

使用道具 举报

14#
发表于 2021-8-14 19:55:36 | 只看该作者
进来学习的
回复

使用道具 举报

15#
发表于 2021-9-24 09:41:55 | 只看该作者
学习了
回复

使用道具 举报

16#
发表于 2021-12-26 19:03:42 | 只看该作者
评论精彩
回复

使用道具 举报

17#
发表于 2022-1-22 15:08:51 | 只看该作者
讲的比较透彻
回复

使用道具 举报

18#
发表于 2022-2-10 20:07:04 | 只看该作者
大师做一个引导器适合arm用的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-10 21:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表