第7章 Android HAL实例解析

第7章 Android HAL实例解析

   通过本章介绍AndroidHAL知道HAL是为了一些硬件提供商提出的保护专利的驱动程序而产生的,是为了避开LinuxGPL束缚。HAL主要的存储目录有:1libhardware_legany  2libhardware3ril   4msm7k。主要包含以下一些模块:GpsVibratorWifiCopybitAudioCameraLightsRilOverlay等。大概了解了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.javaAPP测试程序(属于APP层)文件:apps/LedClient/src/com/mokoid/LedClient/LedClient.java

2中方法-------经过Manger调用service

   Manger (属于Framework层)

   APP通过这个Mangerservice通信。

   文件: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-onlyAndroid源码根路径下:

~/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.LedClientLedClienthecom.mokoid.LedTest.LedTest),执行这两个程序就可以看到控制开发板上LED灯的亮灭。

     通过本章有效掌握了Android HAL,对本章有了更深入的理解。

 

posted @ 2016-06-05 21:13  愤怒的鸟  阅读(540)  评论(0编辑  收藏  举报