bootloader与uboot之间有什么联系?
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卡刷机的步骤:
- 烧录uboot到SD卡中,有2种烧写方法:一种是在windows中用刷卡工具去制作启动SD卡;另一种是在linux中用dd命令。制作完SD后将SD卡插入开发板,然后开机就可以进入uboot界面。
- 使用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的本质就是一段裸机程序。
【推荐阅读】
需要多久才能看完linux内核源码?
一文了解Linux内核的Oops
分析linux启动内核源码
一文剖析Linux内核中内存管理
一文了解Linux上TCP的几个内核参数调优
bootloader与uboot之间有什么联系?相关推荐
- STM32MP157 Linux系统移植开发篇4: BootLoader(Uboot)移植
本文章为<STM32MP157 Linux系统移植开发篇>系列中的一篇,笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板).stm32mp157是ARM双核,2 ...
- Bootloader及u-boot简介/u-boot系统启动流程
Bootloader及u-boot简介 Bootloader代码是芯片复位后进入操作系统之前执行的一段代码,主要用于完成由硬件启动到操作系统启动的过渡,从而为操作系统提供基本的运行环境,如初始化CPU ...
- BootLoader(U-Boot)启动过程记录
BootLoader(U-Boot)启动过程记录 定义 Bootloader终极目的是引导内核,加载内核到内存然后跳转到内核的地方执行,在加载之前也会做一些硬件的初始化等等操作.启动模式分为两种:启动 ...
- 计算机组成原理 BootLoader/BIOS/U-Boot概念理解
一.BIOS概述 BIOS是 Basic Input/Output System 的首字母缩写词.也称为 System BIOS.ROM BIOS 或 PC BIOS. 计算机的BIOS(基本输入/输 ...
- 【整理】BIOS、BootLoader、uboot对比
bios BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统".其实,它是一组固化到计算机内 ...
- Bootloader之uBoot简介(转)
来自http://blog.ednchina.com/hhuwxf/1915416/message.aspx,感谢作者 一.Bootloader的引入从前面的硬件实验可以知道,系统上电之后,需要一段程 ...
- Bootloader之uBoot简介
本文转载自:http://blog.ednchina.com/hhuwxf/1915416/message.aspx 一.Bootloader的引入 从前面的硬件实验可以知道,系统上电之后,需要一段程 ...
- 【Bootloader】探究bootloader,分析u-boot源码
Preface 之前也发表过关于<Bootloader启动过程分析>的文章,但是内容表达得比较抽象,大多是文字叙述,所以这里从系统和代码的角度来深入分析bootloader的启动过程. 工 ...
- [架构之路-26]:目标系统 - 系统软件 - bootloader uboot使用方法、常用命令
目录 第1章 uboot简介 1.1 uboot与Linux的关系 1.2 bootloader的类型 1.3 uboot的主要版本 1.4 uboot的作用与功能 1.5 SoC支持的启动方式 第2 ...
最新文章
- 我竟然用OpenCV实现了卡尔曼滤波
- java executequery_关于Java怎样封装executeQuery()的问题
- python导入excel数据-Python导入数值型Excel数据并生成矩阵操作
- POJ-2386-Lake Counting
- 常用的渗透测试工具SQLMap
- 开灯变形问题(枚举法)
- springCloud负载均衡Ribbon和Feign的区别
- jmeter更改java内存,jmeter内存溢出解决方法
- python常用模块教程_盘点Python常用的模块和包
- ultraedit教程java_Java开发工具配置UltraEdit基础教程
- 深入了解帆软报表系统的启动过程三
- 程序员的代码行数越少越好?
- awk学习笔记(16) - 字符串函数
- JAVA回文数代码getReverse_java判断回文数示例分享
- SEO网站前端优化整理
- WEB前端工具推荐丨分享6个热门颜色选择器组件
- Latex 多图片排版--排版代码生成器
- Hides for Mac v5.6一键隐藏所有应用 支持 M1
- nodejs+vue+elementui摄影作品图片展示交流网站express
- 九峰影业创始人_九峰百度百科
热门文章
- python 文件批量转换格式_使用python批量化音乐文件格式转换的实例
- 第10章 路由器、交换机及其操作系统介绍
- Monte Carlo and bootstrap and Permutation Test
- 中兴N880S使用SuperOneClick2.1.1出现waiting device
- android 摇杆控制方向键,Android Studio中实现摇杆
- GBase 8a并发支持性能
- DEDE:ping服务插件破解版推广信息解密过程实录
- 送上人;玉台体;春宫曲;后宫词;近试上张水部;瑶池;夜雨寄北;寄令孤郎中;为
- java计算圆形的面积与周长_Java学习之路----计算圆形的面积和周长
- 路漫漫其修远兮,吾将上下而求索(2019培训总结)