嵌入式:BSP的理解

news2025/1/18 3:25:35

BSP概念总结

  • BSP定义
  • BSP的特点
  • BSP的主要工作
  • BSP在嵌入式系统和Windowsx系统中的不同
  • BSP和PC机主板上的BIOS区别
  • BSP与 HAL关系

嵌入式计算机系统主要由 硬件层,中间层,系统软件层和应用软件层四层组成。

  1. 硬件层:包含CPU,存储器(SDRAM,ROM,Flash等),通用设备接口和I/O接口(A/D、D/A、I/O),其中操作系统和应用程序都可以固话在ROM中。
  2. 中间层:硬件层与软件层之间称为中间层,可以称为硬件抽象层(Hardware Abstract Layer , HAL)或板级支持包BSP(Board Support Package)
  3. 系统软件层:系统软件层由操作系统(RTOS,Linux,VxWindows),文件系统,网络系统及通用组件模块组成。
  4. 应用软件层:应用软件层是由操作系统开发的应用软件程序组成,用来实现某种功能或者业务。

BSP定义

硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer HAL)或板级支持包(Board Support Package BSP) ,它将系统上层与底层硬件分类开来,使系统的底层驱动程序与硬件无关,上次软件开发人员无需关心底层硬件的具体情况,根据BSP层体用的接口即可进行开发,该层一般包含相关底层硬件的初始化,数据的输入,输出操作和硬件的配置功能。

应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。

BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP。
🚀🚀🚀如下图所示 BSP定义。
在这里插入图片描述

BSP的特点

  • 硬件相关性 : 因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间的接口,BSP需要为操作系统提供操作和控制具体硬件的方法。
  • 操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式,实际上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。

BSP的主要工作

设计一个完整的BSP需要完成两部分工作,嵌入式系统的硬件初始化以及设计硬件相关的设备驱动程序。

🚀1. 嵌入式系统硬件初始化
从硬件到权健的次序,可以将硬件初始化分为3个部分,分别为片级初始化,板级初始化和系统级初始化。

片级初始化:主要工作是完成嵌入式微处理的初始化,即 RAM,PowerPC等CPU初始化工作,包括设置 微处理的核心寄存器和控制寄存器,微处理器核心工作模式和微处理的局部总线模式等。片级初始化把微处理器从上电时的默认状态逐步设置成系统所要求的工作状态,这是一个纯一年的初始化过程。
板级初始化: 主要工作是完成嵌入式微处理器以外的其他硬件设备的初始化,即外围电路的初始化,另外,还需设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件好软件环境,这是一个同时包含软硬件两部分在内的初始化过程。
系统级初始化:主要工作是进行操作系统的初始化,BSP将对嵌入式微处理的控制权转交给嵌入式操作系统,由操作系统完成余下的初始化操作,包含加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,如:网络系统,文件系统等。最后,操作系统创建应用程序环境,并见控制权交给应用程序的入口。

🚀 2. 设计硬件相关的设备驱动程序
BSP的另一个主要功能是硬件相关的设备驱动,硬件相关的设备驱动程序的初始化通常是一个从 高到低的过程,尽管BSP中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由于 BSP使用,而是在系统初始化过程中由BSP将他们与操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作,与硬件相关的驱动程序 是BSP设计与开发中另一个非常重要的环节
在这里插入图片描述

BSP在嵌入式系统和Windowsx系统中的不同

🚀在日常生活使用的PC机上(WIndows或Linux)也是有 BSP的,只是PC机均采用的 CPU架构为统一的 x86体系架构,因此操作系统的 BSP相对于 x86架构是单一确定的,不需要做任何修改就可以很统支持操作系统在 x86上正常运行,所以在PC机上谈论 x86这个概念就显得没什么意思了。
🚀 但是在嵌入式系统则完全不同,目前市场上存在多种架构的嵌入式 CPU(ARM,MIPS,RISC-V等),同时外围设备也会根据需求有不同的选择和定义,一个嵌入式操作系统针对不同的CPU,就会有不同的 BSP,即使用一种CPU,由于外设的差异,其BSP也会部分不一样,所以根据硬件设计编写和修改BSP,保证系统正常的运行工作是非常重要的。

BSP和PC机主板上的BIOS区别

