伟研科技 S5PV210 开发板实验一  Android底层开发Led控制实验
一、代码讲解
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




转载于:https://www.cnblogs.com/endlessli/archive/2011/03/27/1996918.html

更多相关文章

  1. android studio编写运行java main的三种方法(亲测)
  2. Android工程的目录结构详解
  3. android 简单的相册查看器
  4. ubuntu 下基于源码的android平台搭建与内核编译
  5. 在Android中使用logback-android日志框架配置 slf4j + logback
  6. android studio一键生成快速开发实现语言国际化
  7. Android(安卓)Studio 从2.3.1升级到3.4.1遇到的问题
  8. android 源码编译导入library project
  9. APK的Platform签名的权限

随机推荐

  1. android binder 讲解
  2. Android的webview研究
  3. Android(安卓)NDK会带来什么,除去你对NDK
  4. android emulator中调用部署在我自己电脑
  5. Android(安卓)4.1.2系统添加重启功能
  6. Android(安卓)WIFI 类分析
  7. Android(安卓)Sensor传感器系统架构初探
  8. Android(安卓)- 文本框的输入法控制和默
  9. 使用SourceInsight查看android中的native
  10. android logo、android开机动画改变详解