驱动测试之编写测试应用程序APP上

目录

一、编写测试文件

1、创建测试APP文件 

2、头文件查询 

3 、main函数

 二、驱动测试 

1、编译、复制

2、驱动加载 

3、创建设备节点

4、运行 chrdevbaseAPP测试


应用程序使用到的函数在具体驱动程序中都有与之对应的函数
比如应用层open\read对应驱动open\read等

一、编写测试文件

1、创建测试APP文件 

创建一个chrdevbaseAPP.c文件

2、头文件查询 

添加头文件,头文件可以通过man手册来查询,比如查询使用open函数需要用到那些头文件

在终端输入命令“ man 2 open”,就出现如下图

可以看到有三个头文件,这就是会涉及的,复制到 chrdevbaseAPP.c文件中即可,按“q”退出页面

man 1 是查询标准命令,man 2 是查询系统调用, man 3 是查询库函数

 下面是编写chrdevbaseAPP.c文件代码

/*这是会用到的头文件*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>

3 、main函数

main函数代码

/*
    argc:应用程序参数个数(argv数组元素个数)
    argv:具体参数,也可以写作char **argv
*/
int main(int argc, char *argv[])
{
    int ret = 0; /*通过ret接收缓冲区数据和返回值*/
    int fd = 0;  /*用于接受返回的文件描述符*/

    char readbuf[100];  /*读缓冲区*/
    char writebuf[100]; /*写缓冲区*/
    char *filename;     /*用于接受文件名*/

    filename = argv[1]; /*把文件名存放在数组中调用*/
    /*
        描述:    open
        fd:     文件名(包括路径)
        O_RDWR: 为可读可写权限
    */
    fd = open(filename, O_RDWR);
    if (fd < 0)
    {
        printf("can't open file %s\r\n", filename);
        return -1;
    }
    /*
        描述:       read
        fd:         文件描述符
        readbuf:    缓冲区
        50:         读取50个数据
    */
    ret = ssize_t read(fd, readbuf, 50);
    if (ret < 0)
    {
        printf("read file %s failed\r\n", filename);
    }
    /*
        描述:      write
        fd:         文件描述符
        writebuf:    缓冲区
        50:         读取50个数据
    */
    ret = write(fd, writebuf, 50);
    if (ret < 0)
    {
        printf("write file %s failed\r\n", filename);
    }
    /*
        描述:      close
        fd:         文件描述符
    */
    ret = close(fd);
    if (ret < 0)
    {
        printf("close file %s failed\r\n", filename);
    }

    return 0;
}

 二、驱动测试 

1、编译、复制

输入下面命令编译

arm-linux-gnueabihf-gcc chrdevbaseAPP.c -o chrdevbaseAPP

复制到开发板源码目录下 

 sudo cp ./chrdevbaseAPP /home/ubantu22/nfs/rootfs/lib/modules/4.1.15/

2、驱动加载 

 打开开发板,先加载驱动

查看一下设备号

cat /proc/devices 

 

有“200”设备号,说明已经加载驱动了 

3、创建设备节点

驱动加载成功需要在/dev 目录下创建一个与之对应的设备节点文件,应用程序就是通过操作这个设备节点文件来完成对具体设备的操作。输入如下命令创建/dev/chrdevbase 这个设备节点文件

mknod /dev/chrdevbase c 200 0

“mknod”是创建节点命令,“/dev/chrdevbase”是要创建的节点文件

“c”表示这是个字符设备,“ 200”是设备的主设备号,“ 0”是设备的次设备号

 chrdevbaseAPP 想要读写 chrdevbase 设备,直接对/dev/chrdevbase 进行读写操作即可
相当于/dev/chrdevbase 这个文件是 chrdevbase 设备在用户空间中的实现

4、运行 chrdevbaseAPP测试

 ./chrdevbaseAPP  /dev/chrdevbase

/dev/chrdevbase为操作的设备驱动文件

可以看到APP里面的函数都已经执行 ,说明驱动是没问题的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值