字符设备驱动测试程序

2023-12-21 19:10:35

一. 简介

前面学习了字符设备驱动框架的实现。文章地址如下:

字符设备的注册与注销实现-CSDN博客

本文编写一个测试程序,也就是 Linux的应用程序。来测试字符设备驱动程序是否可用。

二.? 字符设备驱动测试程序的编写

这里编写一个应用程序,这个应用程序就会读取前面的设备驱动文件,然后,可以进行 open,read,write,close等等的操作。

测试初衷:当应用程序调用 chrdevbase这个驱动时,驱动涉及的这几个接口是否对应会执行。

1.? 编写应用程序

这里的测试程序依然写在 前面? 1_chrdevbase工程中。打开 ubuntu系统,使用 vscode打开 1_chrdevbase工程,在该工程下创建一个 chrdevbase_app.c文件。

注意:Linux下一切皆文件,首先要 open 打开设备。

chrdevbase_app.c文件中测试代码如下:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

/*
* 参数说明:
*    argc: 应用程序参数个数
*    argv[]: 具体的参数内容(字符串形式)
*/
int main(int argc, char* argv[])
{
    int fd = 0, ret = 0;
    char read_buf[100] = {0};
    char write_buf[100] = {0};
    char* file_name = NULL;

    file_name = argv[1];

    fd = open(file_name, O_RDWR);
    if(fd < 0)
    {
        printf("%s is open failed!\r\n", file_name);
        return -1;
    }

    ret = read(fd, read_buf, 50);
    if(ret <0)
    {
        printf("%s read data failed!\r\n", file_name);
        return ret;
    }

    ret = write(fd, write_buf, 50);
    if(ret < 0)
    {
        printf("%s write data failed!\r\n", file_name);
        return ret;
    }
    
    ret = close(fd);
    if(ret < 0)
    {
        printf("%s is close failed!\r\n", file_name);
    }

    return 0;
}

编译应用程序,因为是运行在开发板上,所以,需要使用开发板上的编译器来编译测试程序:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/1_chrdevbase$ arm-linux-gnueabihf-gcc chrdevbase_app.c -o chrdevbase_app

编译完成后,会生成 可执行程序 chrdevbase_app。

2.?? 运行测试

文章来源:https://blog.csdn.net/wojiaxiaohuang2014/article/details/135128389
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。