- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
BootLoader 内核 文件系统
内
核
文
件
系
统
学院计算机与通信工程学院
班级 嵌入式软件11-01
学号 541113430142
姓名 杨战强
BootLoader:
一个嵌入式系统从软件角度来看分为三个层次:
引导加载程序
包括固化在固件(firmware)中的boot程序(可选),和BootLoader两大部分。
Linux内核
特定于嵌入式平台的定制内核。
文件系统
包括了系统命令和应用程序。
在嵌入式系统中,通常没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时都从地址0始执行。而在这个地址处安排的通常就是系统的BootLoader程序。
定义:简单地说,BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。
安装:系统加电或复位后,所有的CPU通常都从CPU制造商预先安排地址开始执行。比如,S3C2410在复位后从地址0开始执行。而嵌入式系统则将固态存储设备(比如: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启动,下面系统状态必须得到满足
CPU寄存器设置
R0=0;
R1=机器类型
R2=启动参数标记列表在RAM中的起始地址
这3个寄存器的设置是在最后启动内核时通过启动参数传递完成的
CPU模式
关闭中断,属于SVC(管理模式)
Bootloader中没有必要支持中断的实现,这属于内核机制以及设备驱动管理的管理范畴;SVC模式是系统的一种保护模式,这样就可以进行一些只能在SVC模式下的操作(比如一些特定寄存器的访问操作)
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 REGISGE
文档评论(0)