UBoot源码分析1

• UBoot源码解析(一)

主要内容

• 分析UBoot是如何引导Linux内核

• UBoot源码的一阶段解析

BootLoader概念

• Boot Loader 就是在操作系统内核运行之前运行

的一段小程序。通过这段小程序,我们可以初始

化硬件设备、建立内存空间的映射图,从而将系

统的软硬件环境带到一个合适的状态,以便为最

终调用操作系统内核准备好正确的环境

• 通常,Boot Loader 是严重地依赖于硬件而实现

的,特别是在嵌入式世界。因此,在嵌入式世界

里建立一个通用的Boot Loader 几乎是不可能的。

尽管如此,我们仍然可以对Boot Loader 归纳出

一些通用的概念来,以指导用户特定的Boot

Loader 设计与实现。

UBoot来源

• U-Boot 是 Das U-Boot 的简称,其含义是 Universal Boot

Loader GPL

,是遵循 条款的开放源码项目。最早德国

DENX 软件工程中心的 Wolfgang Denk 基于 8xxROM 和

FADSROM 的源码创建了 PPCBoot 工程项目,此后不断

添加处理器的支持。而后,Sysgo Gmbh 把 PPCBoot 移

植到 ARM 平台上,创建了 ARMBoot 工程项目。最终,

以 PPCBoot 工程和 ARMBoot 工程为基础,创建了 U-

Boot 工程。

• 而今,U-Boot 作为一个主流、通用的 BootLoader,成功

地被移植到包括 PowerPC、ARM、X86 、MIPS、NIOS、

XScale 等主流体系结构上的百种开发板,成为功能最多、

BootLoader

灵活性最强,并且开发最积极的开源 。目前。

U-Boot 仍然由 DENX 的 Wolfgang Denk 维护

UBoot存储空间分布

• UBoot OS

是用来引导 系统启动,那么它是如何引

OS

导 启动的呢?

启动参数

内核 根文件系统

bootloader

bootloader

bboooottllooaaddeerr

UBoot和内核的交互

• UBoot如何调用Linux内核?

– UBoot通过命令把Linux内核镜像文件从Flash中读取到内存的某一

, PC UBoot Linux

位置然后设置 寄存器执向该位置 调用 内核的

前提条件是?

– R0 =0

– R1= linux/arch/arm/mach-type

适当的机器码机器码的位置存放在

文件中

– R2 =启动参数标记列表在内存中的位置

– CPU必须设置为SVC模式并关闭中断

– MMU必须关闭

• UBoot如何给内核传递参数?

– UBoot和内核交互是单向的,两个程序不能同时运行,那么要实

现参数传递只能通过把参数存

linux uboot 源码分析,UBoot源码分析1.pdf相关推荐

  1. S5P210-uboot源码分析-uboot如何启动内核

    uboot如何启动内核 7.1.uboot和内核到底是什么? 1.uboot是一个裸机程序 (1)uboot的本质就是一个复杂点的裸机程序,和我们arm裸机中写的程序没有什么本质上的区别. (2)ub ...

  2. 什么是U-Boot以及如何下载U-Boot源码

    参考:什么是U-Boot以及如何下载U-Boot源码? 作者:一只青木呀 发布时间: 2020-10-20 11:05:59 网址:https://blog.csdn.net/weixin_45309 ...

  3. 【原创】【专栏】《Linux设备驱动程序》--- LDD3源码目录结构和源码分析经典链接

    http://blog.csdn.net/geng823/article/details/37567557 [原创][专栏]<Linux设备驱动程序>--- LDD3源码目录结构和源码分析 ...

  4. 【Linux 内核】进程管理 ( 进程相关系统调用源码分析 | fork() 源码 | vfork() 源码 | clone() 源码 | _do_fork() 源码 | do_fork() 源码 )

    文章目录 一.fork 系统调用源码 二.vfork 系统调用源码 三.clone 系统调用源码 四._do_fork 函数源码 五.do_fork 函数源码 Linux 进程相关 " 系统 ...

  5. (转)Linux设备驱动之HID驱动 源码分析

    //Linux设备驱动之HID驱动 源码分析 http://blog.chinaunix.net/uid-20543183-id-1930836.html HID是Human Interface De ...

  6. Linux内核 eBPF基础:ftrace源码分析:过滤函数和开启追踪

    Linux内核 eBPF基础 ftrace基础:过滤函数和开启追踪 荣涛 2021年5月12日 本文相关注释代码:https://github.com/Rtoax/linux-5.10.13 上篇文章 ...

  7. Linux内核 eBPF基础:kprobe原理源码分析:源码分析

    Linux内核 eBPF基础 kprobe原理源码分析:源码分析 荣涛 2021年5月11日 在 <Linux内核 eBPF基础:kprobe原理源码分析:基本介绍与使用>中已经介绍了kp ...

  8. Linux内存管理 brk(),mmap()系统调用源码分析2:brk()的内存释放流程

    Linux brk(),mmap()系统调用源码分析 brk()的内存释放流程 荣涛 2021年4月30日 内核版本:linux-5.10.13 注释版代码:https://github.com/Rt ...

  9. linux驱动开发之spi-omap-100k.c源码分析

    代码分析 对于linux的驱动代码来说,我们要从后往前分析: /** OMAP7xx SPI 100k controller driver* Author: Fabrice Crohas <fc ...

最新文章

  1. Java主要知识结构
  2. 物联网将推动半导体产业继续增长
  3. 支付宝人脸数据被共享?李开复道歉
  4. 图像的泊松(Poisson)编辑、泊松融合完全详解
  5. 一文带你了解企业上云数据分析首选产品Quick BI
  6. R语言blotter包及相关工具
  7. linux 进程 读写锁,linux 下实现高性能读写锁(read/write lock)
  8. MySQL故障检测_mysql主从故障检测处理脚本
  9. jQuery框架总体分析
  10. ubuntu上virsh+kvm安装虚拟机
  11. 详述RFID服装智能管理方案
  12. 简单利用字典破解zip文件口令
  13. Iterator迭代器遍历Map集合
  14. 影子系统 重启蓝屏 开机蓝屏 安全模式蓝屏 进PE蓝屏 解决方案
  15. 浅聊一下车载以太网技术及其EAVB和TSN技术
  16. excel交换两列笔记
  17. csgo如何旋转跳?如何连跳
  18. matlab示波器有毛刺,在使用示波器时如何消除毛刺?
  19. 数据准备脚本:Python Pandas OR esProc SPL?
  20. 两个有序链表合并成一个有序的单链表

热门文章

  1. Java 11功能– Java飞行记录器
  2. 知识蒸馏 循环蒸馏_Java垃圾收集蒸馏
  3. 功能Java示例 第2部分–讲故事
  4. Spring JPA数据+Hibernate+ MySQL + Maven
  5. 简单的Spring Boot管理员设置
  6. eclipse中junit_在Eclipse中有效使用JUnit
  7. JUnit规则–引发异常时执行附加验证
  8. 带有Java Util日志记录的Java 8延迟调用
  9. jwebsocket传图片_Java中带有JWebSocket的WebServerSocket
  10. gson json和类转换_带有GSON和抽象类的JSON