【迅为工业RK3568稳定可靠】itop-3568开发板驱动开发第4章驱动模块传参实验

描述


选择迅为开发板,就是选择完整的技术保障体系

    在RK3568核心板同质化日趋严重的今天,载板的设计与用料才是真正区分“玩具”与“工具”的分水岭。迅为RK3568开发板凭借其工业级设计理念,将RK3568的强劲算力安全、可靠地输送到每一个工业应用节点。

迅为科技为您提供全方位支持:

· 完整资料库:提供数据手册、硬件原理图、源码包、编译指南等
· 技术保障:资深工程师团队提供专业的技术支持服务
· 持续更新:系统源码持续维护,定期发布功能更新与优化
· 工业级品质:-40℃至+85℃宽温设计,满足严苛工业环境需求

对于正在开发工业控制器、边缘计算网关、机器视觉设备或智能NVR的开发者而言,迅为提供的稳定平台和完善支持,正是项目成功的关键保障。

 

开发板

 

开发板

 

第4章 驱动模块传参实验

 

本章我们学习驱动模块传参,加载内核模块时使用 insmod 命令也可以传递参数。 

4.1 内核模块传参简介 

内核模块传参是一种可以随时向内核模块传递、修改参数的方法。例如可以传递串口驱 

动的波特率、数据位数、校验位、停止位等参数进行功能的设置,从而节省编译模块的时间, 

提高调试速度。 

Linux 内核提供了 module_param(name, type, perm)、module_param_array(name, type, nu 

mp, perm)宏和 module_param_string(name, string, len, perm)宏,分别进行基本类型、数组和字 

符串参数的传递。这些宏定义在内核源码/include/linux/moduleparam.h 文件中(在 module.h 头文 

件中已经对 export.h 头进行引用,所以不需要单独引用 moduleparam.h 文件),详细定义如代码 4. 

1 所示:

开发板

module_param 宏用来进行基本类型参数的传递。其中参数 name 表示模块参数的名称。

参数 type 表示模块参数的数据类型,参数 type 可以取以下任意一种情况:

 

 

开发板

参数 perm 表示在 sysfs 中相应文件的访问权限。访问权限与 Linux 中访问权限管理相同, 

权限可以使用数字如 0666 或者使用内核源码/include/linux/stat.h 文件宏定义表示,如代码清单 

4.3 所示。

 

开发板

 

如果要传递数组类型参数可以使用 module_param_array 宏,module_param_array 宏相较 

于 module_param 宏多了 n_para 参数,该参数用来表示传递参数个数,因为 n_para 参数值会根 

据输入的参数个数而改变,所以 n_para 的最终值为传递的数组元素个数。 

最后是 module_param_string(name, string, len, perm)宏,改用来传递字符串类型的变量,四 

个参数的定义如下所示: 

l name:外部传入的参数名,即加载模块时的传入值 

l string:内部的变量名,即程序内定义的参数名 

l len:以 string 命名的 buffer 大小(可以小于 buffer 的大小,但是没有意义) 

l perm:模块参数的访问权限 

如代码清单 4.4 使用 module_param_string(name, string, len, perm)宏传递字符串类型变量str。

 

开发板

 

4.2 实验程序的编写 

本实验代码存放在 iTOP-RK3568 开发板【底板 V1.7 版本】\03_【iTOP-RK3568 开发板】 

指南教程\02_Linux 驱动配套资料\04_Linux 驱动例程\02 目录下。 

parameter.c 代码实现通过 insmod 命令加载内核模块时候实现参数传递,并将传递给内核模 

块的参数打印到串口终端上。其代码如代码清单 4.5 所示。

开发板

 

代码清单 4.5 将传递 int 类型参数 number、char 类型参数 name、int 类型的数组 para 和 char 

类型字符串 str1,并在驱动入口函数中对各个参数值进行打印。

4.3 运行测试 

4.3.1 编译驱动程序 

在 parameter.c 代码同一目录下创建 Makefile 文件,如图 4.1 所示。

开发板

 

Makefile 文件内容如代码清单 4.6 所示.

代码清单 4.6

开发板

 

使用命令 make 编译驱动程序,编译成功如图 4.2 所示。

开发板

编译完生成 parameter.ko 目标文件,如下图 4.3 所示

开发板

 

4.3.2 运行测试 

使用 insmod 命令加载内核模块实现内核模块传参,命令格式为: 

insmod 对应的模块 参数 

parameter.ko 内核模块可以传递 3 个参数,使用以下命令分别传递为 int 类型的参数 

number,char 类型的参数 name 和 int 数组类型的参数 para。 

insmod parameter.ko number=100 name="topeet" para=0,1,2,3,4,5,6,7 str="itop" 

打印信息如图 4.4 所示:

开发板

 

通过图 4.4 可以看出传递的参数都分别打印了出来。输入 rmmod parameter.ko 命令可以卸 

载驱动。打印信息如图 4.5 所示:

开发板

 

迅为定制服务:根据项目需求提供硬件定制和软件适配服务

获取更多支持:

· 访问迅为查看itop-3568开发板驱动开发指南完整技术文档
· 加入迅为技术交流群获取实时支持
· 联系销售获取定制化解决方案

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分