嵌入式板支持包

Embedded Board Support Package

据我了解,BSP(板级支持包)包含引导加载程序、内核和设备驱动程序,可帮助 OS 在硬件上工作。但是我很困惑,因为 OS 也包含一个内核。那么OS中的内核和BSP中的内核有什么区别呢?

BSP 定义很宽泛。是针对特定板卡的配套软件包。微型微控制器的 BSP 可能只包含其外围设备的硬件驱动程序。另一方面,对于嵌入式 CPU 它可能包含硬件驱动程序、引导加载程序和 OS 内核等等。

所以 BSP(电路板支持包)中的内核只是已移植到您的电路板的 OS 内核的特定版本。

BSP 的组成取决于上下文;通常它是支持特定电路板设计的代码或库。这可能是电路板供应商提供的通用代码,用于裸机系统或与 OS 集成,或者它可能特定于特定 OS,甚至可能包括OS。在任何情况下,它都为更高级别的软件提供特定于电路板的支持。

内核与板无关(尽管通常是特定于处理器架构的),并且不能直接访问非其运行的处理器架构所固有的硬件。通常 OS 或应用程序需要 硬件抽象层 (HAL); HAL 很可能是使用 BSP 构建的,或者 BSP 实际上就是 HAL。供应商甚至可以打包 HAL 和 OS 并将其称为 BSP。

该术语对使用它的人意味着什么 - 上下文就是一切。例如,在 VxWorks 中,WindRiver 使用术语 BSP 来指代支持在特定硬件设计上执行基于 VxWorks 的应用程序的层。另一方面,电路板供应商可能会提供一个完整的 Linux 移植到电路板的分发版,并将其称为 BSP。

然而,特定供应商或开发人员选择支持板的程度和程度是板支持包,无论它包含多少或多少。

我可能只是在说同样的话。

您有一个芯片 and/or 电路板产品要卖给其他(软件)开发商。使用带有相关芯片的参考设计(电路板)。 BSP 是一个模糊的术语,意思是作为软件开发人员提供给您的软件,理想情况下让您的生活更轻松地使用该产品(芯片 and/or 板)并将您的软件添加到其中或为其开发。因此,如果它是 linux 或 rtos 或其他支持操作系统的平台,并且供应商(提供 bsp)认为用户需要一个操作系统和一个特定的操作系统,那么您不必将 os 移植到该目标,他们会为您完成。如果像 linux 这样的东西是开源的,那么你要么被告知要下载哪个 linux 源然后添加 bsp 制作的补丁 and/or bsp 包含整个的完整源事情已经修补。供应商认为必要的驱动程序、应用程序等。如果供应商认为有必要支持多个操作系统以吸引客户购买该 board/chip 产品。

您从他们那里获得的用于将 chip/board 融入您自己的产品的整个软件包就是 BSP。

您可以在板上 运行 的 vxWorks 内核包含 vxWorks 核心内核和 "other components" 可能会因一个环境而改变。 核心内核包含基本程序,如调度程序、内存管理器、基本文件系统、安全功能等。 这些 "other components" 作为 BSP 的一部分可能是可选的或可能因系统而异,并且有助于核心内核功能。

简单来说,图像显示了BSP的定义。如有错误请指正

我想说的是,对于结构良好的代码库,应用层应该由 HAL 层从较低层抽象出来。如果我们想将系统迁移到新板,这将允许应用程序层是可移植的。如果您看到您的应用程序层中有 board/CPU 个特定逻辑,您就知道您已经破坏了可移植性。 HAL 层函数的主体应包含特定于电路板的代码,这是 BSP 层代码发挥作用的地方。当我们要将系统移植到新板时,代码更改应该发生在HAL函数体中,而HAL函数的声明不应该改变,这导致app层保持不变。