当前位置: 首页 > news >正文

嵌入式:BSP的理解

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库的具体功能函数,而不需要对上层进行任何的修改。
在这里插入图片描述

相关文章:

嵌入式:BSP的理解

BSP概念总结BSP定义BSP的特点BSP的主要工作BSP在嵌入式系统和Windowsx系统中的不同BSP和PC机主板上的BIOS区别BSP与 HAL关系嵌入式计算机系统主要由 硬件层,中间层,系统软件层和应用软件层四层组成。硬件层:包含CPU,存储器(SDRAM&…...

Linux主机Tcpdump使用-centos实例

1、安装前系统信息 ifconfig查看系统网络接口情况。这里可以看到3个interface,ens160是正常使用的网口,lo是主机的loopback地址127.0.0.1。另外,由于centos安装在虚拟主机上,virbr0是KVM默认创建的一个Bridge,其作用是为连接其上的…...

线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列

AcWing 898. 数字三角形 1.题目 898. 数字三角形 2.思路 DP问题首先考虑状态转移方程,定义一个集合f ( i , j) ,表示从第一个数字(1,1)走到第 i行,第 j列(i , j)的所有方案的集合&#xff0c…...

SpringMVC

SpringMVC配置 引入Maven依赖 &#xff08;springmvc&#xff09;web.xml配置DispatcherServlet配置 applicationContext 的 MVC 标记开发Controller控制器 几点注意事项&#xff1a; 在web.xml中 配置<load-on-startup> 0 </load-on-startup> 会自动创建Spring…...

C++模板基础(二)

函数模板&#xff08;二&#xff09; ● 模板实参的类型推导 – 如果函数模板在实例化时没有显式指定模板实参&#xff0c;那么系统会尝试进行推导 template<typename T> void fun(T input, T input2) {std::cout << input << \t << input2 << …...

什么是linux内核态、用户态?

目录标题为什么需要区分内核空间与用户空间内核态与用户态如何从用户空间进入内核空间整体结构为什么需要区分内核空间与用户空间 在 CPU 的所有指令中&#xff0c;有些指令是非常危险的&#xff0c;如果错用&#xff0c;将导致系统崩溃&#xff0c;比如清内存、设置时钟等。如…...

day8—选择题

文章目录1.Test.main() 函数执行后的输出是&#xff08;D&#xff09;2. JUnit主要用来完成什么&#xff08;D&#xff09;3.下列选项中关于Java中super关键字的说法正确的是&#xff08;A&#xff09;1.Test.main() 函数执行后的输出是&#xff08;D&#xff09; public clas…...

ngx错误日志error_log配置

ngx之error_log 日志配置格式&#xff1a; 常见的错误日志级别 错误日志可配置位置 关闭error_log配置 设置debug 日志级别的前提&#xff1a; ngx之error_log 日志配置格式&#xff1a; error_log 存放路径 日志级别 例&#xff1a; error_log /usr/local/log…...

1.11、自动化

自动化 一、java 手机自动化 首先new DesertCapabilities&#xff08;这是一个类&#xff09; setCapability – 设置信息 获取appium的驱动对象 new AppiumDriver – 本机IP地址:端口号/wd/hub,前面的设置值信息 driver.findElementById() – 通过id找位置 click() – 点击 &…...

函数的定义与使用及七段数码管绘制

函数的定义 函数是一段代码的表示 函数是一段具有特定功能的、可重用的语句组 函数是一种功能的抽象&#xff0c;一般函数表达特定功能 两个作用&#xff1a;降低编程难度 和 代码复用 求一个阶乘 fact就是 函数名 n就是参数 return就是输出部分即返回值 而函数的调用就是…...

怎么压缩pdf文件大小?pdf文件太大如何压缩?

喜爱看小说的小伙伴们都会在网上下载很多的pdf格式电子书以方便随时阅览&#xff0c;但是pdf的电子书一般都过于的冗长&#xff0c;下载后的储存也是一个问题&#xff0c;怎么pdf压缩大小呢&#xff1f;可以试试今天介绍的这款pdf在线压缩工具来进行pdf压缩&#xff08;https:/…...

阿里云Linux服务器登录名ecs-user和root选择问题

阿里云服务器Linux系统登录名可以选择root或ecs-user&#xff0c;root具有操作系统的最高权限&#xff0c;但是root会导致的安全风险比较大&#xff0c;ecs-user比较安全&#xff0c;但是如果系统后续依赖root权限就会比较麻烦&#xff0c;从安全的角度&#xff0c;建议选择ecs…...

【云原生】 初体验阿里云Serverless应用引擎SAE(三),挂载配置文件使应用的配置和运行的镜像解耦

目录 一、前言二、SAE配置1、创建配置项2、配置SAE Nginx服务效果1、【云原生】 初体验阿里云Serverless应用引擎SAE(一),部署Nginx服务 2、【云原生】 初体验阿里云Serverless应用引擎SAE(二),前端Nginx静态文件持久化到对象存储OSS 本篇 3、【云原生】 初体验阿里云Se…...

Oracle用户密码过期,修改永不过期

修改密码有效过期时间&#xff0c;可以通过以下四步设置&#xff0c;如果再第一步发现本身的密码过期时间为无限期的&#xff0c;那就请各位小伙伴绕过&#xff0c;如果发现不是无期限的&#xff0c;那么必须设置第四步&#xff0c;才会生效。 目录 第一步&#xff1a;查询密码…...

welearn 视听说1-4

词汇题&#xff08;55道&#xff09; 1. You should carefully think over_____ the manager said at the meeting. A. that B. which C. what D. whose 1.选C,考察宾语从句连接词&#xff0c;主句谓语动词think over后面缺宾语&#xff0c;后面的宾语从句谓语动…...

【git】将本地项目同步到远程

前提&#xff1a;git已经安装&#xff0c;并与账号完成密钥绑定 在github上创建一个新仓库 在项目文件夹下&#xff0c;右击选择git bash here &#xff0c;打开一个终端对话框 git init (在项目目录下出现隐藏的.git文件夹&#xff0c;目的是把该项目文件夹变成git可管理…...

10-链表练习-LeetCode82删除排序链表中的重复元素II

题目 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5] 示例 2&#xff1a; 输入&#xff1a;head …...

