文件私有数据的概念在Linux驱动中有着非常广泛的应用,文件私有数据就是将私有数据private_data指向设备结构体。通过它可以将私有数据一路从open函数带到read, write函数层层传入。一般是在open 的时候赋值,read、write时使用。open函数中私有数据的使用如下所示:
在上述代码中,定义了一个设备结构体dev1,然后在open函数中,将私有数据private_data指向了设备结构体dev1。
我们可以在read write函数中通过private_data访问设备结构体,如下所示:
15.2 实验程序编写
15.2.1 驱动程序编写
本驱动程序对应的网盘路径为:iTOP-RK3568开发板【底板V1.7版本】\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动例程\10\module。
本章实验将编写Linux下的使用文件私有数据实例代码,在open函数中对私有数据结构体赋值,在write函数中使用。编写完成的代码如下所示:
15.2.2 编写测试 APP
本应用程序对应的网盘路径为:iTOP-RK3568开发板【底板V1.7版本】\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动例程\10\app。
编写测试APP其实是在编写Linux应用,在应用程序中向设备文件写入数据,编写完成的应用程序app.c代码如下所示:
对于Makefile的内容注释已在上图添加,保存退出之后,来到存放file.c和Makefile文件目录下,如下图(图15-1)所示:
然后使用命令“make”进行驱动的编译,编译完成如下图(图15-2)所示:
编译完生成 file.ko目标文件,如下图(图15-3)所示:
至此我们的驱动模块就编译成功了,下面进行应用程序编译,
15.3.2 编译应用程序
因为测试APP是要在开发板上运行的,所以需要aarch64-linux-gnu-gcc来编译,输入以下命令,编译完成以后会生成一个app的可执行程序,如下图(图15-4)所示:
aarch64-linux-gnu-gcc app.c -o app
下面进行驱动程序的测试。
驱动加载成功之后会生成/dev/test设备驱动文件,输入以下命令查看杂项设备的主次设备号。
ls /dev/test -al
结果如下图(图15-6)所示:
运行应用程序,如下(图 15-6)所示:
在此实验中,将硬件属性的信息全部放在一个结构体private_data,依然可以实现字符设备的操作。
更多内容可以B站搜索:迅为RK3568开发板