标签:
第7章 Android HAL实例解析
通过本章介绍Android的HAL知道HAL是为了一些硬件提供商提出的保护专利的驱动程序而产生的,是为了避开Linux的GPL束缚。HAL主要的存储目录有:1、libhardware_legany 2、libhardware:3、ril 4、msm7k。主要包含以下一些模块:Gps、Vibrator、Wifi、Copybit、Audio、Camera、Lights、Ril、Overlay等。大概了解了Android HAL。
第1中方法 直接调用service方法的实现过程
一般来说,HAL moudle需要涉及的是如下3个关键结构体:
struct hw_module_t;
struct hw_module_methods_t;
struct hw_device_t;
在JNI层文件:mokoid-read-only/frameworks/base/service/jni/com_mokoid_server_LedServer.cpp。
service(属于Framework层) 文件:frameworks/base/service/java/com/mokoid/server/LedService.java。APP测试程序(属于APP层)文件:apps/LedClient/src/com/mokoid/LedClient/LedClient.java。
第2中方法-------经过Manger调用service
Manger (属于Framework层)
APP通过这个Manger和service通信。
文件:mokoid-read-only /framework/base/core/java/mokoid/hardware/LedManager.java。
SystemServer(属于APP层)
文件:mokoid-read-only/apps/LedTest/src/com/mokoid/LedTest/src/com/mokoid/LedTest/LedSystemServer.java.
APP测试程序(属于APP层)
文件:mokoid-read-only/apps/LedTest/src/com/mokoid/LedtTest/LedTest.java.
最后FS-S5PC实验平台LED灯实验,(1)复制实验代码mokoid-read-only到Android源码根路径下:
~/eclair_2.1_farsight /$ cd mokoid-read-only
~/eclair_2.1_farsight /mokoid-read-only$ mm
(2)更新根文件系统:
~/eclair_2.1_farsight /$ ./make_fs100_yaffs2_image.sh
(3)编译驱动模块
(4)给开发板上电,启动Android系统,加载驱动模块,创建设备节点。
(5)进入主程序菜单,但是看不到我们添加的两个应用程序,通过执行如下命令:
Logcat -s PackageManager &
(6)进入主程序菜单,可以看到有两个新添加的应用程序(com.mokoid.LedClientLedClienthe和com.mokoid.LedTest.LedTest),执行这两个程序就可以看到控制开发板上LED灯的亮灭。
通过本章有效掌握了Android HAL,对本章有了更深入的理解。
标签:
原文地址:http://www.cnblogs.com/fei127/p/5561815.html