嵌入式软件工程师听说过 u-boot 和 bootloader,但很多工程师依然不知道他们到底是啥。

今天就来简单讲讲 u-boot 和 bootloader 的内容以及区别。

Bootloader

比Bootloader从字面上来看就是启动加载的意思。用过电脑的都知道,windows开机时会首先加载bios,然后是系统内核,最后启动完毕。那么bootloader就相当于手机的bios,它在手机启动的时候根据基带初始化硬件,然后引导系统内核,直到系统启动。

Bootloader是嵌入式系统在加电后执行的第一段代码,通过这段小程序,进行硬件初始化,获取内存大小信息等,调整手机到适配状态。在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行 。

对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序 。

反过来,大部分Bootloader仍然具有很多共性,某些Bootloader也能够支持多种体系结构的嵌入式系统。例如,U-Boot就同时支持PowerPC、ARM、MIPS和X86等体系结构,支持的板子有上百种。通常,它们都能够自动从存储介质上启动,都能够引导操作系统启动,并且大部分都可以支持串口和以太网接口。

uboot

1.硬件管理

uboot要能够进行Soc级(Soc内部外设)和板级(Soc外部外设)硬件管理。

uboot中实现了一部分硬件的控制能力(uboot中初始化了一部分硬件),因为uboot为了完成一些任务必须让这些硬件工作。譬如uboot要实现刷机必须能驱动iNand,譬如uboot要在刷机时LCD上显示进度条就必须能驱动LCD,譬如uboot能够通过串口提供操作界面就必须驱动串口。譬如uboot要实现网络功能就必须驱动网卡芯片。

2.能够完成镜像烧录(刷机)

uboot要能够被借助完成刷机操作。参考下SD卡刷机的步骤:

a.烧录uboot到SD卡中。

有2种烧写方法:一种是在windows中用刷卡工具去制作启动SD卡;另一种是在linux中用dd命令。制作完SD后将SD卡插入开发板,然后开机就可以进入uboot界面。

b.使用uboot的fastboot命令,并借助PC中的fastboot软件完成包括uboot、kernel、rootfs等的镜像的烧录。

从上面就可以看出,刷机依靠的是uboot的fastboot命令,将镜像写到相应的FLASH中。

3.uboot的“生命周期”

uboot的入口就是开机自动启动,uboot的唯一出口就是启动内核。uboot还可以执行很多别的任务(譬如烧录系统),但是其他任务执行完后都可以回到uboot的命令行继续执行uboot命令,而启动内核命令一旦执行就回不来了。

4.uboot要提供命令式shell界面

shell是用户操作接口的意思。shell有命令行的shell,如windows下的cmd,如linux下的终端;也有GUI式的shell,比如常用的windows下的各种界面。shell是一种封装后留出来的接口,uboot也要有这样的一个接口。

shell的原理是:由消息接收、解析、执行构成的一个死循环。我之前用过3D打印机的固件(firmware)也是这样的模式。

uboot的shell使用的也是行缓冲的模式。也就是以回车键(换行键)作为一个命令输入的结束。对应的其他缓冲模式还有无缓冲和全缓冲:无缓冲就是输入一个字符就当做一个命令处理;全缓冲就是无论输入什么都缓冲起来知道缓冲区满了才做一次处理。

bootloader 与 uboot的区别

BootLoader是嵌入式设备中用来启动操作系统内核的一段程序。

uboot(universal bootloader)是一种可以用于多种嵌入式CPU的BootLoader程序,换言之,uboot是bootloader的一个子集。

uboot的核心作用就是启动操作系统内核,uboot的本质就是一段裸机程序。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

