skywang12345

导航

统计
  • 随笔 - 278
  • 文章 - 0
  • 评论 - 1353
  • 引用 - 0
 

Android中字符设备驱动和应用实例(二)——应用部分

 

下面介绍创建Android设备字符设备驱动对应的应用程序

 

1 应用程序

在此示例中,我们将应用程序的代码放置在android目录的packages/app/mem_test目录下面。其中,mem_test是新建的目录。

(1)应用程序的路径如下:

packages/app/mem_test/mem_test.c

 

(2)应用程序的内容如下:

 1 #include <stdio.h>
 2 #include <fcntl.h>
 3 #include <sys/types.h>
 4 #include <sys/stat.h>
 5 #include <string.h>
 6 #include <cutils/log.h>
 7 
 8 
 9 #define BUFFERSIZE            40
10 #define DEV_PATH            "/dev/my_char_dev"
11 #define STR_TRANS            "Hello, Android mem test!"
12 #define STR_NULL            "Hello, Null!"
13 
14 int main( void )
15 {
16     FILE *fp = NULL;
17     char buf[BUFFERSIZE];
18      
19     /*初始化buf*/
20     strcpy(buf, STR_TRANS);
21      
22     /*打开设备文件*/
23     fp = fopen(DEV_PATH,"r+");
24     if (fp == NULL)
25     {
26         printf("Open Memdev0 Error!\n");
27         return -1;
28     }
29      
30     /*写入设备*/
31     fwrite(buf, sizeof(buf), 1, fp);
32     printf(" write %s to %s\n",buf, DEV_PATH);
33      
34     /*重新定位文件位置*/
35     fseek(fp,0,SEEK_SET);
36      
37     /*清除buf*/
38     strcpy(buf,STR_NULL);
39     printf(" before read %s, buf=%s\n", DEV_PATH, buf);
40      
41     /*读出设备*/
42     fread(buf, sizeof(buf), 1, fp);
43     printf(" after  read %s, buf=%s\n", DEV_PATH, buf);
44      
45     return 0; 
46 
47 }
View Code

 

 

(3)应用程序对应的Android.mk的路径如下:

 packages/app/mem_test/Android.mk

 

(4)应用程序对应的Android.mk的内容如下:

1 LOCAL_PATH:= $(call my-dir)
2 
3 include $(CLEAR_VARS)
4 LOCAL_MODULE_TAGS := eng
5 LOCAL_MODULE_PATH := $(TARGET_OUT)/bin
6 LOCAL_SRC_FILES:=mem_test.c
7 LOCAL_SHARED_LIBRARIES := libcutils libc
8 LOCAL_MODULE :=mem_test
9 include $(BUILD_EXECUTABLE)
View Code

 

 

2 编译

(1)导入工程对应的android环境变量,目的是使用mmm命令。下面,我以“三星V210芯片对应的Android2.3”系统为例,说明导入环境变量的方法。

     执行以下命令:

#source build/envsetup.sh
#choosecombo

 

(2)模块编译应用程序,执行以下命令:

#mmm  packages/app/skywang/mem_test

 

执行mmm命令成功后,会生成mem_test可执行文件,路径如下:

out/target/product/smdkv210/system/bin/mem_test

 

 

3 手机运行应用程序

(1)将可执行文件拷贝到手机中,通过以下命令:

#adb push mem_test /system/bin/mem_test

 

(2)添加可执行权限,通过以下命令:

#chmod 777 /system/bin/mem_test

 

(3)确认权限,通过以下命令查看权限:

#ls -l /system/bin/mem_test

 

若显示“-rwxrwxrwx”,则表示第(2)步中添加可执行权限成功。

(4)运行应用程序,通过以下命令:

#cd /system/bin/
#./mem_test

 

注意:执行“./mem_test”之前,必须确保“class_reg_unreg.ko”已成功装载。关于“class_reg_unreg.ko”请参考“Android中字符设备驱动和应用实例(一) 驱动部分

 

运行程序后,会打印信息如下:

write Hello, Android mem test! to /dev/my_char_dev
before read /dev/my_char_dev, buf=Hello, Null!
after read /dev/my_char_dev, buf=Hello, Android mem test!

 

关于该测试程序对应的驱动,请参考“Android中字符设备驱动和应用实例(一) 驱动部分

 

 

posted on 2013-05-15 23:41 如果天空不死 阅读(...) 评论(...) 编辑 收藏