嵌入式Linux设备驱动程序开发指南(原书第2版)
上QQ阅读APP看书,第一时间看更新

3.6 实验3-2:“带参数的helloworld”模块

许多Linux可加载内核模块(LKM)都可以在加载时、系统启动时或者系统运行时设置其参数。在这个内核模块中,你将通过命令行提供模块加载时需要设置的参数。你也可以通过sysfs文件系统读取这些参数。

sysfs是Linux内核提供的一个虚拟文件系统。内核通过虚拟文件将内核设备模型中的各种内核子系统、硬件设备以及关联的设备驱动信息导出到用户态。除了提供关于各种设备以及内核子系统的信息,这些导出的虚拟文件也被用于对它们进行配置。

模块参数的定义通过module_param()宏实现。

071-02

该驱动的主要代码段描述如下:

1. 在#include语句之后,声明一个新的整型变量num并在module_param()宏中使用:

071-03

2. 修改hello_init()函数中的pr_info语句如下:

072-01

3. 在my_modules工程中创建一个新文件helloword_with_parameters.c。在Makefile中将helloworld_with_parameters.o添加到obj-m变量。然后使用Eclipse构建并部署模块。

072-02

4. 在接下来的代码清单3-3中查看针对i.MX7D处理器的“带参数的helloworld”驱动源代码(helloworld_imx_with_parameters.c)。

注意:针对SAMA5D2(helloworld_sam_with_parameters.c)和BCM2837(helloworld_rpi_with_parameters.c)的驱动源代码可以从本书的GitHub仓库下载。