通过c语言实现对对应节点的操作修改对应的参数值
此次在实现了对应的内核驱动的基础上实现linux应用程序访问对用的驱动节点的过程。实现过程:添加对用的实现文件,添加编译规则,编译实现
1、添加对用的实现文件
选择合适的位置存放相关源码,本次我存放在:vendorwelcome 目录下,新建welcome.c
Tips:在编译出现未定义的情况,有可能是内核升级后没有对应的头文件,可以linux下使用终端man 函数名 可以看到函数使用及定义的相关头文件,添加即可
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> //驱动节点为内核生成的节点 #define DEVICE_NAME "/dev/welcomf" int main (int argc,char** argv){ int fd = -1; int val = 0; fd = open(DEVICE_NAME,O_RDWR); if(fd == -1){ printf("Failed to open device %s.%m ",DEVICE_NAME); return -1; } printf("Read original value : "); read(fd,&val,sizeof(val)); printf("val = %d. ",val); val = 2; printf("write value %d to %s. ",val,DEVICE_NAME); write(fd,&val,sizeof(val)); printf("Read value again : "); read(fd,&val,sizeof(val)); printf("val = %d. ",val); return 0; }
2、添加编译规则 在此目录下添加 Android.mk
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS:=optional
LOCAL_MODULE:=welcomebin
LOCAL_SRC_FILES:=$(call all-subdir-c-files)
include $(BUILD_EXECUTABLE)
3、编译实现 直接编译模块 mmm vendor/welcome
然后打包下载 ,或者直接将生产的bin文件使用adb push到system/bin 目录即可----如果不能使用注意节点权限问题
通过adb 进入到相应目录运行该bin文件即可。能正确输出log 及结果 即完成代码