一、Linux嵌入式系统启动方式主要有:
(1)NandFlash启动
(2)SD/MMC卡启动
(3)EMMC启动
(4)USB设备启动
二、U-boot概念:
U-boot是常用的一种嵌入式操作系统启动程序,是著名的开源BootLoader程序,可以启动Linux、Android等系统。
作为BootLoader,u-boot最基本的作用就是:
(1)把操作系统镜像从介质(flash、nand、SD卡等)加载到内存中,即在Linux系统中可以从SD卡、flash等存储设备启动系统。
(2)在内存中启动操作系统时可以向操作系统传递配置信息。
(3)此外,U-boot还有一个简单的控制台,利用串口和用户交互以提供一些额外的辅助功能,例如在OS启动前查看内存、数据拷贝、查看OS镜像信息、检查坏块等。
U-boot全称为:Universal Bootload,它是一个通用的启动代码载入器,Linux本身不能自己把自己读取到内存中运行,所以它就需要一个loader(载入器)读入内存并运行。其实U-boot可以在很多种CPU架构中运行,同时也支持很多开发板,但是每种CPU架构之间有差别,或者开发板的资源不同,假如在某款开发板能够正常引导启动操作系统,但是这并不意味着在其他类型的开发板就可以引导启动系统,所以建立一个统一的BootLoader是不太可能的,但是经过大师们的努力,能够通过简单的配置,就可以实现引导启动很多操作系统,也就是所说的BootLoader的移植。
选择U-boot的理由:
(1)源码开放;
(2)支持多种嵌入式操作系统内核,如Linux、VxWorks等;
(3)支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale;
(4)较高的可靠性以及稳定性;
(5)高度灵活的功能设置,适合uboot调试;
(6)丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;
(7)较为丰富的开发调试文档与强大的网络技术支持。
三、BootLoader简介
3.1 BootLoader概念
简单地说,bootloader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
通常,bootloader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的bootloader几乎是不可能的。尽管如此,我们仍然可以对bootloader归纳出一些通用的概念来,以指导用户特定的bootloader设计与实现。
3.2 BootLoader启动方式
CPU上电或复位时,会从某个地址开始执行。ARM结构的CPU从地址0x0000000开始,通常这个地址处就存放了BL1+bootloader这样一上电就可以执行(bootloader相当于BL2)。
从开发和用户使用角度来分析,Bootlaoder可以分为以下两种操作模式(Operation Mode)。
(1)自启动模式(Boot laoding):
这种模式下,bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。产品发布后,bootloader工作在这种模式下。
(2)交互模式或者下载(Downlaoding)模式:
在这种模式下,开发人员可以使用各种命令,通过串口连接或网络连接等通信手段从主机下载文件(比如内核映像、文件系统映像)到RAM中,可以被bootloader写到目标机上的固态存储介质中,或者直接进入系统的引导。
U-boot能够同时支持这两种工作模式,而且允许用户在这两种模式之间进行切换。比如,U-Boot在启动时处于正常的自启动模
Linux系统编程之启动流程分析
最新推荐文章于 2022-08-25 16:41:10 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)