购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 实验3-1:“helloworld”模块

在你的第一个内核模块中,每次加载或者卸载模块时你将向控制台简单地发送一些信息。 hello_init() hello_exit() 函数包含了一个 pr_info() 函数。 pr_info() 函数的语法很像你在用户态应用程序中使用的printf,唯一的区别就在于: pr_info() 是用来在内核态打印日志消息。如果查看实际的内核代码,你经常会看到这样的代码:

069-01

KERN_ERR是定义在 include/linux/kern_levels.h 文件中的八个不同日志级别之一,用于指定错误消息的严重性。位于 include/linux/printk.h 中的以pr_开头的宏是相应的printk调用的快捷定义。在新开发的驱动中,应该使用这些宏。

在1.12.2节中,你使用Eclipse集成开发环境创建了 my_modules 工程。这个工程将被用于开发本书中的所有驱动。如果你不想使用Eclipse,也可以使用你喜欢的文本编辑器来编写驱动。创建并保存在模块实验目录下的 helloworld.c Makefile 文件还没有任何代码。是时候往里面写入代码了。

在后续的实验中,你会重复同样的步骤来创建驱动对应的源代码文件 <module name>.c 。通过简单地把 <module name>.o 加到 Makefile 变量 obj-m 中,所有的实验将复用同一个 Makefile

Build Targets 标签中,增加了 all deploy clean 三个按钮来编译、清理和部署所有实验开发的模块。

在接下来的代码清单3-1中查看针对i.MX7D处理器的“helloworld”驱动程序源代码( helloworld_imx.c )。

注意: 针对SAMA5D2( helloworld_sam.c )和BCM2837( helloworld_rpi.c )的驱动程序源代码可以从本书的GitHub仓库下载。 9KQbUKasMCtUpqXEjPnu8jDwV80TT2M1W71ogVXEv09VIkBwmXtPzxCPr14ZRCKV

点击中间区域
呼出菜单
上一章
目录
下一章
×