分享

RK3568驱动指南|第二篇 字符设备基础-第15章 文件私有数据实验

 新用户5070CYgq 2024-04-11 发布于北京
瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。

第15章 文件私有数据实验

在之前章节编写的驱动程序中,将生成字符设备的一些硬件属性(设备号、类、设备名称等)全都写成了变量的形式,虽然这样编写驱动代码不会产生报错,但是会显得有点不专业。通常在驱动开发中会为设备定义相关的设备结构体,将硬件属性的描述信息全部放在该结构体中,在本章节中将对设备结构体的功能实现和文件私有数据进行学习。

15.1 文件私有数据简介

Linux中并没有明确规定要使用文件私有数据,但是在linux驱动源码中,广泛使用了文件私有数据,这是Linux驱动遵循的“潜规则”,实际上也体现了Linux面向对象的思想。struct file 结构体中专门为用户留了一个域用于定义私有数据。结构体内容如下所示:

文件私有数据的概念在Linux驱动中有着非常广泛的应用,文件私有数据就是将私有数据private_data指向设备结构体。通过它可以将私有数据一路从open函数带到read, write函数层层传入。一般是在open 的时候赋值,read、write时使用。open函数中私有数据的使用如下所示:

我们可以在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代码如下所示:

15.3 运行测试

然后使用命令“make”进行驱动的编译,编译完成如下图(图15-2)所示:

下面进行驱动程序的测试。

ls /dev/test -al

运行应用程序,如下(图 15-6)所示:

<span .="color: rgb(77, 77, 77); font-family: -apple-system, " sf="" ui="" text",="" arial,="" "pingfang="" sc",="" "hiragino="" sans="" gb",="" "microsoft="" yahei",="" "wenquanyi="" micro="" hei",="" sans-serif;="" font-size:="" 16px;="" font-variant-ligatures:="" no-common-ligatures;="" background-color:="" rgb(255,="" 255,="" 255); style="overflow-wrap: break-word;">在此实验中,将硬件属性的信息全部放在一个结构体private_data,依然可以实现字符设备的操作。

更多内容可以B站搜索:迅为RK3568开发板

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多