Bootloader存在的必要性
出处:晓锋 发布于:2007-04-29 11:11:35
By good02xaut
Bootloader的功能决定了在引导Linux系统时,必须使用bootloader,除非你对linux内核进行了修改。
Bootloader有两个主要功能:
1.在发布模式,自动引导linux系统,为系统初始化各种参数。
2.在调试模式,要能够方便的内核,引导内核。
Linux系统一定要bootloader支持吗?
答:是的。通用的Linux内核,启动时需要很多参数,这些参数必须通过bootloader传递。而且内核一般是压缩存放到外存上的,从外存到内存的拷贝也是由bootloader完成。
Bootloader为什么不和kernel放到一起呢?
答:不可以这样做。从bootloader的第二个功能就知道,bootloader是不能和内核放到一起。当然,在发布模式时,是可以集成到一起的,通常没必要。
从哪里可以得到bootloader?
答:目前通用的bootloader很多,不论是嵌入式还是桌面系统,比如lilo,grub,blob等。桌面用的bootloader我们就不讨论了,重点说一下嵌入式领域用的bootloader。采用通用的bootloader功能强大,开发容易,而且由专人维护升级,不过多是针对特定的CPU或者特定开发板的。如果是学习,推荐自己开发bootloader。
如何编写自己的bootloader?
答:编写一个bootloader只要能够完成前面提到的两个功能就可以了。分别描述一下这两个功能的实现:
1.该功能比较简单,就是从FLASH中拷贝数据到RAM。如果内核的存放不是基于文件系统的,直接采用汇编就可以完成块拷贝。然而如果内核存放在文件系统之上,比如内核存放到了基于ext2文件系统的CF卡上。首先我们的bootloader要能够访问CF卡,然后要能够识别文件系统,只有这样才能正确找到内核文件并拷贝到内存中。
2.该功能一般通过串口实现。对于ARM来说,驱动串口比较容易,直接从主机的串口接收内核数据存放到RAM中,就可以启动内核了。如果需要发布,还要实现把内核从RAM烧写到外存的能力。
为了提高速度,充分挖掘开发板和CPU的潜力,出现了许多用网口和USB接口内核的bootloader。使用网口,bootloader必须提供网卡驱动和TCP/IP协议的支持。使用USB接口,需要提高大容量存储类驱动。
为了拓展思路,你也可以使用红外,存储卡接口进行数据。使用红外接口,和串口基本一样,无非就是没有了连线。使用存储卡,通常需要文件系统的支持。比如,我们使用XD卡存放内核,在主机交叉编译好内核后,把内核存放到XD卡上。然后将XD卡插到目标板的插槽中,bootloader必须有能力把XD卡上的内核拷贝的RAM中,过程参考功能1的实现。
上一篇:74LS138译码器
下一篇:AVR MP3 Player
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 工业5G技术在智能制造中的应用与实践解析2025/12/31 10:57:21
- 工业以太网交换机选型与现场应用技术指南2025/12/18 10:48:14
- 无线传输电路基础,射频前端设计、天线匹配与链路预算计算2025/10/27 13:55:50
- ASK 解调的核心要点与实现方式2025/9/5 16:46:17
- 双偶极子天线:结构、特性与应用全解析2025/9/3 10:29:21









