美文网首页
测试freg驱动的功能内置C程程序

测试freg驱动的功能内置C程程序

作者: 不在服务区_悟空 | 来源:发表于2018-03-24 15:18 被阅读0次

    这是一个系列文章:

    1. Android 内核添加驱动
    2. 测试freg驱动的功能内置C程程序
    3. 添加HAL层代码
    4. 添加JNI层
    5. 框架层添加硬件访问服务

    该系列能对android的从下到上的各层有一个简单的设计,麻雀虽小,五脏俱全。enjoy now!

    在上一节驱动程序已经添加,可是还不知道该驱动程序是否可以正常工作,用该节的代码来验证一下.

    android/external
        ----freg
            ----freg.c
            ----Android.mk
    

    在'android/external'下

    mkdir freg
    

    freg.c

    #include <stdio.h>
    #include <stdlib.h>
    #include <fcntl.h>
    
    #define FREG_DEVICE_NAME "/dev/freg"
    
    int main(int argc, char** argv)
    {
        int fd = -1;
        int val = 0;
    
        fd = open(FREG_DEVICE_NAME, O_RDWR);
        if(fd == -1)
        {
            printf("Failed to open device %s.\n", FREG_DEVICE_NAME);
            return -1;
        }
    
        printf("Read original value:\n");
        read(fd, &val, sizeof(val));
        printf("%d.\n\n", val);
    
        val = 5;
        printf("Write value %d to %s.\n\n", val, FREG_DEVICE_NAME);
            write(fd, &val, sizeof(val));
    
    
        printf("Read the value again:\n");
            read(fd, &val, sizeof(val));
            printf("%d.\n\n", val);
    
        close(fd);
    
        return 0;
    }
    

    freg.c是代码的逻辑实现,先读取'/dev/freg'里面的值,在将写入新值5,再读取出来
    Android.mk

    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE := freg
    LOCAL_SRC_FILES := $(call all-subdir-c-files)
    include $(BUILD_EXECUTABLE)
    

    Android.mk里该bin文件命名为freg

    单编:

    mmm ./external/freg
    

    打包system image:

    make snod
    

    刷入机器,adb shell进入机器,在system/bin/会出现名称叫freg的bin文件.在system/bin/里执行命令:

    ./freg
    

    执行我们写的freg程序,会输出:

          Read the original value:
    
          0.
    
          Write value 5 to /dev/freg.
    
          Read the value again:
    
          5.
    

    我们进入proc/,cat freg,发现值为5.说明修改成功.到此说明驱动的添加没有问题.

    相关文章

      网友评论

          本文标题:测试freg驱动的功能内置C程程序

          本文链接:https://www.haomeiwen.com/subject/kdbqcftx.html