美文网首页
测试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