• 第九章读书笔记


          Linux.系统中Linux驱动一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑有 码。对于访问硬件寄存器的代码,并没有什么秘密可言,因为这都是调用的 Linux 内核的标准函数〈如 io位ad32、 ·iowrite32等)进行的标准操作4 而Linux驱动的业务逻辑部分对击有些企业或个人并不想-~ 将源代码公开。尽管这些Lipux.驱动都是免费给用户’使用的, {g由于这些Linux 驱动的实现涉及一些 , 、 技术专利或商业秘窑,如果公开源代码会有很大麻烦。但作为Linux.驱动,h又不得不公开源代码。这 是由于Linux 内核采用了 GPL协议(详见6J.3.节的介绍),而GPL协议要求所有使用基于GPL协 ‘议的源代码的程序必须开源(由于 Linux 驱动属于 Linux 内核的一部分,因此Linux 驱动必须开源〉。

           编写一款支持 HAL 的 Linux 驱i.9J.程序要比编写普通的 Linux 驱动程序复杂一些,但这些付出 是值得的。 因为加入HAL 会使组成 Linux 驱动的一整套 Library 的各部分更独立,更容易维护。下 面看一下具体的实现步骤。在后面的内容会逐渐对每一步进行讨论。 第 1 步g 编写 Linux 驱动 “编写 Linux 驱动”,从表明上看是废话,但如果要为 Linux 驱动添加 HAL,而且想尽量保护敏 感数据。 Linux 驱动的代码就要尽量简洁,尽可能将业务逻辑放到 HALLibrary 中。 第 2 步:编写 HAL Library HAL Library 就是普通的 Linux Library 仆.so )文件。但这类库文件有一个接口。通过 HAL _MODULE_INFO _ SYM 变量实现。 Service Library 就是通过在这个接口中定义的 ID 定位 HAL Library 的。 第 3 步:编写 Service Library 尽管这步并不是必需的,但新的 HAL 架构要求我们这样做。 Service Library 也是 Linux Library。 这一步比较灵活。 Service Library 可以是一般的 Linux Library,也可以是别I Library。在本章的 LED 驱动例子中将 Service Libratγ和刑I Library 合到了一起。也就是说, Service Library就是JNI Library. 实际上这一步除了用 CIC件实现的*.so 库文件外,还应该包含一个用 Java 编写的服务管理类 ( ServiceManager)。 ServiceManager会调用 Service Library。而 APK 程序会调用 ServiceManager类米 访问 Service Library。

           http://www.cnblogs.com/sjjj/

  • 相关阅读:
    配置磁盘映射(在服务器和eclipse 中)
    服务器mysql授权连接用户
    validationEngine验证的使用
    Remove '@override' annotation解决办法
    js页面报错javax.servlet.jsp.PageContext cannot be resolved to a type解决
    如何正确使用log4j
    Log4j使用教程
    windows系统修改mysql端口的方法
    on条件与where条件的区别
    mybaits错误解决:There is no getter for property named 'id' in class 'java.lang.String'
  • 原文地址:https://www.cnblogs.com/sjjj/p/5617021.html
Copyright © 2020-2023  润新知