硬件知识:u-boot和bootloader的区别相关推荐

  1. 电子工程师必备硬件知识

    硬件知识 1.电源类 1.1   电源基础 各种"地"-- 各种"GND" 板载电源设计规范 电源环路稳定性评价方法 深入芯片内部,理解去耦电容的作用 减小DC ...

  2. 嵌入式基础(1)---硬件知识,搞嵌入式开发必备

    嵌入式基础硬件知识,搞嵌入式开发必备 做嵌入式系统开发,经常要接触硬件.做嵌入式开发对数字电路和模拟电路要有一定的了解. 这样才能深入的研究下去.下面我们简单的介绍嵌入式开发中的一些硬件相关的概念. ...

  3. GPU硬件知识和基础概念 : AI时代程序员都应该了解的GPU基础知识

    金融建模.自动驾驶.智能机器人.新材料发现.脑神经科学.医学影像分析-人工智能时代的科学研究极度依赖计算力的支持.提供算力的各家硬件芯片厂商中,最抢镜的当属英伟达Nvidia了.这家做显卡起家的芯片公 ...

  4. 软件工程师也要懂的硬件知识(二极管、三极管、MOS管)

    前言 在嵌入式软件开发中,经常需要根据硬件原理图去进行GPIO口配置:如果你硬件知识一点都不懂,那么在开发中遇到问题,你就很难初步判定是硬件的问题,还是软件配置的问题.不一定需要掌握电路设计.会画PC ...

  5. 10 海康视觉平台VisionMaster 上手系列:硬件知识介绍

    硬件知识,不属于VisionMaster应用.属于机器视觉应用. 机器视觉硬件: 1,相机. 2,镜头. 3,光源及控制器. 4,主机.(含采集卡) 相机我们一般就看这些参数:(图示是海康相机) 快门 ...

  6. 嵌入式编程之软件工程师需要了解的一些基本硬件知识

    工作背景传输网设备PTN以太网盘: 对于硬件知识的了解有助于在代码实现过程中提升性能. (1)PCIE总线 PCIE总线的说明以及用处. (2)I2C总线 I2C总线的时序访问特征点击打开链接. (3 ...

  7. linux云计算架构师运维笔记-第1天-硬件知识介绍与操作系统部署

    linux云计算架构师运维笔记-第1天-硬件知识课程说明 1. 课程知识详细讲解 1.1 服务器硬件知识介绍 1.1.1 硬件设备种类介绍部分 1.1.2 企业服务器运行指标: 1.1.3 服务器种类 ...

  8. 电脑硬件知识学习_DIY电脑多年,这些硬件冷知识你们知道吗?

    最近时间是病毒爆发的高峰期,很多商场地带都停止了营业,甚至小区也开始严防死守,不准外来人员入内,俗话说得好,宁愿裤儿坐烂,也不出门惹祸,我想大家在家里玩游戏都玩烦了吧!浩南分享一些电脑硬件的冷知识给大 ...

  9. BIOS和Bootloader的区别

    BIOS和Bootloader它们都是有基本的初始化系统,USB下载和硬件测试等功能的系统启动程序.不同之处在于中断矢量的定位,由于 bootloader要启动uClinux,因此必须按照uClinu ...

最新文章

  1. Java实现文件的预览
  2. 新一代数据中心:多层级混合设计与标准化评估
  3. python socket coding
  4. 课堂测试-找英语单词最长链
  5. Java 避免精度丢失之BigDecimal 运算
  6. CSS命名方法(笔记)
  7. myeclipse自动生成hibernate映射文件的过程
  8. .NET Core开发的iNeuOS工业互联网平台,发布 iNeuDA 数据分析展示组件,快捷开发图形报表和数据大屏...
  9. linux mysql phpadmin_linux安装phpmyadmin数据库管理
  10. linux的基础知识——线程
  11. 超级计算机发展及现状论文,浅谈超级计算机发展的过程及研究现状
  12. 桥接设计模式(Bridge)
  13. 【扩频通信】基于matlab GUI扩频通信系统仿真(带面板)【含Matlab源码 1587期】
  14. github 仓库中文名_github仓库的使用
  15. JAVA把一个流赋给新的一个流_2020重新出发,JAVA基础,输入/输出(I/O)流
  16. Oracle修改expired状态,更改ORACLE 用户的 expired状态
  17. 安卓开发中的一些经验总结
  18. 最好的远程桌面破解软件frdpb_v2
  19. Android之如何学习
  20. PID 控制器代码实现

热门文章

  1. 打开mobilenet——ssd的demo.py显示这样的错误解决方法:Intel MKL FATAL ERROR: Cannot load libmkl_avx.so or libmkl_def.s
  2. Val编程-任务编程
  3. 【图像处理】——图像增强Python实现直方图均衡化
  4. matlab simulink笔记04——switch模块
  5. 南方科技大学计算机交换生,国际合作 – 合作交流分类 – 南方科技大学生物医学工程系...
  6. 基于代数距离的椭圆拟合
  7. python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。(4.0分)_学小易找答案...
  8. Koa2 静态服务及代理配置
  9. JavaScript 经典实例日常收集整理(常用经典)
  10. 【Time系列一】datetime的妙用