电子发烧友App

硬声App

扫码添加小助手

加入工程师交流群

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>嵌入式开发>基于安卓的非标准驱动程序设计解析

基于安卓的非标准驱动程序设计解析

2017-10-27 | rar | 0.6 MB | 次下载 | 1积分

资料介绍

 Android系统是Google推出的基于Linux内核和Java架构的操作系统,在很短的时间内已成为主流的手机操作系统,并已逐步扩展应用到嵌入式系统、平板电脑和上网本上。它既有Linux系统所具有的硬件平台可移植性,也因使用Java语言开发应用程序带来了应用软件只编写一次即可在所有平台运行的巨大优势。Android虽然主要基于已有的技术,但在体系结构设计上有较大的创新。其主要设计目标之一就是要使应用程序和系统能独立于具体的计算机体系结构和硬件平台,表现在设备驱动程序设计上,对于已有的Linux标准设备驱动程序可以直接继续使用,只需为其增加应用层JNI接口。但对于Linux没有的非标准设备则提倡在Linux内核中驱动部分只做很少的接口工作,尽量把驱动程序的主要处理放在Android的上层架构中,即在应用层实现。本文对Android系统的底层实现技术进行深入的研究,包括Android的硬件抽象层和JNI技术实现等。并以S3C2440开发板上的LED灯设计显示驱动程序为例,提出了一种非标准硬件设备驱动程序的设计和实现方案。
  1 Android系统驱动程序架构
  1.1 驱动程序分层体系结构
  Android是基于Linux的,它使用了Linux内核,但应用程序使用Java语言开发,所以应用程序在调用设备驱动时不能像一般的Linux应用程序那样直接使用系统调用,必须通过Java虚拟机的JNI的本地(Native)方法使用设备。另一方面,Android要成为一个通用性强的平台,必须加强它的可移植性。这也是在Android架构添加一个硬件抽象层(HAL)的原因,目的是为设备的调用提供一个更高级的封装图1所示为Android驱动程序架构。
  HAL Stub是以Linux共享库(*.so)的形式存在,在整个驱动架构中,它是设备驱动程序运行在用户空间的一部分,它向上为Dalvik虚拟机提供硬件设备的抽象接口,向下通过系统调用与Linux内核中的驱动程序进行数据交互。在这个过程中HAL可以对驱动程序的数据进行处理,也就是说在Linux内核中的驱动程序部分只需要提供一个与硬件设备传输数据接口的功能,而其余具体的操作可以由HAL完成。
  1.2 Android的硬件抽象层
  Android的硬件抽象层HAL(Hardware Abstract Layer)在Android的架构中是在库这一层中,通过这一层,硬件厂商可以把部分设备的驱动源码封装在这一层而不公开源代码。
  对图1分析,设计HAL就是为了把应用框架和Linux内核分离出来,让Android使用Linux内核而又不完全依赖Linux内核。当然,驱动程序并不是完全从Linux内核中分离出来,一些基本的处理必须由内核来完成,HAL只是分担了Linux设备驱动的部分功能,至于这部分的功能占驱动程序功能的比例目前并没有一个标准。
  基于安卓的非标准驱动程序设计解析
  在Android系统发展过程中,HAL的实现也逐步有了一些变化,旧的HAL是一种模块化的思想,通过共享库的形式由Runtime在JNI时以函数调用方法调用,这种做法并没有通过封装,即上层应用可以直接调用硬件。另外,这种方法可被多个进程使用,映射到多个进程空间中浪费内存资源。
  现在HAL提出一种Stub的思想,HAL Stub是一种代理的概念,Stub同样是以共享库(*.so)格式存在,但上层应用并不像加载动态库那样调用Stub。这种HAL是由模块与Stub结合而成,Runtime通过模块提供的统一接口获取并操作Stub。Stub向HAL提供操作的回调函数,Runtime向HAL取得指定模块的操作函数后,调用这些回调函数。这是一种间接函数调用的方式,HAL里包含了多个Stub。图2为HAL Stib原理。
  基于安卓的非标准驱动程序设计解析
Android 硬件抽象层 jni技术
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1FS4054H 输入电压范围3.8V~6.8V 输入最大耐压28V 输入过压关闭充电阈值6.8V
  2. 4.22 MB  |  2次下载  |  免费
  3. 2AC/DC 225W 开板电源 LOF225-23BxxR2系列数据手册
  4. 2.70 MB   |  1次下载  |  1 积分
  5. 3晶振技术解析---电子设备的“时钟心脏”
  6. 1.55 MB  |  1次下载  |  免费
  7. 4AU6830M 集成音频 DSP 的 2 × 41W 数字型 Class D 音频功率放大器数据手册
  8. 1.86 MB   |  次下载  |  免费
  9. 5AU6815E 集成音频 DSP 的2×32W数字型 Class D 音频功率放大器数据手册
  10. 1.21 MB   |  次下载  |  免费
  11. 6I-PEX 82652-100B-02-D_CABLINE-CA系列40P极细同轴线束SI设计图纸
  12. 293.34 KB  |  次下载  |  免费
  13. 7I-PEX 82863-100B-02-D_CABLINE-CA系列PCIe/USB4极细同轴线图纸
  14. 301.83 KB  |  次下载  |  免费
  15. 8YA-002S屏幕挂灯说明书
  16. 1.25 MB  |  次下载  |  免费

本月

  1. 1人形机器人执行、感知系统技术及市场解析
  2. 3.52 MB  |  5次下载  |  免费
  3. 2WD431产品规格书
  4. 1.32 MB  |  3次下载  |  免费
  5. 3A-29回音消除模块
  6. 1.28 MB  |  2次下载  |  免费
  7. 4 双麦阵列回音消除及降噪模块 A-47 说明书
  8. 1.96 MB  |  2次下载  |  免费
  9. 5FS4054H 输入电压范围3.8V~6.8V 输入最大耐压28V 输入过压关闭充电阈值6.8V
  10. 4.22 MB  |  2次下载  |  免费
  11. 6A-68语音处理模组规格书V1
  12. 1.47 MB  |  1次下载  |  免费
  13. 7A-29P回音消除模块
  14. 1.42 MB  |  1次下载  |  免费
  15. 8瑞芯微RK3562开发板资料-飞凌嵌入式
  16. 2.80 MB  |  1次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935137次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420064次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233095次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191469次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183361次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81608次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73836次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65991次下载  |  10 积分