zoukankan      html  css  js  c++  java
  • 第九章读书笔记

          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/

  • 相关阅读:
    异常作业
    多态作业
    封装和继承作业
    类和对象作业
    多重循环、方法作业
    选择语句+循环语句作业
    数据类型和运算符作业
    初识Java作业
    C 数据结构堆
    C基础 旋转数组查找题目
  • 原文地址:https://www.cnblogs.com/sjjj/p/5617021.html
Copyright © 2011-2022 走看看