bootloader启动过程

一个嵌入式 linux 系统从软件角度看可以分为四个部分:引导加载程序(bootloader), linux 内核,文件系统,应用程序。
当系统首次引导时,或系统被重置时,处理器会执行一个位于flash/rom中的已知位置处的代码,bootloader就是这第一段代码。它主要用来初始化处理器及外设,然后调用 linux 内核。linux 内核在完成系统的初始化之后需要挂载某个文件系统作为根文件系统(root filesystem),然后加载必要的内核模块,启动应用程序。这就是嵌入式linux系统启动过程 linux 引导的整个过程。
根文件系统是 linux 系统的核心组成部分,它可以作为linux 系统中文件和数据的存储区域,通常它还包括系统配置文件和运行应用软件所需要的库。应用程序可以说是嵌入式系统的“灵魂”,它所实现的功能通常就是设计该嵌入式系统所要达到的目标。如果没有应用程序的支持,任何硬件上设计精良的嵌入式系统都没有实用意义。
从以上分析可以看出 bootloader在运行过程中虽然具有初始化系统和执行用户输入的命令等作用,但它最根本的功能就是为了启动 linux 内核,让我们进一步分析 bootloader 和 linux 内核在嵌入式系统中的关系和作用。
bootloader启动的两个阶段 从操作系统的角度看,bootloader的总目标就是正确地调用内核来执行。另外,由于bootloader的实现依赖于cpu的体系结构,因此大多数bootloader都分为stage1和stage2两大部分,以便使bootloader的功能更加强大和提供更加良好的移植性能。
stage1主要是一些依赖于cpu体系结构的代码,比如硬件设备初始化代码等。这一阶段的代码主要是通过汇编来实现的,已达到短小精悍和高效的目的。stage1为位置无关代码,通常在flash中运行。所以有的指令为相对寻址,可以在任何位置运行。
stage1负责的主要任务有: ① 硬件设备初始化包括:关闭watchdog、关闭中断、设置cpu的速度和时钟频率、配置sdram存储控制器及io、关闭处理器内部指令/数据cache等;
② 为加载bootloader的stage2代码准备ram空间(这个地址由链接脚本指定为运行域地址,通常为ram的高端地址)测试内存空间是否有效;
③ 复制bootloader的stage2代码到ram空间中;
④ 设置好堆栈;
⑤ 跳转到stage2的c函数入口点。stage2则是通常用c语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。
stage2负责的主要任务有: ① 初始化本阶段要使到的硬件设备(如串口、flash和网卡等);
② 检测系统内存映射;
③ 没有用户干预时将内核映像从flash读到ram空间中;
④ 为内核设置启动参数;
⑤ 调用内核。
bootloader 的启动方式 1.网络启动方式 这种方式的开发板不需要较大的存储介质,跟无盘工作站有点类似,但是使用这种启动方式之前,需要把bootloader安装到板上的eprom或者flash中。bootloader通过以太网接口远程下载linux内核映像或者文件系统。bootloader下载文件一般都使用tftp网络协议,还可以通过dhcp的方式动态配置ip地址。
2.硬盘启动方式 传统的linux系统运行在台式机或者服务器上,这些计算机一般都使用bios引导,并使用磁盘作为存储介质。linux传统上是lilo (linux loader) 引导,后来又出现了gun的软件 (grand unified bootloader) 。 这两种bootloader广泛应用在x86的linux系统上。
3. flash启动方式 大多数嵌入式系统上都使用flash存储介质。flash有很多类型,包括nor flash、nand flash和其它半导体盘。它们之间的不同在于: nor flash 支持芯片内执行(xip, execute in place),这样代码可以在flash上直接执行而不必拷贝到ram中去执行。而nand flash并不支持xip,所以要想执行 nand flash 上的代码,必须先将其拷贝到 ram中去,然后跳到 ram 中去执行。nor flash 使用最为普遍。bootloader一般放在flash的底端或者顶端,这需要根据处理器的复位向量来进行设置。可以配置成mtd设备来访问flash分区

嵌入式DTU在共享按摩椅系统中应用
中国电信主导提出C-RAN,解决共享5G建设
2021年双十一有哪些运动蓝牙耳机值得买?运动蓝牙耳机推荐
区块链产品溯源是什么
什么是接地电阻 接地电阻测试仪使用方法
bootloader启动过程
采用博通BCM20793结合S3C6410主控制器的NFC模块设计
鼎阳科技发布全新一代SHN900A系列全双端口手持矢量网络分析仪
基于卫星的定位将如何塑造我们的未来
诺基亚计划在德国投资3.6亿欧元用于芯片设计
DiLink智能网联产品亮相2020北京车展
AI风口下智能和呆萌并存的儿童机器人
笔记本选机有门道 为您精选CPU与GPU的黄金组合
基于SVPWM的永磁同步电机矢量控制系统设计
选对工具,你也能做出别人家的酷炫大屏
自动驾驶技术推进物流行业的发展
贝恩财团表示,支持东芝存储在芯片行业的并购行动,包括进行一些大手笔交易
防范手机幅射的8大方法
AirPods三代曝光或将会支持降噪和防水功能体积有所增大
电子支付迈入3.0时代 汇付天下拔得头筹