理解和使用Linux的硬件抽象层HAL
理解和使用Linux的硬件抽象层HAL
作者:刘旭晖 Raymond转载请注明出处
Email:colorant@http://doc.xuehai.net
BLOG:http://doc.xuehai.net/colorant/
说来惭愧,基于ARM平台的驱动做了这么长时间了,以前一直在kernel里面忙活,很少了解上层应用相关的发展,也没有接触过HAL和 DBUS。因为最近做的项目上层是基于X86的软件框架来做,和以前的模式也有较大的变化,借此机会也想了解一下上层应用和底层驱动的配合和以前有什么不同,所以很自然的就需要了解Hal。记录一下自己的学习理解吧。 本人的能力和测试时间有限,可能下文中有些理解、分析不一定准确,欢迎联系指正。
1 相关说明
1.1 网站资源
HAL的官方网址:http://doc.xuehai.net/wiki/Software/hal
http://doc.xuehai.net/os/project/tamarack/hal_re.html solaris系统上的同志写的一篇分析HAL框架原理的文章。很好,就是版本稍微有点旧
http://doc.xuehai.net/~d ... ndling-OLS-2006.pdf 2006年Linux研讨会上,Hal的作者David Zeuthen所提交的Paper。
顺便提一下,研讨会的网址是:http://doc.xuehai.net/ 有不少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.10
2 理解HAL
2.1 什么是HAL
说实话,这部分很多人写过,不过为了文章的完备性,我还是从我理解的侧重点再写一下。 首先HAL不是2001太空漫游系列里的那台超级电脑8 )HAL是Hardware Abstraction Layer即硬件抽象层的首字母缩写,以下来源于Hal Spec的框图很好的说明了它的组成部分: