zoukankan      html  css  js  c++  java
  • 安卓移植和驱动开发第九章心得体会

    HAL ( Hardware Abstraction Layer,硬件抽象腔,〉是建立在Linux驱动之上的一套翻字库。这套程序 j率并不属于 Linux 内核, 而是属于 Linux 内核层之上的应用层。 Google 为 Android 增加 HAL 的主要目 的除了尽量避免应用程序直接访问 Linux 驱动外,还有一仓重要原因,那就是保护 “私人财产”。-对于 那些既想发布茬子·Android,的Linux驱动程序,又不想将核心业务逻辑公开的企业或个人,这时候HAL显得非常重要了。

    在传统的 Linux.系统中Linux驱动一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑有码。对于访问硬件寄存器的代码,并没有什么秘密可言,因为这都是调用的 Linux 内核的标准函数〈如 ioad32·iowrite32等)进行的标准操作。比也架构比较简单,其基本原理就是在Android系统中使用程序库 Cso文件) 调用位守内核空间的Linux驱动 〈一般通过设备文件访问)。 然后沟通1droid面用程序{APK文件〉,也可以通过NDK程序访问HAL中的程序库,或者也可以直接在安卓的程序中进行访问。

    编写支持 HAL 的 Linux 驱动程序的步骤:1. 编写 Linux 驱动 2.编写 HAL Library 3.编写 Service Library 。

    在Android.系统中使用 Linux驱动有两种方式。 一种是通过传统的方式直接与Limux驱动交互。例如, 直接读写设备文件的数据。另外→种是 Android特有的,就是通过 HAL模块HAL模块本质就是通过Linux共享库与Linux驱动交互,然后应用程序再访问 Linux.共享库。早期的HAL模块应用程序直接按访问Linux共字库的方式调用。而高版本的Android系统为HAL I曾加了Stub换句话说还就是为每一个 HALi共享库指定一个id, 再利用这个id 配合一定的规则 找到 Linux共享库,这样 Linux 共享库更换文件名,移动位置都很方便。

    http://www.cnblogs.com/suntao123/

  • 相关阅读:
    TableExport导出失败问题
    gitlab备份、恢复、升级
    读书笔记一【加密——替换法】
    读书笔记一【加密——换位法】
    解决Kettle ETL数据乱码
    SQL中exsit和in
    Centos下搭建邮件服务器
    2018总结及2019计划
    mac安装gcc
    Vue.js学习 Item11 – 组件与组件间的通信
  • 原文地址:https://www.cnblogs.com/suntao123/p/5652958.html
Copyright © 2011-2022 走看看