1. 程式人生 > 其它 >BSP概念以及能更好的使用

BSP概念以及能更好的使用

  板級支援包(BSP)是介於主機板硬體和作業系統中驅動層程式之間的一層,一般認為它屬於作業系統一部分,主要是實現對作業系統的支援,為上層的驅動程式提供訪問硬體裝置暫存器的函式包,使之能夠更好的運行於硬體主機板。在嵌入式系統軟體的組成中,就有BSP。BSP是相對於作業系統而言的,不同的作業系統對應於不同定義形式的BSP,例如VxWorks的BSP和Linux的BSP相對於某一CPU來說盡管實現的功能一樣,可是寫法和介面定義是完全不同的,所以寫BSP一定要按照該系統BSP的定義形式來寫(BSP的程式設計過程大多數是在某一個成型的BSP模板上進行修改)。這樣才能與上層OS保持正確的介面,良好的支援上層OS。

  純粹的BSP所包含的內容一般說來是和系統有關的驅動和程式,如網路驅動和系統中網路協議有關,串列埠驅動和系統下載除錯有關等等。離開這些驅動系統就不能正常工作。

   

BSP的具體結構和組成根據不同的嵌入式作業系統而不同。BSP的開發要求設計人員具備軟硬體方面的綜合知識。

BSP軟體與其他軟體的最大區別在於BSP軟體有一整套模板和格式,開發人員必須嚴格遵守,不允許任意發揮。
在BSP軟體中,絕大部分檔案的檔名和所要完成的功能都是固定的。
所以,BSP軟體的開發一般來說都是在一個基本成型的BSP軟體上進行修改,以適應不同單板的需求.
針對某類CPU的硬體單板,嵌入式作業系統(如vxWorks)通常提供有其DEMO板的BSP, 這些程式位於指定的目錄之下。也就是我們所說的最小系統BSP。
一般來說,我們在硬體系統設計好之後,都會先找到一個與自己系統相近 的DEMO板BSP(最起碼是使用相同的CPU)。並以此為基礎,開發自己單板的BSP。

   

BSP工程師應具備的能力

上述前兩個階段屬於BSP開發的內容,第三個階段屬於嵌入式應用軟體開發的過程。綜上所述,BSP工程師主要應該具備的能力主要有:

  • 掌握計算機原理方面的知識;
  • 掌握作業系統的相關知識,深入研究某種作業系統,目前來講,研究linux作業系統應該是大部分人的選擇;
  • 精湛的C語言功底和一定的C++/彙編的知識。
  • 掌握一定的硬體和電路原理方面的知識;
  • 熟悉常見的介面協議,如I2C, SPI, UART, USB等。

當然作為一個軟體開發人員也必須掌握一些通用的軟體,比如:

  • 程式碼管理軟體,常見的如git等;
  • 程式碼閱讀軟體,這個就因個人喜好而不同了,比如:opengrok,source insight,vim下ctags/cscope外掛組合等。2022-03-29