深入理解bootloader_1—– bootloader的初步概念

1、引言

 bootloader就是在操作系统内核运行之前运行的一小段程序。通过这个小程序我们主要完成下面几个内容:

1)初始化硬件设备。
2)建立内存空间的映射。
3)创建内核需要的一些信息,并将这些信息通过相关机制,传递个给内核。
4)将系统的软硬件环境设置成一个合适的状态。
5)为最终调用操作系统内核准备好正确环境,真正起到引导和加载内核的作用。
在嵌入式系统,通常没有PC 中BIOS那样的固件程序,因此整个系统的加载启动就完全由bootloader来完成。Bootloader 是CPU 上电后运行的第一段程序。不同的CPU 体系结构有不同的bootloader,有些bootloader支持多种体系结构的CPU,比如U-Boot就同时支持ARM和MIPS体系结构。除了依赖于CPU 的体系结构外,Bootloader实际上也依赖于具体的嵌入式版级设备的配置。也就是两块不同的嵌入式版,即使他们是基于同一种CPU而建,但是要想让运行在一块板子上的bootloader也运行到另一块板子上,通常个需要修改Bootloader源程序。因此每款Bootloader都是独一无二的,但我们可以总结开发或者维护Bootloader的一些背景知识,掌握这些背景知识就能够融会贯通。
我们以ARM体系结构为参考要想掌握Bootloader起码要掌握下面一些知识:
1)熟悉Linux的的开发环境,shell,make工程管理工具的使用。
2)掌握ARM体系结构,指令集,独特的寻址方式。
3)计算机的编译和链接。
4)熟练掌握对U-Boot代码的 分析。

2、Bootloader的角色

当一个嵌入式开发板上电时,即使执行最简单的程序,都要初始化很多硬件。每种体系结构、处理器都有一组预定义的动作和配置,他们包含从单板的存储设备获取初始化代码的功能。最初的初始化代码是Bootloader的一部分,它负责启动处理器和相关硬件设备。
上电复位时,大多数处理器都有一个获取第一条指令的默认初始地址。硬件设计人员利用该信息来进行存储空间的布局。这样以来,上电的时候,可从一个通用的已知地址获取代码,然后建立软件的控制。
Bootloader提供初始化代码,并初始化单板,这样就可以执行其他程序,最初的初始化程序都是给体系结构下汇编语言写成的。在初始化相应的硬件信息之后,Bootloader会u引导完整的操作系统,他会定位加载操作系统,并将控制权交给操作系统。与传统的PC-BIOS不同,当操作系统获取控制权之后,嵌入式下
的Bootloader将不复存在。

3、不同体系下的BootLoader

文献参考:

抄录自 《深入理解BoorLoader》 胡尔佳 编著(学习笔记仅作学习,交流,详细阅读请购买正版)

深入理解bootloader_1----- bootloader的初步概念相关推荐

  1. 04 理解SQL与T-SQL的概念测试分析 1214

    04 理解SQL与T-SQL的概念测试分析 1214

  2. ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters

    ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters 上一节完成了对nodes, Topic的理解,再深入一步: Services and Parameter ...

  3. Spring Data JPA 之 理解 Persistence Context 的核心概念

    21 理解 Persistence Context 的核心概念 21.1 Persistence Context 相关核心概念 21.1.1 EntityManagerFactory 和 Persis ...

  4. bootloader详解----bootloader的基本概念

    引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行.一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序.包括固化在固件(firmware)中的 ...

  5. React最佳实践系列 —— 循序渐进理解 Dva中的model概念

    Dva最佳实践 -- 循序渐进理解 Dva中的model概念 一. 序 二. 在create-react-app中使用redux 1. 开始 2. 安装redux 三.异步action 四. Dva中 ...

  6. 趣味理解网关、路由等概念

    趣味理解网关.路由等概念 网关 网关是一种充当转换重任的计算机系统或设备.在使用不同的通信协议.数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器.与网桥只是简单地传达信息不同,网关 ...

  7. 计算机组成原理 BootLoader/BIOS/U-Boot概念理解

    一.BIOS概述 BIOS是 Basic Input/Output System 的首字母缩写词.也称为 System BIOS.ROM BIOS 或 PC BIOS. 计算机的BIOS(基本输入/输 ...

  8. 理解数据库与数据模型的概念

    本篇首先引入编程微课项目作为数据库的应用案例,通过对项目功能及涉及的相关数据的介绍,让读者对数据库的应用有一个感性认识,然后重点讲述关系数据库的理论基础知识.通过本篇的学习,读者应该能掌握以下内容: ...

  9. 软件测试第一部分——初步概念与过程

    1.软件的概念与分类 1.1 软件的概念  软件是计算机系统中与硬件相互依存的一部分,包括程序.数据以及与其相关文档 的完整集合.  程序是按事先设计的功能和性能要求执行的指令序列:  数据是使 ...

  10. 如何轻松理解Android中的Surface概念

    安卓开发中,涉及多媒体尤其是视频,经常会接触到一个概念Surface 那么如何理解他呢.最简单的理解就是其实就是一块内存区域仅此而已. 如果通过字面理解,好像是一个平面,但这个平面在哪里呢? 写代码经 ...

最新文章

  1. Vaptcha验证码配置实现人机验证
  2. 图像处理之添加高斯与泊松噪声
  3. 微服务平台改造落地解决方案设计
  4. ios:CGContextRef 渲染中文问题
  5. TextView之一:子类的常用属性
  6. ubuntu搜狗输入法突然无法使用(新解)
  7. 使用ASP.NET广告控件的XML语言创建广告链接--ASP.NET
  8. Python里的++和--不是运算符
  9. char *p = new char[256]; delete p; / delete[] p; 哪个对 为什么
  10. 崩溃!还未修复的 Bug,凌晨三点遭到黑客 DDoS 攻击 | 技术头条
  11. Vue简单入门及组件的简单使用
  12. HTML5 响应式网页设计之页面美化(一.响应式布局)
  13. calloc与malloc的区别
  14. DSP数字信号处理实验--CCS基础入门
  15. 用Python学《微积分B》(序)
  16. CAD如何使用全屏显示
  17. 数字IC设计学习笔记_8位7段数码管1
  18. 自旋锁(spinlock)
  19. android 很多牛叉布局github地址(转)
  20. 希腊神话中神的命名树

热门文章

  1. 【JUC】008-Stream流式计算
  2. docker搭建searx_『颜值即正义』看小睿“自建搜索引擎”
  3. 移动端切图内容包括什么_移动端切图备忘
  4. CuraEngine切片类详解(转载)
  5. oracle创建用户密码和权限--ORA-65096 invalid common user or role name
  6. 我用数据分析,揭开了中国男篮最后的遮羞布
  7. Next generation sequencing (NGS)二代测序数据预处理与分析
  8. <Multi-channel and Multi-model based Autoencoding Prior for Grayscale Image Restoration>笔记
  9. 2个或2个以上路由器串联上网,在同一网段
  10. 2022年山东省安全员C证考试资料及山东省安全员C证考试试题