第九章 硬件抽象层 HAL
在传统的Linux.系统中Linux驱动一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑有码。对于访问硬件寄存器的代码,并没有什么秘密可言,因为这都是调用的 Linux 内核的标准函数进行的标准操作4 而Linux驱动的业务逻辑部分对击有些企业或个人并不想将源代码公开。尽管这些Lipux.驱动都是免费给用户使用的,由于这些Linux 驱动的实现涉及一些,技术专利或商业秘窑,如果公开源代码会有很大麻烦。但作为Linux.驱动,又不得不公开源代码。这 是由于Linux 内核采用了 GPL协议,而GPL协议要求所有使用基于GPL协议的源代码的程序必须开源(由于 Linux 驱动属于 Linux 内核的一部分,因此Linux 驱动必须开源)。
编写一款支持 HAL 的 Linux 驱动程序步骤。
第 1 步:编写 Linux 驱动 “编写 Linux 驱动”,从表明上看是废话,但如果要为 Linux 驱动添加 HAL,而且想尽量保护敏 感数据。 Linux 驱动的代码就要尽量简洁,尽可能将业务逻辑放到 HALLibrary 中。
第 2 步:编写 HAL Library HAL Library。但这类库文件有一个接口。通过 HAL _MODULE_INFO _ SYM 变量实现。 Service Library 就是通过在这个接口中定义的 ID 定位 HAL Library 的。
第 3 步:编写 Service Library 。尽管这步并不是必需的,但新的 HAL 架构要求我们这样做。 Service Library 也是 Linux Library。 这一步比较灵活。 Service Library 可以是一般的 Linux Library,也可以是别I Library。
http://www.cnblogs.com/yangsasa/