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

(9页)

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

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 启动 顺序 以及 代码 解析

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

关于本文

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

链接地址:

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

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

  1. Linux的简介与系统启动过程

    Linux的简介与系统启动过程 文章目录 Linux的简介与系统启动过程 Linux简介 英文解释 Linux开源 Linux 的发行版 Linux应用 Linux vs Windows Linux安 ...

  2. 【Linux笔记(000) 】-- 系统启动过程

    索引: 目录索引 一.   启动流程 BIOS --> MBR(Boot Code) --> 引导程序(GRUB) --> 加载内核 --> 执行Init --> run ...

  3. 有关计算机启动过程的书籍,操作系统—计算机的启动过程

    一 预备 在8086系统CPU中,有两个寄存器CS和IP用于保存CPU接下来需要执行的指令地址,具体计算方法为 CS<<4+IP 例如CS=0x7c0,而IP=0x0001,则CS< ...

  4. linux系统启动过程详解-开机加电后发生了什么 --linux内核剖析(零)

    本文参考了如下文章 深入理解linux启动过程 mbr (主引导记录(Master Boot Record)) 电脑从开机加电到操作系统main函数之前执行的过程 详解linux系统的启动过程及系统初 ...

  5. 计算机启动操作系统的过程,操作系统启动过程

    操作系统启动过程简单分为四部分,从BIOS自检.系统引导.启动内核.初始化系统.其中每个部分又分为多个子部分,操作系统的建立是一个相对比较复杂的事情.以下以Linux2.6.32版本为基础,介绍操作系 ...

  6. 嵌入式Linux系统启动过程

    一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader), Linux 内核,文件系统,应用程序. 当系统首次引导时,或系统被重置时,处理器会执行一个位于Flas ...

  7. 嵌入式linux的u-boot系统启动过程,【站友投递】U-boot启动过程详解

    [站友投递]U-boot启动过程详解 来源:互联网 作者:denny 时间:2009-03-18 Tag:点击: 一.U-BOOT的目录结构 u-boot目录下有18个子目录,分别存放管理不通的源程序 ...

  8. Linux嵌入式驱动开发07——GPIO驱动过程记录(飞凌开发板)

    文章目录 全系列传送门 1. 在/arch/arm/boot/dts/imx6q-pinfunc.h查找 2. 在设备树配置文件中添加设备节点定义以及其引脚定义 3. 修改设备树文件添加配置 4. d ...

  9. 嵌入式linux的运行过程,嵌入式linux的启动流程--详解

    开门见山: 1.嵌入式linux启动第一步----Boot Loader Boot Loader在这里我就不细说了,详细分析起来的话有很多内容,网上也有很多讲解很详细的文章.这段小程序中我们可以初始化 ...

最新文章

  1. python operator 多属性排序_又碰到一个非常实用的模块,以后的各种运算就用它了,python内置的常用包。
  2. graphviz linux教程,程序员绘图利器 — Graphviz
  3. BOOL,int,float,指针变量 与“零值”比较
  4. Android百分比布局初探
  5. HTTP请求返回状态码和提示信息
  6. python安装在d盘环境变量配置_python安装与环境变量配置
  7. iQOO高层专访:打造性能旗舰 用户满意度为先
  8. Chrome 插件开发与本地程序交互流程
  9. web中“/”写在不同地方时的值不同
  10. MATLAB中的命令行输出
  11. 磷酸铁锂电池BMS系统工作原理
  12. oracle函数按周,关于oracle按日周月分组统计以及next_day()函数详解
  13. *** Error 65: Access violation at 0x00000004 : No 'write' permission
  14. python的cfg是什么模块_使用安装模块设置.py以及设置.cfg
  15. 思科设备VLAN配置命令
  16. 信息系统项目管理师(2022年)—— 重点内容:项目合同管理(13)
  17. phpmailer SMTP ERROR: Password command failed: 526 Authentication failure[0] 阿里云企业邮箱
  18. 向搜索引擎提交网站的登录入口
  19. linux平台性能监控系统,如何使用top命令监控Linux系统性能
  20. 读《创始人洪涛:小猪CMS之前,我的匆匆那年》的一些感悟

热门文章

  1. RTF文件格式说明3
  2. 计算机纸带打孔编程,人机交互演变史:从打孔纸带到人工智能
  3. HNUCM2020年春季ACM集训队选拔赛(2)题解
  4. 电子教室多媒体有序教学管理-极域
  5. jQuery为table表格动态添加或删除tr
  6. 【故障解决】ORA-17630: Mismatch in the remote file protocol version client 2
  7. python log壁纸_一个爬取Bing每日壁纸的python脚本
  8. 苹果手表3和4的区别_一个传统手表用户的叛逃!我就爱用Apple Watch 5看时间
  9. 重新定义后时代超神器---Vim
  10. Educational Codeforces Round 108 (Rated for Div. 2)-B. The Cake Is a Lie-题解