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.rhkb.cn/news/142697.html

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

相关文章

ElasticSearch - 基于 DSL 、JavaRestClient 实现数据聚合

目录 一、数据聚合 1.1、基本概念 1.1.1、聚合分类 1.1.2、特点 1.2、DSL 实现 Bucket 聚合 1.2.1、Bucket 聚合基础语法 1.2.2、Bucket 聚合结果排序 1.2.3、Bucket 聚合限定范围 1.3、DSL 实现 Metrics 聚合 1.4、基于 JavaRestClient 实现聚合 1.4.1、组装请求 1…

Tomcat多实例、负载均衡、动静分离

Tomcat多实例部署 安装jdk [rootlocalhost ~]#systemctl stop firewalld.service [rootlocalhost ~]#setenforce 0 [rootlocalhost ~]#cd /opt [rootlocalhost opt]#ls apache-tomcat-8.5.16.tar.gz jdk-8u91-linux-x64.tar.gz rh [rootlocalhost opt]#tar xf jdk-8u91-linu…

春招秋招,大学生求职容易遇到哪些问题?

每到毕业季就有大批大学生从校园出来,他们怀抱梦想,希望能做出一番成绩。但现实总归是残酷的,有些人找不到工作,有一些人频繁跳槽,也有一些人最终找到的工作与自己的专业没有一点关系,迷茫好几年才找到方向…

钡铼BL302与PLC:提升酿酒业效率与品质的利器

啤酒是人类非常古老的酒精饮料,是水和茶之后世界上消耗量排名第三的饮料。 啤酒在生产过程中主要有制造麦芽、粉碎原料、糖化、发酵、贮酒後熟、过滤、灌装包装等工序流程。需要用到风选机、筛分机、糖化锅、发酵设备、过滤机、灌装机、包装机等食品机械设备。这些食…

安全远程访问工具

什么是安全远程访问 安全远程访问是指一种 IT 安全策略,允许对企业网络、任务关键型系统或任何机密数据进行授权、受控访问。它使 IT 团队能够根据员工和第三方的角色和工作职责为其提供不同级别的访问权限,安全的远程访问方法可保护系统和应用程序&…

前缀和实例5(连续数组)

题目: 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。 示例 1: 输入: nums [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。 示例 2: 输入: nums [0,1,0] 输出: 2 说明: [0…

el-upload实现复制粘贴图片

前言: 在之前的项目中,利用el-upload实现了上传图片视频的预览。项目上线后,经使用人员反馈,上传图片、视频每次要先保存到本地然后再上传,很是浪费时间,公司客服人员时间又很紧迫(因为要响应下…

DAMO-YOLO训练KITTI数据集

1.KITTI数据集准备 DAMO-YOLO支持COCO格式的数据集,在训练KITTI之前,需要将KITTI的标注转换为KITTI格式。KITTI是采取逐个文件标注的方式确定的,即一张图片对应一个label文件。下面是KITTI 3D目标检测训练集的第一个标注文件:000…

JavaScript位运算的妙用

位运算的妙用: 奇偶数, 色值换算,换值, 编码等 位运算的基础知识: 操作数是32位整数自动转化为整数在二进制下进行运算 一.按位与& 判断奇偶数: 奇数: num & 1 1偶数: num & 1 0 基本知识: 用法:操作数1 & 操作数2规则:有 0 则为…

机柜PDU产品采购与安装指南——TOWE精选

机柜PDU指的是Power Distribution Unit,即电源分配单元。它是一种电子设备,通常用于为数据中心、服务器机房等设施中的计算机和其他设备提供电力,是各行业数据中心“标配”构成部分,以确保服务器等用电设备的安全和稳定运行。 数据…

查看Linux系统信息的常用命令

文章目录 1. 机器配置查看2. 常用分析工具3. 常用指令解读3.1 lscpu 4. 定位僵尸进程5. 参考 1. 机器配置查看 # 总核数物理CPU个数x每颗物理CPU的核数 # 总逻辑CPU数物理CPU个数x每颗物理CPU的核数x超线程数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| w…

[Linux]多线程编程

[Linux]多线程编程 文章目录 [Linux]多线程编程pthread_create函数pthread_join函数pthread_exit函数pthread_cancel函数pthread_self函数pthread_detach函数理解线程库和线程id Linux操作系统下,并没有真正意义上的线程,而是由进程中的轻量级进程&#…

在多台服务器上运行相同命令(二)、clush

介绍安装配置互信认证参数含义基本使用节点组拷贝文件 介绍 Clush(Cluster Shell)是一个用于管理和执行集群操作的工具,它允许你在多台远程主机上同时执行命令,以便批量管理服务器。Clush 提供了一种简单而强大的方式来管理大规模…

“押宝高手”乐视视频再出手,看中商业传奇剧《大盛魁》

作为最早开始版权采购的长视频平台,乐视视频一向擅长“押宝”优质内容。从《甄嬛传》到《白鹿原》等,乐视拿下了众多经典古装剧、年代剧的版权。 9月,乐视视频再次出手拿下的历史传奇剧《大盛魁》开始热播。该剧由王新民导演执导&#xff0c…

全渠道客服体验:Rocket.Chat 的无缝互动 | 开源日报 No.41

RocketChat/Rocket.Chat Stars: 36.9k License: NOASSERTION Rocket.Chat 是一个完全可定制的开源通信平台,适用于具有高标准数据保护要求的组织。我们是团队沟通场景下的最终免费开源解决方案,可以实现同事之间、公司之间或客户之间的实时对话。提高生…

SSM - Springboot - MyBatis-Plus 全栈体系(十三)

第三章 MyBatis 一、MyBatis 简介 1. 简介 MyBatis 最初是 Apache 的一个开源项目 iBatis, 2010 年 6 月这个项目由 Apache Software Foundation 迁移到了 Google Code。随着开发团队转投 Google Code 旗下, iBatis3.x 正式更名为 MyBatis。代码于 2013 年 11 月迁…

TS中class类的基本使用

想要创建对象,必须要先定义类,所谓的类可以理解为对象的模型,程序中可以根据类创建所指定类型的对象。 一、使用class关键字定义类 class 类名 { } // 使用class关键字来定义一个类 class Person{}// 使用new关键字创建一个对象 const per …

Pikachu靶场——SSRF 服务端请求伪造

文章目录 1 SSRF 服务端请求伪造1.1 SSRF(curl)1.1.1 漏洞防御 1.2 SSRF(file_get_content)1.2.1 漏洞防御1.2.3 SSRF 防御 1 SSRF 服务端请求伪造 SSRF(Server-Side Request Forgery:服务器端请求伪造) 其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能&a…

【红外与可见光图像融合】离散平稳小波变换域中基于离散余弦变换和局部空间频率的红外与视觉图像融合方法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Qwen-VL:多功能视觉语言模型,能理解、能定位、能阅读等

Overview 总览摘要1 引言2 方法2.1 模型结构2.2 输入输出 3 训练3.1 预训练3.2 多任务预训练3.3 监督finetune 4 评测4.1 图像文本描述和视觉问答4.2 面向文本的视觉问答4.3 指代表达理解4.4 视觉语言任务中的小样本学习4.4 现实用户行为下的指令遵循 5 相关工作6 总结与展望附…