3、嵌入式系统的启动过程(BoodLoader)

1、系统启动过程

在这里插入图片描述
通电 - > 执行BootLoader - > 加载内核 - > 挂在根文件系统 - > 执行应用程序

Windows的启动过程:
通电 - > 执行BIOS - > 加载WinNT内核 - > 挂在文件系统 - > 执行应用程序

二、嵌入式系统的结构

在这里插入图片描述

BootLoader

1、BootLoader的概念

硬件平台通电后不会直接运行操作系统。通电之后到执行操作系统需要一个引导的过程,而这个过程需要依赖启动引导程序,所以启动引导程序被称为Boot Loader。需要注意的是,Boot Loader是统称,Boot Loader的种类很多。比如X86平台使用BIOS,arm平台使用U-Boot等都属于Boot Loader。

2、Boot Loader的作用

启动引导程序起始就是硬件平台通电后运行的一段程序,这段程序可以初始化硬件,比如建立内存的映射表。其实际目的就是为了Linux内核的正常运行做准备,就是为了建立一个合适的运行平台

3、Boot Loader的说明

Boot Loader是通用的启动引导程序,可以在不同的硬件平台上运行,如ARM、X86、PowerPC、MIPS等多种架构,但是不完全通用。也就是不能把一个Boot Loader源码在不经过修改的前提下使用在硬件平台

Boot Loader不光依赖于处理器的架构,而且还依赖硬件平台的板级硬件,就必须要对启动引导程序进行修改。比如:现在购买2块不同公司的开发板,这2块开发板的处理器用的是同一种,能不能把A公司的BootLoader直接移植到B公司的开发板使用?答案是不可以的,必须要根据B公司的开发板来修BootLoader。

4、Boot Loader的启动

在硬件通电后,CPU会去某个地址下进行取址,这个地址是由处理器决定的。一般ARM处理器都会从0x00000000这个地址取第一条指令,所以就必须把Flash的地址映射在0x00000000地址下,或者就直接把Boot Loader存储在Flash的首地址,这样CPU才可以正常操作

三、U-Boot

1、U-Boot的概念

U-Boot的全称是Universal BoodLoader,是一种通用的引导程序,属于BoodLoader的一种

Boot:初始化硬件平台,提供一个合适的环境
Loader:加载Linux内核

通用的地方

  • 多种处理器架构:U-Boot可以运行在:X86、ARM、MIPS、PowerPC等架构
  • 多种操作系统:U-Boot可以运行在:Linux、WinCE、安卓、等系统
  • 多种开发板:U-Boot可以运行在:Cortex A8、Cortex A53、Cortex A72等平台

Boot Loader的运行阶段:

(1)CPU的初始化:采用汇编语言,这部分是没有压缩过的,初始化CPU,eMMC、看门狗、Cache等,然后会解压第二部分的image(映像),然后拷贝到内存中

(2)板级的初始化:采用C语言设计,这部分代码是经过压缩的,初始化开发板的串口、LCD、网口等,然后回加载Linux内核

注意

  • 在整个Boot Loader期间,MMU(内存管理单元)都是没有被初始化的,所以CPU都是访问的物理地址

2、U-Boot的资源

U-Boot是开源的,可以在官网下载不同版本的源码,然后根据自己的硬件平台进行修改,并移植到硬件平台上
U-Boot官网:U-Boot官网

3、U-Boot的作用

(1)CPU的初始化:用汇编语言初始化Cache、时钟、看门狗、中断…

(2)板级的初始化:用C语言初始化串口、网卡、LCD…

(3)提供一些工具:进入U-Boot的控制台、提供U-Boot的命令…

(4)加载Linux内核

4、U-Boot的输出

在这里插入图片描述

5、U-Boot的命令

Uboot提供了一个控制台,在硬件平台通电后,Uboot会延时等待几秒钟(一般是3s),用户可以利用Uboot提供的命令操作。比如:烧写系统(fast boot、SD卡…)、设置环境变量。

