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邏輯等等。