BootLoader 内核 文件系统

时间:2026-01-21

学院:计算机与通信工程学院

班级: 嵌入式软件11-01

学号

姓名: 杨战强

BootLoader:

一个嵌入式系统从软件角度来看分为三个层次:

引导加载程序

包括固化在固件(firmware)中的boot程序(可选),和BootLoader两大部分。 Linux内核

特定于嵌入式平台的定制内核。

文件系统

包括了系统命令和应用程序。

在嵌入式系统中,通常没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时都从地址0X00000000开始执行。而在这个地址处安排的通常就是系统的BootLoader程序。

定义:简单地说,BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。

安装:系统加电或复位后,所有的CPU通常都从CPU制造商预先安排地址开始执行。比如,S3C2410在复位后从地址0X00000000起开始执行。而嵌入式系统则将固态存储设备(比如:FLASH)安排在这个地址上,而BootLoader程序又安排在固态存储器的最前端,这样就能保证在系统加电后,CPU首先执行BootLoader程序。

为什么要进行BootLoader移植?

每种不同的CPU体系结构都有不同的BootLoader。除了依赖于CPU的体系结构外,BootLoader还依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,外设芯片的类型等。这就是说,对于两块不同的开发板而言,即使他们是基于同一种CPU而构建的,但如果他们的硬件资源或配置不一致的话,要想在一块开发板上运行的BootLoader程序也能在另一块板子上运行,还是需要作修改。 BootLoader的stage1通常包括以下步骤:

硬件设备初始化

为加载BootLoader的stage2准备RAM空间

拷贝BootLoader的stage2到RAM空间中

设置好堆栈

跳转到stage2的C入口点

BootLoader的stage2通常包括以下步骤:

初始化本阶段要使用到的硬件设备

将内核映像和根文件系统映像从flash上读到RAM中

调用内核

Bootloader需要具备以下几个功能:

1:初始化RAM

Bootloader必须能够初始化RAM,因为将来系统要通过它来保存一些Volatile数据

2:初始化串口

Bootloader应该要初始化以及使能至少一个串口,通过它与控制台通信

3:启动内核镜像

根据内核镜像保存的介质不同,可从FLASH以及RAM启动,下面系统状态必须得到满足

(1) CPU寄存器设置

R0=0;

R1=机器类型

R2=启动参数标记列表在RAM中的起始地址

这3个寄存器的设置是在最后启动内核时通过启动参数传递完成的

(2) CPU模式

关闭中断,属于SVC(管理模式)

Bootloader中没有必要支持中断的实现,这属于内核机制以及设备驱动管理的管理范畴;SVC模式是系统的一种保护模式,这样就可以进行一些只能在SVC模式下的操作(比如一些特定寄存器的访问操作)

(3) Cache和MMU的设置

MMU必须关闭

数据cache必须关闭

指令cache可以关闭也可以启动

Bootloader中所有对地址的操作都是物理地址,不存在虚拟地址,因此MMU必须关闭,Bootloader主要是装载内核镜像,镜像数据必须真实写回SDRAM中,所以数据cache必须关闭,而对于指令cache,不存在强制性的规定,但在一般情况下,推荐关闭cache

Bootloader启动流程:

一:stage1

1》:完成基本硬件初始化

软件运行离不开硬件,BOOT必须要对硬件进行初始化.硬件的初始化通过配置特殊控制寄存器来完成,包括下面几个部分:

(1) 关Watchdog Timer

(2) 屏蔽所有的中断

为中断提供服务通常是 OS 设备驱动程序的责任. 因此Boot的执行全过程中可以不必响应任何中断。中断屏蔽可以通过写 CPU 的中断屏蔽寄存器及状态寄存器(ARM的 CPSR 寄存器)来完成

(3) 初始化PLL(锁相环)和时钟(设置CPU的速度)

PLL的输出频率要就是处理器的工作主频.

(4)初始化RAM

使用一组专用的特殊功能寄存器来控制外部存储器的读/写操作,通过对该组特殊功能寄存器编程,可以设定外部数据总线宽度,访问周期,定时的控制信号(例如RAS和CAS)等参数.这些主要要通过设置13 个从0x1C80000(BWSCON)开始的寄存(MEMORYCONTROLLER SPECIAL REGISGERS)来完成.

(4)初始化LED

(5)关闭CPU内部指令和数据cache等

2》:为加载stage2准备RAM空间

为了获得更快的执行速度,通常把stage2加载到RAM空间中来执行,因此必须为加载Bootloader的stage2准备一段可用的RAM空间

3》:复制stage2到RAM中

确定stage2的可执行映像文件在存储设备的存放起始地址和终止地址及RAM空间的起始地址

4》:设置堆栈指针

这是为执行stage2的C语言代码作好准备(BOOT需要为每种模式建立堆栈,这需要初始化其程序状态寄存器(SPSR)和堆栈指针.系统需要初始化哪些堆栈取决于用户使用了那些中断,以及系统需要处理哪些错误类型.一般来说管理者堆栈必须设置(内核运行于此模式下),如果使用了IRQ中断,则IRQ堆栈也必须初始化.)

二:stage2

(1) 用汇编语言跳转到main入口 …… 此处隐藏:5026字,全部文档内容请下载后查看。喜欢就下载吧 ……

BootLoader 内核 文件系统.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219