🚀BSP和PC机主板上的BIOS区别很大,BIOS主要是负责在电脑开启时检测,初始化系统设备(设置栈指针,中断分配,内存初始化等),装入操作系统并调度操作系统向硬件发出的指令,它的 Firmware代码是在芯片生成过程中固话的,一般来说用户是无法修改的,其实就是为下载运行操作系统做的准备,把操作系统由硬盘加载到内存中,并传递一些硬件接口设置给系统。
🚀 在操作系统运行正常后,BIOS的作用基本上也就完成了,这就是为什么更改BIOS一定要关机重启。PC机BIOS的作用更像嵌入式系统中的 Bootloader(最底层的引导软件,初始化主板的基本设置,为接收外部程序做硬件上的准备),与Bootloader 不同的是 BIOS在装载 OS系统的同时,还传递一些参数设置(中断端口定义等),而 Bootloader 只是简单的装载系统。
🚀 BSP和操作系统绑在一起运行在主板上,尽管BSP的开始部分和 BIOS所做的工作类似,可是大部分和BIOS不同,作用也完全不同,此外BSP还包含和系统有关的基本驱动(串口,网口等),此外程序员还可以编程修改 BSP, 在BSP中任意添加一些和系统无关的驱动或者程序,慎重可以把上次开发的软件放到 BSP中,而 BIOS程序用户是不能修改的。

BSP与 HAL关系

硬件的变动将会对 BSP造成大规模的改动,这无疑对 BSP的维护是一种巨大的负担。
🚀 引入HAL(硬件抽象层)的概念,由HAL库 对BSP库进一步的封装,形成统一的标准,而下次再改动硬件电路部分时,只需要改动 BSP库的具体功能函数,而不需要对上层进行任何的修改。
在这里插入图片描述

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

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

相关文章

(数字图像处理MATLAB+Python)第四章图像正交变换-第一节:离散傅里叶变换

文章目录一:一维离散傅里叶变换(1)定义(2)实例二:一维快速傅里叶变换(1)定义(2)实例三:二维离散傅里叶变换(1)定义&#x…

SpringCloud微服务技术栈.黑马跟学(十二)

SpringCloud微服务技术栈.黑马跟学 十二今日目标服务异步通信-高级篇1.消息可靠性1.1.生产者消息确认1.1.1.修改配置1.1.2.定义Return回调1.1.3.定义ConfirmCallback1.2.消息持久化1.2.1.交换机持久化1.2.2.队列持久化1.2.3.消息持久化1.3.消费者消息确认1.3.1.演示none模式1.3…

Flutter TextField UI 实例 —— 新手礼包

大家好,我是17。 新手礼包一共 3 篇文章,每篇都是描述尽量详细,实例讲解,包会! Flutter Row 实例 —— 新手礼包Flutter TextField UI 实例 —— 新手礼包Flutter TextField 交互实例 —— 新手礼包 本篇介绍了 Tex…

机器学习:基于逻辑回归对超市销售活动预测分析

系列文章目录 作者:i阿极 作者简介:Python领域新星作者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒关注哦!&a…

linxu学习之进程

文章目录进程程序和进程产生进程销毁进程多进程高并发设计孤儿僵尸守护进程孤儿进程:守护进程(重点)僵尸进程:进程 程序和进程 操作系统可以运行多个程序,那他是如何运行的?实际上,CPU的执行是很快的,而待…

《随便测测》WEB接口测试平台

