HAL(2) -- 编写android C可执行文件调用驱动
来源:互联网 发布:ati hd 5770 mac 编辑:程序博客网 时间:2024/06/11 22:14
HAL -- (2):编写android C可执行文件调用驱动
在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序。在这个名为zhx_pritn的Linux内核驱动程序中,我们实现了基本的都一个整形int数据的读写。在这一篇文章里,我们将通过自己编写的C可执行程序来访问设备文件/dev/zhx_print。可能读者会觉得奇怪,怎么能在Android系统中用C语言来编写应用程序呢?Android系统上的应用程序不都是Java应用程序吗?其实是可以的,读者不妨用adb shell命令连上Android模拟器,在/system/bin目录下可以看到很多C可执行程序,如cat命令。今天,我们就来学习一下怎么在Android系统中添加用C语言编写的可执行程序.
一.:参照HAL(1):编写android内核驱动 一文,准备好Linux驱动程序。使用Android模拟器加载包含这个Linux驱动程序的内核文件,并且使用adb shell命令连接上模拟,验证在/dev目录中存在设备文件zhx_print。
二:进入到Android源代码工程的external目录,创建zhx_print目录:
USER-NAME@MACHINE-NAME:~/Android$ cd external
USER-NAME@MACHINE-NAME:~/Android/external$ mkdir zhx_print
USER-NAME@MACHINE-NAME:~/Android/external$ mkdir zhx_print
三:进入zhx_print目录,创建print.c文件
print.c
#include<stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#define PRINT_NAME "/dev/zhx_print"
int main(void)
{
int fd = -1;
int val = 101;
fd = open(PRINT_NAME,O_RDWR) ;
if(fd == -1)
{
printf("open zhx_print error.\n");
return 0;
}
printf("Read value\n");
read(fd,&val,sizeof(val));
printf("value = %d\n",val);
printf("write value\n");
val = 100;
write(fd,&val,sizeof(val));
val = 0;
printf("Read value again\n");
read(fd,&val,sizeof(val));
printf("value = %d\n",val);
close(fd);
return 0;
}
#include <stdlib.h>
#include <fcntl.h>
#define PRINT_NAME "/dev/zhx_print"
int main(void)
{
int fd = -1;
int val = 101;
fd = open(PRINT_NAME,O_RDWR) ;
if(fd == -1)
{
printf("open zhx_print error.\n");
return 0;
}
printf("Read value\n");
read(fd,&val,sizeof(val));
printf("value = %d\n",val);
printf("write value\n");
val = 100;
write(fd,&val,sizeof(val));
val = 0;
printf("Read value again\n");
read(fd,&val,sizeof(val));
printf("value = %d\n",val);
close(fd);
return 0;
}
四:在zhx_print目录下创建Android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := zhx_print
LOCAL_SRC_FILES := $(call all-subdir-c-files)
include $(BUILD_EXECUTABLE)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := zhx_print
LOCAL_SRC_FILES := $(call all-subdir-c-files)
include $(BUILD_EXECUTABLE)
五:在zhx_print目录下执行以下命令:
/ics/external/zhx_print$ mm
六:在android源码目录下执行以下命令:
ics$ make snod
ok 到这里,就在android系统上添加了 zhx_print可执行程序,
七:在android系统里面执行以下命令:
root@android:/system/bin# ./zhx_print
./zhx_print
Read value
value = 20
write value
Read value again
value = 100
root@android:/system/bin#
./zhx_print
Read value
value = 20
write value
Read value again
value = 100
root@android:/system/bin#
到这里就可以看到效果了!!!
- HAL(2) -- 编写android C可执行文件调用驱动
- HAL(1) -- 编写android内核驱动
- android hal 学习——编写android内核驱动
- 编写android HAL代码
- Android HAL驱动开发
- android 编写简单可执行文件
- c编写,交叉编译成android下二进制可执行文件
- Android HAL调用流程
- 编写android HAL举例: lights
- Android架构实例分析之编写hello驱动的HAL层代码
- Android 怎么样调用HAL的
- Android HAL介绍及调用
- android hal学习——编写hal代码
- android hal学习——编写hal代码【转】
- Android GPIO LED 驱动与HAL分析
- Android GPIO LED 驱动与HAL分析
- Android GPIO LED 驱动与HAL分析
- android HAL访问linux内核驱动
- MFC之CString对象的各种函数
- Axis2与Android的Json(Gson)通信传数据
- mysql查询语句in和exists二者的区别和性能影响
- TCP内核参数
- ThreadLocal使用示例
- HAL(2) -- 编写android C可执行文件调用驱动
- Python实例讲解 -- wxpython 基本的控件 (文本)
- 奇虎360今天发布了未经审计的第二季度财报
- C语言中判断CPU大小端的方法
- Python实例讲解 -- 操作数据库 附mysqldb win32 py2.7下载
- ios的category
- LayoutInflater的用法总结
- HAL(3) -- 增加硬件抽象层(HAL)模块访问内核驱动程序
- C语言函数指针基础