裝置驅動層

2021-05-14 09:29:06 字數 1392 閱讀 6158

驅動層一般由硬體抽象層(hal)、板級支援包(bsp)和驅動程式組成,是嵌入式系統中不可或缺的重要部分。它的作用是為上層程式提供外部裝置的操作介面,並且實現裝置的驅動程式。上層程式可以不管操作的裝置內部實現,只需要呼叫驅動的介面即可。

硬體抽象層(hal

嵌入式系統通常包含三個部分:

嵌入式應用程式

嵌入式作業系統

硬體平台

應用程式執行在作業系統之上,利用作業系統提供的介面完成特定功能。作業系統一般是rtos,完成應用的任務排程和控制等核心功能。硬體平台根據應用的不同,所具備的功能各不相同,而且所使用的硬體裝置也不一樣,因此具有複雜的多樣性。

由於硬體平台的複雜多樣,針對不同平台進行作業系統的移植是極為耗時的工作,因此經過不斷發展,嵌入式系統的三層結構演化為四層結構,即在作業系統層和硬體平台之間,增加硬體抽象層(hal)。

硬體抽象層本質上就是一組對硬體進行操作的api介面,是對硬體功能抽象的結果。硬體抽象層通過api為作業系統和應用程式提供服務。一般上hal包含相關硬體的初始化、資料的輸入輸出操作、硬體裝置的配置操作等功能。

有了硬體抽象層,作業系統和應用程式就不需要關心底層的硬體平台資訊,核心與硬體相關的**也不必因硬體的不同而修改,只要硬體抽象層能夠提供必需的服務即可,從而遮蔽底層硬體,方便進行系統的移植。

hal只是對硬體的乙個抽象,對一組api進行定義,卻不提供具體的實現。通常hal各種功能的實現是以bsp的形式來完成對具體硬體的操作的。

hal設計的一些要素是:

與硬體的密切相關性

與作業系統的無關性

介面的功能包括硬體或者系統所需硬體支援的所有功能

介面簡單明瞭

板級支援包(bsp

板級支援包是介於系統硬體和作業系統的驅動程式之間的一層,是hal的具體實現,所以有些人也稱bsp層位hal。

bsp主要實現對作業系統的支援,為上層驅動程式提供訪問硬體裝置暫存器所需的函式,使之能夠更好的執行於硬體主機板。

bsp的特點有:硬體相關性,bsp程式直接對硬體進行操作;作業系統相關性,不同作業系統的軟體層次結構不同,硬體抽象層的介面定義不同,因此具體實現也不一樣。bsp,一定要按照作業系統的介面定義來實現,因此,大多數的bsp程式設計過程都是在某乙個成型的bsp模板上進行修改。

具體功能體現在兩個方面:

1.系統啟動時,完成對硬體的初始化,如對系統記憶體,暫存器以及裝置的中斷設定等。

2.為作業系統的通用裝置驅動程式提供訪問硬體的手段,亦即硬體相關的裝置驅動。

裝置驅動程式

裝置驅動程式是指作業系統中的驅動程式,為上層軟體提供裝置的操作介面,必要的時使用bsp提供的函式來實現硬體裝置操作。驅動程式的好壞直接影響系統的效能。

裝置驅動例項 字元裝置驅動

在整個linux裝置驅動學習中,字元裝置驅動較為基礎。通過對它的學習,對裝置驅動進一步加深了解 cdev 結構體struct cdev 講下比較重要的成員變數 dev t dev 定義了32位的裝置號,其中12位是主裝置號,20位是從裝置號。獲取主裝置號 major dev t dev 獲取從裝置號...

驅動 linux裝置驅動 字元裝置驅動開發

preface 前面對linux裝置驅動的相應知識點進行了總結,現在進入實踐階段!linux 裝置驅動入門篇 linux 裝置驅動掃盲篇 fedora下的字元裝置驅動開發 開發乙個基本的字元裝置驅動 在linux核心驅動中,字元裝置是最基本的裝置驅動。字元裝置包括了裝置最基本的操作,如開啟裝置 關閉...

Linux裝置驅動之《字元裝置驅動》

linux裝置中最大的特點就是裝置操作猶如檔案操作一般,在應用層看來,硬體裝置只是乙個裝置檔案。應用程式可以像操作檔案一樣對硬體裝置進行操作,如open close read write 等。下面是乙個字元裝置驅動程式的簡單實現test.c 模組分析 1.初始化裝置驅動的結構體 struct fil...