linux硬件抽象层框图,理解和使用Linux的硬件抽象层HAL.docx
理解和使用Linux的硬件抽象層HAL
理解和使用Linux的硬件抽象層HAL作者:劉旭暉 Raymond轉載請注明出處Email:colorant@163.comBLOG:/colorant/說來慚愧,基于ARM平臺的驅動做了這么長時間了,以前一直在kernel里面忙活,很少了解上層應用相關的發展,也沒有接觸過HAL和 DBUS。因為最近做的項目上層是基于X86的軟件框架來做,和以前的模式也有較大的變化,借此機會也想了解一下上層應用和底層驅動的配合和以前有什么不同,所以很自然的就需要了解Hal。記錄一下自己的學習理解吧。本人的能力和測試時間有限,可能下文中有些理解、分析不一定準確,歡迎聯系指正。1 相關說明1.1 網站資源HAL的官方網址:/wiki/Software/hal/os/project/tamarack/hal_re.html solaris系統上的同志寫的一篇分析HAL框架原理的文章。很好,就是版本稍微有點舊/~d ... ndling-OLS-2006.pdf 2006年Linux研討會上,Hal的作者David Zeuthen所提交的Paper。順便提一下,研討會的網址是:/有不少Paper看起來真的很不錯啊,很有興趣!今年的會議有好多Paper我都等不及想看看了。1.2 工作環境Hal本身對環境的要求是:Linux kernel 2.6.17 (or later)util-linux 2.12r (or later)udev 089 (or later)dbus 0.61 (or later)glib 2.6.0 (or later)我想,關鍵是內核了,低于這個版本的內核就不用玩了 8 )至于我的環境:硬件平臺:基于ARM的嵌入式板子軟件環境:Linux 2.6.21 ,自制文件系統 Dbus 1.0.2 Hal 0.5.102 理解HAL2.1 什么是HAL說實話,這部分很多人寫過,不過為了文章的完備性,我還是從我理解的側重點再寫一下。首先HAL不是2001太空漫游系列里的那臺超級電腦8 )HAL是Hardware Abstraction Layer即硬件抽象層的首字母縮寫,以下來源于Hal Spec的框圖很好的說明了它的組成部分:它是一個位于操作系統和驅動程序之上,運行在用戶空間中的服務程序。它的目的是對上層應用提供一個統一的簡單的查詢硬件設備的接口。它所謂的抽象,基本上也就僅限于這一功能,它通常并不提供對硬件的實際操作,對硬件的操作,還是由應用程序來完成。細化來說,除了提供標準的硬件查詢接口,它甚至并不考慮如何對硬件進行配置,這不是它要完成的工作,但它確實提供了存儲硬件配置相關信息的空間。下面我們會說到,那被稱為屬性。所以,簡單的說,你可以把HAL理解為:一堆的硬件列表以及他們的相關屬性的集合。那么,這一堆硬件列表能有什么用呢?應該說,它簡化了應用的查詢邏輯,把這一部分的復雜性轉移到了應用程序之外,由HAL統一處理,其次,按作者的期望,當一些庫函數也開始使用HAL的時候,應用程序甚至可以把對不同硬件的實際操作的復雜性也交給庫函數來自動處理。2.2 HAL的組成框架按照上面的框圖,首先是HAL daemon,HAL的服務進程。其次是硬件信息文件,后綴fdi,再有是Callout和Addons,這些是HAL針對不同硬件進行額外的處理工作所需的一些可執行文件或腳本。在Hal內部,每個硬件(具體的或抽象的)都是由一個Device Object設備對象來表示。每個設備對象會包括以下幾個概念的組成部分:UDI: Unique Device Identifer 每個設備對象的唯一標識符,它是根據BUS信息得到的,它的目標是保證設備的唯一性,同時在一個可移除設備多次插入拔出過程中保持相同的值。Property :屬性,是一個key/value pair。每個屬性由一個鍵和一個鍵值組成,用來存儲設備對象相關的各種信息。Method :方法是用來讀取設置屬性,或提供某些特定操作。Interface :這個更多的是DBUS的概念。屬性和方法被分類到不同的Interface中。2.3 HAL硬件信息的來源HAL中設備對象的相關信息來源主要有以下幾種:通過Sysfs得到,有相當一部分的屬性是通過這種方式得到的,比如UDI,設備的廠商,設備的父節點,設備的總線類型,硬盤的UUID啊等等。通過Probe探測得到,有些設備,例如一個Camera設備,它支持哪些數據格式啊之類的信息,對應用層程序也是有意義的,但是只是通過Sysfs接口并不能得到,而通過Linux V4L2子系統所定義的的一些標準接口函數,通過IOCTL可以得到這些信息。通常這是由HAL服務進程調用相應的callout去probe得到。類似還有很多子系統都定義了自己標準的接口函數,這為HAL獲取進一步的設備
總結
以上是生活随笔為你收集整理的linux硬件抽象层框图,理解和使用Linux的硬件抽象层HAL.docx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arm linux ping 通百度,l
- 下一篇: linux 其他常用命令