贯穿设计模式第五话--接口隔离原则

&#x1f973;&#x1f973;&#x1f973; 茫茫人海千千万万&#xff0c;感谢这一刻你看到了我的文章&#xff0c;感谢观赏&#xff0c;大家好呀&#xff0c;我是最爱吃鱼罐头&#xff0c;大家可以叫鱼罐头呦~&#x1f973;&#x1f973;&#x1f973; 从今天开始&#xff0c;将…...

C语言计算机二级/C语言期末考试 刷题(四)

在空闲时间整理了一些C语言计算机二级和C语言期末考试题库 整理不易&#xff0c;大家点赞收藏支持一下 祝大家计算机二级和期末考试都高分过 系列文章&#xff1a; C语言计算机二级/C语言期末考试 刷题&#xff08;一&#xff09; C语言计算机二级/C语言期末考试 刷题&#x…...

JDK8中Stream接口的常用方法

参考答案 Stream 接口中的方法分为中间操作和终端操作&#xff0c;具体如下。 中间操作&#xff1a; filter&#xff1a;过滤元素map&#xff1a;映射&#xff0c;将元素转换成其他形式或提取信息flatMap&#xff1a;扁平化流映射limit&#xff1a;截断流&#xff0c;使其元…...

医疗AI数据偏见:从耳镜图像分类看模型泛化陷阱与实战避坑指南

1. 项目概述与核心挑战作为一名在医疗AI领域摸爬滚打了十多年的从业者&#xff0c;我见过太多“实验室里天花乱坠&#xff0c;临床上寸步难行”的模型。最近&#xff0c;我和团队深入剖析了一项关于利用人工智能&#xff08;AI&#xff09;进行中耳炎耳镜图像分类的研究&#x…...

惠普OMEN游戏本性能优化终极指南:如何用开源工具彻底释放硬件潜力

惠普OMEN游戏本性能优化终极指南&#xff1a;如何用开源工具彻底释放硬件潜力 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为惠普OMEN游戏本官方软…...

PortAudio性能测试与调优:如何实现最低延迟音频处理的完整指南

PortAudio性能测试与调优&#xff1a;如何实现最低延迟音频处理的完整指南 【免费下载链接】portaudio PortAudio is a cross-platform, open-source C language library for real-time audio input and output. 项目地址: https://gitcode.com/gh_mirrors/po/portaudio …...

OpenManus-RL:基于强化学习优化大语言模型智能体决策的完整框架

1. 项目概述与核心价值如果你正在关注大语言模型智能体领域&#xff0c;尤其是如何让模型从“会聊天”进化到“会做事”&#xff0c;那么OpenManus-RL这个项目绝对值得你投入时间研究。它不是一个简单的工具库&#xff0c;而是一个由UIUC-Ulab和MetaGPT团队联合发起的、以直播形…...

Photoshop AVIF插件实战:解锁下一代图像格式的完整解决方案

Photoshop AVIF插件实战&#xff1a;解锁下一代图像格式的完整解决方案 【免费下载链接】avif-format An AV1 Image (AVIF) file format plug-in for Adobe Photoshop 项目地址: https://gitcode.com/gh_mirrors/avi/avif-format 为Adobe Photoshop添加AVIF格式支持不再…...

如何解决Funannotate数据库安装失败:从403错误到完整部署的实战指南

如何解决Funannotate数据库安装失败&#xff1a;从403错误到完整部署的实战指南 【免费下载链接】funannotate Eukaryotic Genome Annotation Pipeline 项目地址: https://gitcode.com/gh_mirrors/fu/funannotate Funannotate是真核基因组注释的强大工具&#xff0c;但在…...

taotoken控制台提供的api调用审计与用量分析功能体验

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 taotoken控制台提供的api调用审计与用量分析功能体验 对于需要统一管理多个大模型API调用的团队而言&#xff0c;清晰掌握调用情况…...

工作进度管理工具有哪些?8款项目协作平台测评分享

本文将深入对比8款工作任务进度管理软件&#xff1a;Worktile、PingCode、Jira Confluence、Asana、monday.com、ClickUp、Trello、Microsoft Planner / Project。一、工作任务进度管理软件怎么选很多企业刚开始选任务管理软件时&#xff0c;容易只看两个点&#xff1a;能不能…...

利用taotoken模型广场为ai应用快速进行模型选型与测试

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken模型广场为AI应用快速进行模型选型与测试 在构建一个需要集成多种AI能力的应用时&#xff0c;开发者面临的首要挑战往…...

4. 打破ASR技术瓶颈:Whisper-1模型原理、性能与落地实践

1. 引言 语音识别&#xff08;Automatic Speech Recognition, ASR&#xff09;是人工智能领域的核心技术方向之一&#xff0c;其历史可追溯至20世纪50年代贝尔实验室的Audrey系统——这一仅能识别10个英文数字的早期系统&#xff0c;标志着机器理解人类语音的开端。此后半个多…...