嵌入式linux的u-boot系统启动过程,嵌入式linux操作系统u-boot启动顺序以及代码解析...

62e50291a81fc54b507f33cb80033297.gif

嵌入式linux操作系统u-boot启动顺序以及代码解析

(9页)

620bcbc09515fa8a4918592fde515098.gif

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

9.9 积分

Bootloader/u-boot 的启动模式对于计算机系统来说,从计算机开机上电的到操作系统的启动需耍一个 引导过程。嵌入式Linux同样也需要一个引导的过程,及引导程序就叫做 Bootloader。Bootloader是在操作系统启动之前执行的一小段程序,通过这段 小程序,我们可以初始化硬件设备、建立内存空问映射表,从而建立适当系 统软硬件环境,为最终调用操作系统内核做好准备。对于嵌入式系统,Bootloader是基于特定平台来实现的,因此几乎不可 能为所有的计算机操作系统建立一个通用的Bootloader,不同的处理器架构 都有不同的Bootloader, Bootloader不但依赖于CPU的体系结构,而且依赖 于嵌入式系统板级的设备的配置。对于两块不同的嵌入式开发板,即使他们 使用同一种处理器,要想让运行于一块板子上的Bootloader运行在另一块板 子上,一般都需要修改Bootloader源程序。反过来大多数的Bootloader都具有很多的共性,某些Bootloader也能够 支持多种体系结构的嵌入式系统。例如:u-boot就同时文持Powerpc、ARm、 MIPS和X86等等的体系结构,支持的板子有上百种,通常他们都能够自动 从存储介质上启动,都能够引导操作系统启动,并且大部分都可以支持串口和 网口的操作。系统加电或者复位后,cpu通常都会从某个地址开始执行,这是由处理 器决定的,对于ARM处理器而言会从0x00000000取第一条指令,嵌入式系 统的开发板都要把ROM和FLASH映射到这个地址上,因此必须将 Bootloader的程序存储在相应的FLASH位置,这样系统加电后就会首先执行 它。u-boot的启动一般流码:第一阶段:依赖cpu初始化外围硬件代码,通常用汇编代码实现1、设置Cpu的工作模式;2、关屮断,以防止意外发生;Z/ ,.、rjw,卜 r.、r|w,y、r.、r|w rjw r.、r|w rjw ,.、r.、rjw r.、r|w,蠢、r.、<Jw,y、,y、<Jw rjw,y、<Jw rjw,y、,y、rjw,y、<Jw rjw,y、r.、,y、,y、rjw r|w,y、rjw r|w,卜 r.、r|w <Jw r.、,:、,:、* set the cpu to SVC32 mode,设置 cpu 丁作模式为 11010011,*后五位表示cpu的工作模式设置为”管理”,并且关闭中断* 110则表示IRQ(普通中断)和FIQ(快速中断)都为禁止/1、1、1、/mrsr0,cpsr//读取cpsr中的数抛到rO中bic 1*04),#(^117/将寄存器10的值和0x1 f的反码安位与之后将结果存储在r0 中相当于清零orr r0,r0,#0xd3//将寄存器r0的值和0xd3安位或之后将结果保存在r0寄存器 之屮,关闭屮断msrcpsr,rO//将cpsr中的数值写到r0寄存器中3、关闭看门狗,避免系统重启;#ifdefined(CONFIG_S3C2400)||defined(CONFIG_S3C2410)||defined(CONFIG_S3C2440)/* turn off the watchdog,关闭开门狗*/# if defined(CONFIG_S3C2400)# define pWTCON 0x15300000# define INTMSK 0x14400008/* Interupt-Controller base addresses# define CLKDIVN 0x14800014 /* clock divisor register */ #else# define pWTCON 0x53000000# define INTMSK 0x4A000008 /* Interupt-Controller base addresses */# define INTSUBMSK 0x4A00001C# define CLKDIVN 0x4C000014 /* clock divisor register */# endif4、设置back初始化,设置cpu的工作频率;#if defined(CONFIG_S3C2440)/*FCLK HCLK PCLK =1:4: 8*/ldr r0, CLKDIVNmov rl,#5str rl,[rO]mrc pl5,0,rl,cl,c0,0orr r 1,rl,#0xc0000000mcr pl5,0,rl,cl,c0,0mov rl,#CLK CTL BASEmov r2,#MDIV_405 add r2,r2,#PSDIV 一405str r2,[rl,#0x4]#else/* FCLK:HCLK:PCLK = 1:2:4 *//* default FCLK is 120 MHz ! */ldr rO,二CLKDIVNmov rl,#3str rl,[rO]#endif /* CONFIG_S3C2400 || CONFIG_S3C2410 *5、从FLASH拷贝到RAM;#ifndef CONFIG_SKIP_RELOCATE_UBOOTrelocate:/* relocate U-Boot to RAM */adr rO, _start/* rO

关 键 词:

嵌入式 linux 操作系统 boot 启动 顺序 以及 代码 解析

524d6daf746efaa52c3c71bbfe7ba172.gif

天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本文标题:嵌入式linux操作系统u-boot启动顺序以及代码解析

链接地址:

https://www.wenku365.com/p-28059932.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值