前面学习了字符设备驱动框架的实现。文章地址如下:
本文编写一个测试程序,也就是 Linux的应用程序。来测试字符设备驱动程序是否可用。
这里编写一个应用程序,这个应用程序就会读取前面的设备驱动文件,然后,可以进行 open,read,write,close等等的操作。
测试初衷:当应用程序调用 chrdevbase这个驱动时,驱动涉及的这几个接口是否对应会执行。
这里的测试程序依然写在 前面? 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。