从LINUX 驱动 到APK (2)

通过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 及结果 即完成代码

原文地址:https://www.cnblogs.com/atlas2016/p/7574357.html