關於BSP,BIOS,和bootloader區別

2021-07-26 08:50:44 字數 3092 閱讀 4571

bsp是板級支援包,是介於主機板硬體和作業系統之間的一層,應該說是屬於作業系統的一

部分,主要目的是為了支援作業系統,使之能夠更好的執行於硬體主機板。bsp是相對於操作

系統而言的,不同的作業系統對應於不同定義形式的bsp,例如vxworks的bsp和linux的bsp

相對於某一cpu來說儘管實現的功能一樣,可是寫法和介面定義是完全不同的,所以寫bsp

一定要按照該系統bsp的定義形式來寫(bsp的程式設計過程大多數是在某乙個成型的bsp模板上

進行修改)。這樣才能與上層os保持正確的介面,良好的支援上層os。

例如:在vxworks中的網絡卡驅動,首先在config.h中包含該網絡卡,然後將網絡卡含網絡卡的資訊的引數

放入陣列 end_tbl_entry enddevtbl 中,系統通過函式muxdevload( )呼叫這個陣列來

安裝網絡卡驅動。

而在linux中的網絡卡驅動,是在space.c中宣告該網路裝置,再把網絡卡驅動的一些函式加到

dev結構中,由函式ether_setup()來完成網絡卡驅動的安裝。

純粹的bsp所包含的內容一般說來是和系統有關的驅動和程式,如網路驅動和系統中網路

tornado中bsp的編譯和上層應用程式不同,用命令列或直接在tornado環境下build,在t

ornado下不能跟蹤除錯。

使用者也可以新增自己的程式到bsp中,但嚴格來說不應該算bsp.一般來說這種做法不建議

。因為一旦作業系統能良好執行於最終的主機板硬體後,bsp也就固定了,不需要做任何改動

。而使用者自己在bsp中的程式還會不斷的公升級更新,這樣勢必對bsp有不好的影響,對系統

造成影響,同時由於bsp除錯編譯環境較差,也不利於程式的編譯除錯。

|----------------------------|

|             上層程式         |

|                             |

|                             |

|       i/o system             |

|        vxworks libraries     |

|        tcp/ip                |

|-----------------------------

|----------------------------| 

|        wind kernel           |

|                             |

|           bsp                |

|----------------------------|

|---------------------------|

|     scsi controllerr        |

|      serial controller      |

|      clock timer            |

|      ethernet controller    |

|      .. ..                  |

|                            |

|          硬體               |

|---------------------------|

bsp在嵌入式系統和windows系統中的不同

其實執行與pc機上的windows或linux系統也是有bsp的。只是pc機均採用統一的x86體系

架構,這樣一定作業系統(windows,linux..)的bsp相對x86架構是單一確定的,不需要做

任何修改就可以很容易支援os在x86上正常執行,所以在pc機上談論bsp這個概念也沒什麼

意義了。

而對嵌入式系統來說情況則完全不同,目前市場上多種結構的嵌入式cpu(risc)並存(p

pc,arm,mips....),為了效能的需要,外圍裝置也會有不同的選擇和定義。乙個嵌入式操作

系統針對不同的cpu,會有不同的bsp,即使同一種cpu,由於外設的一點差別(如外部擴充套件dr

am的大小,型別改變),bsp相應的部分也不一樣。

所以根據硬體設計編寫和修改bsp,保證系統正常的執行是非常重要的。

bsp和pc機主板上的bios區別

bsp和pc機主板上的bios區別很大,bios主要是負責在電腦開啟時檢測、初始化系統裝置

(設定棧指標,中斷分配,記憶體初始化..)、裝入作業系統並排程作業系統向硬體發出的

指令,它的firmware**是在晶元生產過程中固化的,一般來說使用者是無法修改。其實是

系統。在os正常執行後,bios的作用基本上也就完成了,這就是為什麼更改bios一定要從

新關機開機。

pc機bios的作用更象嵌入式系統中的bootloader(最底層的引導軟體,初始化主機板的基本

設定,為接收外部程式做硬體上的準備)。與bootloader不同的是bios在裝載os系統的同

時,還傳遞一些引數設定(中斷埠定義,...),而bootloader只是簡單的裝載系統。

bsp是和作業系統綁在一起執行在主機板上的,儘管bsp的開始部分和bios所做的工作類似

,可是大部分和bios不同,作用也完全不同。此外bsp還包含和系統有關的基本驅動(串列埠

,網口...),此外程式設計師還可以程式設計修改bsp,在bsp中任意新增一些和系統無關的驅動或程

序,甚至可以把上層開發的統統放到bsp中。

而bios程式是使用者不能更改,編譯程式設計的,只能對引數進行修改設定。更不會包含一些

基本的硬體驅動。

bsp在嵌入式開發中的位置和作用

bsp開發處於整個嵌入式開發的前期,是後面系統上應用程式能夠正常執行的保證。

大概步驟如下:

1.硬體主機板研製,測試。

2.作業系統的選定,bsp程式設計。

3.上層應用程式的開發。

bsp部分在硬體和作業系統,上層應用程式之間。所以這就要求bsp程式設計師對硬體,軟體和

作業系統都要有一定的了解。這樣才能做好bsp程式設計。

熟悉工具方面:電表,示波器,邏輯分析儀。硬體**器,**除錯環境。

語言方面:組合語言,c語言

關於BSP,BIOS,和bootloader區別

bsp是板級支援包,是介於主機板硬體和作業系統之間的一層,應該說是屬於作業系統的一部分,主要目的是為了支援作業系統,使之能夠更好的執行於硬體主機板。bsp是相對於作業系統而言的,不同的作業系統對應於不同定義形式的bsp,例如vxworks的bsp和linux的bsp相對於某一cpu來說儘管實現的功能...

關於業務和IT

偶爾翻開 程式設計師 雜誌2007年6月刊,看到一些關於soa與業務敏捷的文章,提醒我,我們的軟體設計忽略了一些很重要的東西。我們在anydata的設計過程中,實現了對資料表現方式的靈活應變,在某種程度上實現了流程上的應變,但是很多東西都是由專業的it人員對系統進行調整實現的,因此如果客戶的業務出現...

類和物件 關於繼承 關於介面

一 類和物件 物件將資料和操作打包在一起,類描述一切 用構造器建立物件 類和類之間的關係 關聯 組合,聚集 泛化二 關於繼承 祖先類object 方法重寫 tostring方法 equals方法 is a 是乙個 繼承關係 has a 有乙個 組合關係 三 關於介面 定義了一組功能 comparab...