| |
| 这个“通用引导加载程序”可以说是最流行的嵌入式引导加载程序 |
| 支持的平台和功能的最大阵列。此加载程序当前支持 PPC、ARM、x86、MIPS、AVR32、Blackfin、Motorola 68000等架构。®10 |
| 最初称为“Das U-Boot版本2”,此软件在它被重命名时 |
| |
| |
| |
| |
| 完全支持指令集。目前支持PPC, ARM, x86, MIPS, |
| Blackfin和其他架构。然而,它缺乏对摩托罗拉68000和 在Das U-Boot中找到了AVR32。11 |
| 这个引导加载程序基于RedHat开发的eCOS RTOS,但是放置了一个 |
| |
| 行业标准,但已蒙上阴影的Das U-Boot由于数组 |
| 它支持的架构。对于需要的系统,这是一个优秀的引导加载程序 |
| |
| 参考平台。在选择这个引导加载程序之前,建议您进行验证 |
| 无论Das U-Boot还是BareBox都具有更好的架构支持和相关板 |
| 支持足够的调试功能。RedBoot目前支持PPC, ARM, x86、MIPS和其他体系结构。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
16 Nishanth Menon的演讲,“没有引导加载程序的Linux”,2010年8月25日:
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。美光科技股份有限公司美光公司的商标是美光科技有限公司的商标。所有其他商标是其各自所有者的财产。所有信息都是在“现状”的基础上提供的,没有任何类型的保证。