BSP(Board Support Package),板级支持包

 BSP(Board Support Package),板级支持包,也称为硬件抽象层HAL或者中间层

一,转载: 关于驱动程序与BSP的区别_嵌入式Linux系统开发的博客-CSDN博客_bsp驱动

BSP即Board Support Package,板级支持包。它来源于嵌入式操作系统与硬件无关的设计思想,操作系统被设计为运行在虚拟的硬件平台上。对于具体的硬件平台,与硬件相关的代码都被封装在BSP中,由BSP向上提供虚拟的硬件平台,BSP与操作系统通过定义好的接口进行交互。BSP是所有与硬件相关的代码体的集合。

BSP在嵌入式系统中的角色,很相似于在PC系统中的BIOS和驱动程序的地位。

BSP就看成BIOS+驱动或者bootloader+驱动

BSP和驱动的区别:bsp还包括了bootloader,或者bsp是包含了cpu、电源管理这些比驱动更深层次的硬件支持包。

驱动的话,一般岗位要求你熟悉IIC、SPI等通信协议呀什么的,让你驱动某个外设,某个芯片。

1、BSP是一般是芯片原厂提供的,驱动是自己写的。

2、bsp是保证os启动前所作的必须工作,包括初始化工作,引导os启动起来,也包括一些用户的配置信息。 os启动后,可以认为bsp已经不再起作用了,os会调相应的驱动来重新初始化系统。驱动可以认为是os内核中的一部分。

3、 BSP是嵌入式系统中介于硬件平台和操作系统之间的中间层软件,主要目的是为了屏蔽底层硬件的多样性,根据操作系统的要求完成对硬件的直接操作,向操作系统提供底层硬件信息并最终启动操作系统。BSP具有硬件相关性和操作系统相关性的特点,其主要作用包括:
(1)初始化底层硬件,为操作系统提供底层硬件信息;
(2)初始化相关硬件设备,主要是存储设备、通信设备;
(3)检测系统硬件是否正常;
(4)加载操作系统并启动系统运行。

4、BSP(Board Support Package),板级支持包,也称为硬件抽象层HAL或者中间层。

它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。

BSP是相对于操作系统而言的,不同的操作系统有不同定义形式的BSP,要求BSP所实现的功能也有所不同。

在嵌入式Linux系统中,主要是初始化底层硬件并引导操作系统;同时,BSP又是和硬件相关的,还要考虑对硬件的初始化操作。这些初始化操作主要是对CPU、内存、中断等相关的寄存器及协处理器进行正确的配置。

在不同的开发阶段,因为核心和文件系统所处的位置不同,BSP所要完成的工 作也有所不同;在开发调试阶段,BSP要能够与主机通信并从主机下载核心;在目标产品中,BSP要能够从非易失存储设备中加载核心。

举例
BSP驱动开发岗位职责

岗位职责:

负责Linux内核与驱动程序的开发维护工作,包括:

1、为新的硬件平台开发bootloader和firmware;

2、为新的硬件设计、开发和测试设备驱动,并撰写文档;

3、编写、调试和测试设备驱动、各种协议栈(例如,USB,SATA,network,Wi-Fi,Streaming);

4、分析和解决在系统集成期间发现的问题;

5、优化Linux内核和驱动;

6、熟悉高通平台者优先

任职要求:

1、本科及以上学历,计算机科学或相关专业;

2、 2年以上LINUX驱动经验,熟悉嵌入式软件调试实时操作系统;拥有丰富的ASM/C/C++开发经验;熟悉ARM架构,ARM汇编,仿真器/ JTAG调试器;

3、熟悉LINUX和android体系架构者优先;

4、具备良好的职业素养和团队协作精神,较强的学习和沟通能力。
参考:(6条消息) BSP_我还不懂,所以在学-CSDN博客

二,转载: 【嵌入式系统】板级支持包BSP和硬件抽象层HAL的区别和关联_欢迎光临-CSDN博客

板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。在嵌入式系统软件的组成中,就有BSP。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改)。这样才能与上层OS保持正确的接口,良好的支持上层OS。

板级支持包BSP(Board Support Package)是外设、硬件的驱动软件集合。单独使用BSP即可在嵌入式系统上开发应用。BSP也可以按照规范编写为操作系统(VxWorks、Linux等)提供接口。

 

 

 

 

但是由于日益增长的芯片种类和芯片复杂度,每种芯片的外设寄存器地址和控制方式都各不一样,针对每种Board编写BSP工作量很大。一般公司例如ST会提供HAl库,用户可以忽略寄存器的繁杂操作,直接调用HAL库函数即可进行芯片内部外设操作,大大降低BSP软件的开发周期。加入HAL库之后的系统软件结构如下图所示:

 

 

 

 

引入HAL之后操作系统将会使用相对更为统一的HAL接口来实现对硬件的操作,而不是直接使用BSP库。

hardware --> hardware abstract layer --> board support package --> driver --> operating system --> application

当然嵌入式系统中操作系统并不是必须的,并且在操作系统和应用程序之间可以在有一层中间件Middleware层,用于提供更多的系统功能,这个中间件Middleware层也被称作SDK。

三,

SDK在基于BSP生成的。

  过程大概是:安装PB和相应的BSP,在BSP的基础之上建立工程,进行CE定制。

  定制完成后,先要编译成功,然后才能生成SDK。

 

 

posted @ 2024-01-02 16:53  papering  阅读(121)  评论(0编辑  收藏  举报