编写用例的船新版本,从未有过的顺滑体验背景在保证用例运行稳定、高效、准确的前提下以降低测试人员编写用例的时间为目的,减少编写用例的复杂度,达到提升效率的目的。解决问题因被测系统业务流程长,接口多(多的一个场…

【ssl认证、证书】SSL 证书基本概念、证书格式、openssl和keytool的区别

文章目录1. keytool VS openssl2. X.509 VS PKCS2.1 PKCS2.2 X.5092.2.1 证书编码格式2.2.1.1 DER 证书编码格式二进制2.2.1.2 文本格式 pem2.2.2 文件后缀名3. 常见Web服务软件及证书格式参考相关文章://-----------Java SSL begin----------------------【ssl认证…

【云原生】k8s集群命令行工具kubectl之集群管理命令

kubectl集群管理命令详解一、准备工作1.1、Replication Controller1.2、Deployment1.3、DaemonSet1.4、查看创建的svc和pod1.5、kubectl 命令自动补全设置二、集群管理命令2.1、top2.2、cordon2.3、uncordon2.4、drain2.5、taint2.5.1、污点设置。2.5.2、容忍度使用一、准备工作…

Scala之函数式编程

目录 函数和方法的区别: 参数默认值: 函数至简原则---能省则省: 至简原则细节 匿名函数的化简: 匿名函数至简原则: 高阶函数: 高阶函数的三种用法: (1)函数可以作…

【K8S系列】深入解析Pod对象(二)

目录 序言 1.Volume 简单介绍 2 Projected Volume 介绍 2.1 Secret 2.1.1 yaml讲解 2.1.2 创建Pod 2.2 Downward API 2.2.1 yaml示例 2.2.2 Downward API 支持字段 3 投票 序言 任何一件事情,只要坚持六个月以上,你都可以看到质的飞跃。 在…

SqlServer实用系统视图,你了解多少?

SqlServer实用系统视图,你了解多少?前言master..spt_valuessysdatabasessysprocesses一套组合拳sysobjectssys.all_objectssyscolumnssystypessyscommentssysindexes结束语前言 在使用任何数据库软件的时候,该软件都会提供一些可能不是那么公…

小规模容器编排使用Docker Swarm不香么,用个锤子的kubernetes

文章目录一、Docker Swarm是什么?二、Swarmkit和Swarm Mode是什么?三、Docker Swarm的核心设计四、Docker Swarm安装部署4.1、初始化Swarm节点14.2、新节点加入Swarm集群4.3、使用swarm部署服务4.4、swarm集群管理一、Docker Swarm是什么? D…

“QT 快速上手指南“ 之 计算器(二)组件,坐标,窗口

文章目录前言一、QT 基本组件用法介绍:1. QLabel :2. QPushButton :3. QLineEdit:二、坐标系统三、窗口部件的大小设置1. setSize( ) 函数:2. resize( )函数:3. setFixedSize( )函数:4. setFixedWidth( ) 和 setFixedHeight( )函数…

标准化归一化方法

一、经典机器学习的归一化算法 分别是0-1标准化(Max-Min Normalization)和Z-Score标准化。 1.1 0-1标准化方法 每一列中的元素减去当前列的最小值,再除以该列的极差。 不过在深度学习领域,我们更希望输入模型的数据是Zero-Ce…

使用Serv-U搭建FTP服务器并公网访问【内网穿透】

文章目录1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置4. 公网访问测试5. 结语1. 前言 科技日益发展的今天,移动电子设备似乎成了我们生活的主角,智能手机…

这些IT行业趋势,将改变2023

上一周,你被"AI"刷屏了吗? 打开任何一家科技媒体,人工智能都是不变的热门话题。周初大家还在用ChatGPT写论文、查资料、写代码,到周末的时候大家已经开始用GPT-4图像识别来做饭、Microsoft 365 Copilot 来写PPT了。 GP…

【周末闲谈】AI的旅途

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录系列目录前言AIAI的开端第一个AI程序AI的寒冬关于AI的思考末尾前言…

憨批的语义分割重制版11——Keras 搭建自己的HRNetV2语义分割平台

憨批的语义分割重制版11——Keras 搭建自己的HRNetV2语义分割平台学习前言什么是HRNetV2模型代码下载HRNetV2实现思路一、预测部分1、主干网络介绍a、Section-1b、Section-2c、Section-3d、Section-42、特征整合部分3、利用特征获得预测结果二、训练部分1、训练文件详解2、LOSS…

【Python童年游戏】满满的回忆杀—那些年玩过的童年游戏你还记得吗?那个才是你的菜?看到第一个我就泪奔了(致我们逝去的青春)

导语 滴一一学生卡🙌 结伴上车的学生仔子们 用笑声打破车厢的沉默 大人眼里的晚高峰 是给放学后快乐😀时光的加时 下车的学生匆匆起身带起 一阵熟悉的栀子香于💓 是关于校园的记忆 开始零零散散地闪现 放学后集合的秘密基地/跟着城…

Half-UNet:用于医学图像分割的简化U-Net架构

Half-UNet简化了编码器和解码器,还使用了Ghost模块(GhostNet)。并重新设计的体系结构,把通道数进行统一。 论文动机 编码器的不同类型的架构图,编码器(A-C)的结构分别来源于U-Net的编码器、解码器和全的Unet结构。 下面是上图的一些结果指标…