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

  • 相关阅读:
    centos7下磁盘空间调整
    centos7下 查看CPU、内存、磁盘的使用情况
    centos7中Spark集群的安装与配置(Hadoop2.6.5+spark2.3.3)
    linux下mysql ---- Host '' is not allowed to connect to this MySQL server
    11-1、多线程
    10-2、对象的序列化和反序列化
    9-1、注解
    8-1、泛型
    7-1、集合
    6-1、异常处理
  • 原文地址:https://www.cnblogs.com/atlas2016/p/7574357.html
Copyright © 2020-2023  润新知