这些操作都必须由Uboot提供的shell命令实现,shell指的是用户操作接口,shell的原理就是一个不断进行信息接收、解析、执行死循环

Uboot的控制台和Linux系统提供的终端都是采用行缓冲模式进行shell命令接收,也就是以回车键作为命令的结束但是不可以把Linux系统提供的shell命令在Uboot的控制台使用

虽然都是shell命令,但是Uboot和Linux系统采用的shell命令集是不同的,而且是不兼容的

  • 输出板级信息(bdi
    在这里插入图片描述

  • 输出环境变量(pri

  • 设置环境变量(set

  • 保存环境变量(save

  • 删除环境变量(set 变量名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/88916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DM8归档管理

开启归档 归档的格式: ARCH_NAME_DB_MAGIC[SEQNO]_日期时间.log ARCH_NAME 是在 dmarch.ini中配置的 LOCAL/REMOTE 归档名称 DB_MAGIC 是生成日志的数据库魔数 SEQNO 代表DSC 节点号,日期时间是归档日志文件的创建时间。 eg:ARCHIVE_LOCAL1_…

SpringMVC 学习(二)Hello SpringMVC

3. Hello SpringMVC (1) 新建 maven 模块 springmvc-02-hellomvc (2) 确认依赖的导入 (3) 配置 web.xml <!--web/WEB-INF/web.xml--> <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee…

Vue项目自动转换px为rem-高保真还原设计图

前端开发中还原设计图的重要性毋庸置疑&#xff0c;目前来说应用最多的应该也还是使用rem。然而很多人依然还是处于刀耕火种的时代&#xff0c;要么自己去计算rem值&#xff0c;要么依靠编辑器安装插件转换。 而本文的目标就是通过一系列的配置后&#xff0c;在开发中可以直接使…

redis部署与管理

目录 一、关系数据库与非关系型数据库&#xff1a; 1. 关系型数据库&#xff1a; 2.非关系型数据库&#xff1a; 二、关系型数据库和非关系型数据库区别&#xff1a; &#xff08;1&#xff09;数据存储方式不同&#xff1a; &#xff08;2&#xff09;扩展方式不同&#xf…

libpcap抓包编程范式

一、源码构建libpcap库 1. 下载源码 wget https://www.tcpdump.org/release/libpcap-1.10.4.tar.gz2. 解压 tar xf libpcap-1.10.4.tar.gz3. 编译 cd libpcap-1.10.4 ./configure --prefix/opt/libpcap-1.10.4 make sudo make install二、编程 1. 打开抓包口 pcap_t * pc…

数据结构与算法基础-(3)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

构造函数不能做为虚函数

引用&#xff1a;windows程序员面试指南 构造函数不能做为虚函数 从存储空间角度 虚函数对应一个虚函数表&#xff0c;这大家都知道&#xff0c;可是这个虚函数表其实是存储在对象的内存空间的。问题出来了&#xff0c;如果构造函数是虚的&#xff0c;就需要通过虚函数表来调…

洛谷P5661:公交换乘 ← CSP-J 2019 复赛第2题

【题目来源】https://www.luogu.com.cn/problem/P5661https://www.acwing.com/problem/content/1164/【题目描述】 著名旅游城市 B 市为了鼓励大家采用公共交通方式出行&#xff0c;推出了一种地铁换乘公交车的优惠方案&#xff1a; 1.在搭乘一次地铁后可以获得一张优惠票&…

C# Modbus 通讯

前言 Modbus通讯是最常用的硬件通讯协调&#xff0c;我PLC接触的不多。Modbus保证了简单又高效的数据传输。 Modbus协议简单介绍 Modbus简单介绍 Modbus Poll和Modbus Slave 软件下载&#xff1a;必须下载 NModbus 一般带N开头的都是.NET平台移植版本。比如NLog&#xff…

【计算机网络】DNS原理介绍

文章目录 DNS提供的服务DNS的工作机理DNS查询过程DNS缓存 DNS记录和报文DNS记录DNS报文针对DNS服务的攻击 DNS提供的服务 DNS&#xff0c;即域名系统(Domain Name System) 提供的服务 一种实现从主机名到IP地址转换的目录服务&#xff0c;为Internet上的用户应用程序以及其他…

Pycharm在进行debug时出现collecting data如何解决?

Pycharm在进行debug时变量界面出现collecting data&#xff0c;问题如下&#xff1a; 解决方法&#xff1a;打开Setting界面&#xff0c;在Python Debugger选项中勾选下图中的Gevent compatible即可。

初识ebpf

介绍eBPF技术 当代计算机系统中&#xff0c;性能、安全性和可观察性是至关重要的关键因素。为了应对这些挑战&#xff0c;Linux 内核引入了一种名为eBPF&#xff08;extended Berkeley Packet Filter&#xff09;的强大技术。eBPF 不仅仅是一种网络数据包过滤器&#xff0c;它…

笔记1-2:

一、磁荷与磁流的引入 麦克斯韦方程组&#xff1a; 引入磁荷和磁流的概念&#xff0c;上述方程可以写成对称形式&#xff1a; 磁荷和磁流实际上不存在&#xff0c;只具有某种等效意义&#xff0c;可以把某个区域中的电磁场看成是由一组等效磁型源所产生。 对于均匀和各向同性…

gpt扣款失败,openai扣款失败无法使用-如何解决gpt扣款失败的问题?

gpt扣款失败&#xff0c;openai扣款失败无法使用。毕竟你花了钱却无法使用你所期待的服务&#xff0c;这种情况确实令人不快。但是&#xff0c; 为什么gpt扣款失败&#xff1f; 可能是由于支付问题导致的扣款失败。这包括信用卡额度不足、支付信息错误等等。如果你的支付信息…

DolphinDB x 龙蜥社区,打造多样化的数据底座

近日&#xff0c;浙江智臾科技有限公司&#xff08;以下简称“DolphinDB”&#xff09;正式签署 CLA 贡献者许可协议&#xff0c;加入龙蜥社区&#xff08;OpenAnolis&#xff09;。 DolphinDB 主创团队从 2012 年开始投入研发产品。作为一款基于高性能时序数据库&#xff0c;D…

LeetCode 1194.锦标赛优胜者

数据准备 Create table If Not Exists Players (player_id int, group_id int); Create table If Not Exists Matches (match_id int, first_player int, second_player int, first_score int, second_score int); Truncate table Players; insert into Players (player_id, g…

9+铜死亡+缺氧+分型+单细胞+实验生信思路

今天给同学们分享一篇铜死亡缺氧分型实验的生信文章“Unraveling Colorectal Cancer and Pan-cancer Immune Heterogeneity and Synthetic Therapy Response Using Cuproptosis and Hypoxia Regulators by Multi-omic Analysis and Experimental Validation”&#xff0c;这篇文…

ElasticSearch深度分页解决方案

文章目录 概要ElasticSearch介绍es分页方法es分页性能对比表方案对比 From/Size参数深度分页问题Scroll#性能对比向前翻页 总结个人思考 概要 好久没更新文章了&#xff0c;最近研究了一下es的深分页解决方案。和大家分享一下&#xff0c;祝大家国庆节快乐。 ElasticSearch介…

WorkPlus Meet:高效私有音视频会议,助力多场景协作

在当今数字化时代&#xff0c;远程协作和在线教育需求不断增长&#xff0c;企业和教育机构需要可靠的音视频会议工具来满足各种场景的需求。WorkPlus Meet&#xff0c;作为一款私有化音视频会议软件&#xff0c;强大而多功能&#xff0c;为用户提供了流畅的百人会议、实时协作、…

firefox_dev_linux下载安装配置(部分系统自带包请看结尾)

download 从 Firefox 的官方网站下载 Firefox Developer Edition 的 tar 文件 firefox_dev_linux_download # 终端快速下载 wget https://download.mozilla.org/?productfirefox-devedition-latest-ssl&oslinux64&langen-US彻底删除自带原版 # apt系 sudo apt --pu…