BSP

时间:2019-04-11
本文章向大家介绍BSP,主要包括BSP使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

BSP简介

    嵌入式系统由硬件环境、嵌入式操作系统和应用程序组成,硬件环境是操作系统和应用程序运行的硬件平台,它随应用的不同而有不同的要求。硬件平台的多样性是嵌入式系统的主要特点,如何使嵌入式操作系统在不同的硬件平台上有效地运行,是嵌入式系统开发中需要解决的关键问题。解决的方法是在硬件平台和操作系统之间提供硬件相关层来屏蔽这些硬件的差异,给操作系统提供统一的运行环境,硬件相关层就是嵌入式系统中的板级支持包 BSP(Board Support Package,简称BSP)。

        BSP是嵌入式系统中介于硬件平台和操作系统之间的中间层软件,主要目的是为了屏蔽底层硬件的多样性,根据操作系统的要求完成对硬件的直接操作,向操作系统提供底层硬件信息并最终启动操作系统。BSP具有硬件相关性和操作系统相关性的特点,BSP主要功能为屏蔽硬件,提供操作系统及硬件驱动具体功能包括:

A、单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持

B、为操作系统提供设备驱动程序和系统中断服务程序

C、定制操作系统的功能,为软件系统提供一个实时多任务的运行环境

D、初始化操作系统,为操作系统的正常运行做好准备

        BSP是相对于操作系统而言的,不同的操作系统有不同定义形式的BSP,要求BSP所实现的功能也有所不同。在嵌入式Linux系统中,主要是初始化底层硬件并引导操作系统;同时,BSP又是和硬件相关的,还要考虑对硬件的初始化操作。这些初始化操作主要是对CPU、内存、中断等相关的寄存器及协处理器进行正确的配置。在不同的开发阶段,因为核心和文件系统所处的位置不同,BSP所要完成的工 作也有所不同;在开发调试阶段,BSP要能够与主机通信并从主机下载核心;在目标产品中,BSP要能够从非易失存储设备中加载核心。

    对于开发板提供商来说,BSP就是开发板的生产商提供的一个资料和资源包。
通常包括:

    硬件相关: 
    A、开发板原理图 
    B、开发板元件列表 
    C、接口定义 
    D、地址分布

    软件相关: 

    A、某些操作系统的bootloader及源代码 
    B、某些操作系统裁剪好的映像文件(如linux系列可能有源码,如WinCE可能有CEC文件)

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

一个成熟的商用操作系统,其被广泛应用的必要条件之一就是能够支持众多的硬件平台,并实现应用程序的硬件无关性。一般来说,这种无关性都是由操作系统实现的

 

但对于嵌入式系统来说,它没有像PC机那样具有广泛使用的各种工业标准、统一的硬件结构。各种嵌入式系统各不同的应用需求就决定了它一般都选用各自定制的硬件环境,每种嵌入式系统从核心的处理器到外部芯片在硬件结构上都有很大的不同。这种诸多变化的硬件环境就决定了无法完全由操作系统来实现上层软件与底层硬件之间的无关性。

 

因此各种商用实时操作系统,都采用了分层设计的方法,它将系统中与硬件直接相关的一层软件独立出来,称之为Board Support Package,简称为BSP。顾名思义,BSP是针对某个特定的单板而设计的。如果没有单板支持软件包,则操作系统就不能在单板上运行。并且它对于用户(指开发者)也是开放的,用户可以根据不同的硬件需求对其作改动或二次开发。 BSP在嵌入式系统中的角色,很相似于在PC系统中的BIOS和驱动程序的地位

BSP的具体结构和组成根据不同的嵌入式操作系统而不同。BSP的开发要求设计人员具备软硬件方面的综合知识。

BSP软件与其他软件的最大区别在于BSP软件有一整套模板和格式,开发人员必须严格遵守,不允许任意发挥。在BSP软件中,绝大部分文件的文件名和所要完成的功能都是固定的。所以,BSP软件的开发一般来说都是在一个基本成型的BSP软件上进行修改,以适应不同单板的需求。 针对某类CPU的硬件单板,嵌入式操作系统(如vxWorks)通常提供有其DEMO板的BSP, 这些程序位于指定的目录之下。也就是我们所说的最小系统BSP。一般来说,我们在硬件系统设计好之后,都会先找到一个与自己系统相近的DEMO板BSP(最起码是使用相同的CPU)。并以此为基础,开发自己单板的BSP。

Ø定义

BSP就是为软件操作系统正常运行提供最基本、最原始的硬件操作的软件模块,它和操作系统息息相关,但又不属于操作系统的一部分。BSP可以分为三大部分:

1:系统上电时的硬件初始化。

2:为操作系统访问硬件驱动程序提供支持。

3:集成的硬件相关和硬件无关的操作系统所需的软件模块。

ØBSP的表现形式

BSP主要以两种形式来表现:

1:源代码(C代码、汇编代码)、系统编译连接依靠文件。

2:二进制的目标代码和目标代码库。

 

ØBSP在软件系统中的位置

      BSP在软件系统中的位置可以用下图来表示,BSP为操作系统和硬件设备的互操作建了一个桥梁,操作系统通过BSP来完成对指定硬件的配置和管理。

 

 

BSP向上层提供的接口有

  1. 与操作系统内核的接口(如报告DRAM大小、修改中断屏蔽级别等)
  2. 与操作系统的I/O系统的接口
  3. 与应用程序的接口

 

ØCPU最小系统BSP的定义

  

广义上讲,单板中所有需要CPU控制的硬件的程序,都属于单板BSP,但是,为了调试方便和软件的模块化,我们通常就将与此单板最小系统相关的程序简称为BSP,而将其他程序称为驱动程序。

   对于嵌入式系统来说,所谓最小系统就是一个包含:CPU, Bootrom, RAM,系统时钟,网口,串口的计算机运行环境。

   这样,最小系统BSP就包含了CPU系统的初始化程序以及网口,串口,系统时钟等设备的驱动程序。

 

 

ØBSP的主要功能

     BSP的主要功能在于配置系统硬件使其工作于正常的状态,完成硬件与软件之间的数据交互,为OS及上层应用程序提供一个与硬件无关的软件平台。因此从执行角度来说,其可以分为两大部分:

    1)目标板启动时的硬件初始化及多任务环境的初始化

    2)目标板上控制各个硬件设备正常运行的设备驱动程序,由它来完成硬件与软件之间的信息交互

        通常我们认为BSP是OS服务的, 但实际上, BSP软件包中的部分程序对OS也并不是必须的,从这个角度,又可以将BSP划分为两部分:

    1)最小系统BSP,即我们通常所称的BSP

    2) 设备驱动程序

 

Ø开发BSP需要的条件

  1. 目标硬件:硬件调测完毕,经过必要的软件测试
  2. 必要的硬件设计文档:如地址空间的分布,CPU和其他芯片的工作模式等。
  3. 操作系统
  4. 交叉开发工具:编译器、汇编器、链接器等
  5. 下载机制:bootrom或仿真器等