BSP即Board Support Package,板级支持包。
它来源于嵌入式操做系统与硬件无关的设计思想,操做系统被设计为运行在虚拟的硬件平台上。
对于具体的硬件平台,与硬件相关的代码都被封装在BSP中,由BSP向上提供虚拟的硬件平台,BSP与操做系统经过定义好的接口进行交互。
BSP是全部与硬件相关的代码体的集合。模块化
一个成熟的商用操做系统,其被普遍应用的必要条件之一就是可以支持众多的硬件平台,并实现应用程序的硬件无关性。操作系统
通常来讲,这种无关性都是由操做系统实现的。
可是对于嵌入式系统来讲,它没有像PC机那样具备普遍使用的各类工业标准、统一的硬件结构。
各类嵌入式系统各不一样的应用需求就决定了它通常都选用各自定制的硬件环境,每种嵌入式系统从核心的处理器到外部芯片在硬件结构上都有很大的不一样。
这种诸多变化的硬件环境就决定了没法彻底由操做系统来实现上层软件与底层硬件之间的无关性。设计
所以各类商用实时操做系统,都采用了分层设计的方法,它将系统中与硬件直接相关的一层软件独立出来,称之为Board Support Package,简称为BSP。
顾名思义,BSP是针对某个特定的单板而设计的。若是没有单板支持软件包,则操做系统就不能在单板上运行。
而且它对于用户(指开发者)也是开放的,用户能够根据不一样的硬件需求对其做改动或二次开发。
BSP在嵌入式系统中的角色,很类似于在PC系统中的BIOS和驱动程序的地位。调试
BSP的具体结构和组成根据不一样的嵌入式操做系统而不一样。BSP的开发要求设计人员具有软硬件方面的综合知识。code
BSP软件与其余软件的最大区别在于BSP软件有一整套模板和格式,开发人员必须严格遵照,不容许任意发挥。
在BSP软件中,绝大部分文件的文件名和所要完成的功能都是固定的。
因此,BSP软件的开发通常来讲都是在一个基本成型的BSP软件上进行修改,以适应不一样单板的需求.
针对某类CPU的硬件单板,嵌入式操做系统(如vxWorks)一般提供有其DEMO板的BSP, 这些程序位于指定的目录之下。也就是咱们所说的最小系统BSP。
通常来讲,咱们在硬件系统设计好以后,都会先找到一个与本身系统相近 的DEMO板BSP(最起码是使用相同的CPU)。并以此为基础,开发本身单板的BSP。接口
为软件操做系统正常运行提供最基本、最原始的硬件操做的软件模块,它和操做系统息息相关,但又不属于操做系统的一部分。BSP能够分为三大部分:内存
1:系统上电时的硬件初始化。 2:为操做系统访问硬件驱动程序提供支持。 3:集成硬件相关和硬件无关的操做系统所需的软件模块。
BSP向上层提供的接口有:ci
与操做系统内核的接口(如报告DRAM大小、修改中断屏蔽级别等) 与操做系统的I/O系统的接口 与应用程序的接口
广义上讲,单板中全部须要CPU控制的硬件的程序,都属于单板BSP,可是,为了调试方便和软件的模块化,咱们一般就将与此单板最小系统相关的程序简称为BSP,而将其余程序称为驱动程序。
对于嵌入式系统来讲,所谓最小系统就是一个包含:CPU, Bootrom, RAM,系统时钟,网口,串口的计算机运行环境。
这样,最小系统BSP就包含了CPU系统的初始化程序以及网口,串口,系统时钟等设备的驱动程序。开发
BSP的主要功能在于配置系统硬件使其工做于正常的状态,完成硬件与软件之间的数据交互,为OS及上层应用程序提供一个与硬件无关的软件平台。所以从执行角度来讲,其能够分为两大部分:
1. 目标板启动时的硬件初始化及多任务环境的初始化
2. 目标板上控制各个硬件设备正常运行的设备驱动程序,由它来完成硬件与软件之间的信息交互模板
一般咱们认为BSP是为OS服务的, 但实际上, BSP软件包中的部分程序对OS也并非必须的,从这个角度,又能够将BSP划分为两部分:
1. 最小系统BSP,即咱们一般所称的BSP 2. 设备驱动程序
特色: 保证处理的实时性、减小CPU的消耗
中断的处理流程: 中断处理程序首先切换到中断堆栈,保存程序计数器和寄存器等中断现场状态,而后对中断进行处理,中断处理过程当中必需要及时清除中断源,最后要恢复中断前的程序计数器和寄存器等现场状态,由中断处理程序返回。
中断的限制
BSP与单板密切相关,要开发BSP就要了解单板的硬件组成,单板通常由CPU最小系统和一些外围硬件设备构成.
CPU最小系统:
CPU、内存、内存控制器、调试串口、调试网口、系统时钟、桥片、外围芯片(包括)、实时时钟、定时器、FPGA、部分嵌入式系统也包括软硬盘控制器、显卡、键盘。
不一样单板使用不一样的专用设备芯片: DMA控制器、E1传输芯片、光接口芯片、时隙交换、FLASH、host/pci桥片 pci/pci桥片、以太网口芯片(如intel的8255九、realtek的8139)、以太网口交换芯片(BCM5616)、CSM5000、CSM5500、看门狗、专用FPGA逻辑等等。