android底层开发实例LED

来源:互联网 发布:淘宝开店装饰教程pdf 编辑:程序博客网 时间:2024/06/11 01:56

一、代码讲解
1、 编写HAL层代码
一般来说HAL moudle需要涉及的是三个关键结构体:
        struct hw_module_t;
        struct hw_module_methods_t;
        struct hw_device_t;
下面结合代码说明这3个结构的用法
文件:/hardware/modules/include/weiyan/led.h


文件:led.c









2.JNI层文件:/frameworks/base/service/com_mokoid_server_LedService.cpp















3.Framework层的service,文件:/frameworks/base/service/java/com/weiyan/server

 

4.APP 测试程序 (属于APP层)
    APP层两种调用模式
(1)Android的app可以直接通过service调用.so格式的jni

(2)经过Manager调用service

Manager (属于Framework层)


因为LedService和LedManager在不同的进程,所以要考虑到进程通讯的问题。Manager通过增加一个aidl文件来描述通讯接口
文件:weiyan/frameworks/base/core/java/weiyan/hardware/ILedService.aidl
package mokoid.hardware;

interface ILedService
{
    boolean setOn(int led);
    boolean setOff(int led);
}  
  系统的aidl工具会将ILedService.aidl生成ILedService.java文件,实现IledService


SystemServer (属于APP层)文件:
/apps/LedTest/src/com/weiyan/LedTest/LedSystemServer.java




二、APP 测试程序
文件:weiyan/apps/LedTest/src/com/weiyan/LedTest/LedTest.java

加载方法
1、把光盘提供的weiyan.tar.gz解压到/opt/ android_froyo_smdk
  $ cd   /opt/ android_froyo_smdk
  $ tar  -jxvf weiyan.tar.bz2
2、修改build/core/config.mk文件防止编译找不到led.h头文件
  $cd  /opt/ android_fsroyo_smdk
  $gedit build/core/config.mk
  找到SRC_HEADERS := \
        $(TOPDIR)system/core/include \
   在后面加入
$(TOPDIR)weiyan/hardware/modules/include




3、编译工程
 $ source  /opt/android_froyo_smdk/build/envsetup.sh
$ export   TARGET_PRODUCT=sec_smdkv210
$mmm   /opt/android_froyo_smdk/weiyan

编译成功后会如下路径生成apk文件,库文件,jar包等
/opt/android_froyo_smdk/out/target/product/smdkv210/system/app/LedClient.apk
/opt/android_froyo_smdk/out/target/product/smdkv210/system/app/LedTest.apk
/opt/android_froyo_smdk/out/target/product/smdkv210/system/framework/ledctl.jar
/opt/android_froyo_smdk/out/target/product/smdkv210/system/lib/hw/led.smdkv210.so
/opt/android_froyo_smdk/out/target/product/smdkv210/system/lib/libled.so
/opt/android_froyo_smdk/out/target/product/smdkv210/system/lib/libmokoid_runtime.so
把LedClient.apk, LedTest.apk放到android的system/app目录,把ledctl.jar放到system/framework目录,把led.smdkv210.so放到system/lib/hw目录,把ibled.so,
libmokoid_runtime.so放到system/lib目录下

4、为了android桌面能显示我们的LedClient.apk, LedTest.apk程序,把weiyan/frameworks/base/service/com.weiyan.server.xml放到android的
system/etc/permissions目录下
5、加载led驱动模块
   把leds.ko复制到android 的system目录下,执行
   #insmod leds.ko
   #chmod 666 /dev/leds

6、运行LedClient.apk, LedTest.apk

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 赌博输了50万怎么办 手机赌博输了钱怎么办 内存卡是扩容卡怎么办 坐了过山车想吐怎么办 坐完摇椅想吐怎么办 玩完过山车想吐怎么办 做了过山车想吐怎么办 坐车后恶心想吐怎么办 太胖了想减肥怎么办 被集资诈骗的人怎么办 教了作业没写怎么办 移动4g网速慢怎么办 小孩装病不去上学怎么办 卖衣服顾客嫌贵怎么办 当顾客说再看看怎么办 读完高中没考上大学怎么办 手抖不会写字了怎么办 字认识写不出来怎么办 八四把衣服发黄怎么办 孩孑在学校被打怎么办 在学校有人打我怎么办 孩子在学校不爱说话怎么办 孩子上幼儿园不和小朋友玩怎么办 遇到有人要打你怎么办 被表白了怎么办神回复 学校要发展我该怎么办 如果有人要打你怎么办 梦见有人要杀我怎么办 如果有人要杀我怎么办 梦到有人要杀我怎么办 感觉有人要杀我怎么办 我很自卑 没自信怎么办 如果在学校被打怎么办 如果有人打我该怎么办 别人要砍我我怎么办 专四两次没过怎么办 3岁宝宝害羞胆小怎么办 人太老实被欺负怎么办 在外面被欺负了怎么办 同学们老欺负我怎么办 孩子在学校受欺负怎么办