内核模块实验2
2022/8/25 6:24:09
本文主要是介绍内核模块实验2,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
修改驱动模块代码位置及路径
- 之前实验编译的lx_hello.ko是在内核源码目录文件夹中直接添加的,不方便查看阅读,因此将代码移出。
-修改Makefile 如下
KERNELDIR := ~/project/lx/android11_v2/RK3568_Android11/kernel CURRENT_PATH := $(shell pwd) obj-m := lx_hello.o build: kernel_modules kernel_modules: $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules clean: $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
- 编译的时候需要使用
make ARCH=arm64
来进行编译。
内核模块传递参数
模块参数简介
根据不同应用场合给内核模块传递不同参数,提高内核模块灵活性,比如设置串口驱动波特率等参数。运行时可以类似普通命令一样进行参数的传递,内核提供了一种形式支持这种行为,就做模块参数。
模块参数的使用
- 定义一个常见变量,内核支持的参数类型有:bool、invbool(bool取反)、charp(字符串指针)、short、int、long、ushort、uint、ulong。
- 使用
module_param
,或者module_param_array
宏把传参值赋给变量
module_param(name, type, perm) module_param_array(name, type,nump, perm)
-
name:参数名
-
type:参数类型,如int、byte、bool、
charp... -
nump: 数组元素个数的指针
-
perm:读写权限
- 不允许设置可执行权限
- 在“/sys/module/模块名/parameters”目录下,会生成该参数对应的文件名
-
函数源码如下
#include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> static int itype; module_param(itype,int,0644); static bool btype=0; module_param(btype,bool,0644); static char ctype=0; module_param(ctype,byte,0); static char *stype=0; module_param(stype,charp,0644); static int __init module_param_init(void) { printk(KERN_ALERT "param init!\n"); printk(KERN_ALERT "itype=%d\n",itype); printk(KERN_ALERT "btype=%d\n",btype); printk(KERN_ALERT "ctype=%d\n",ctype); printk(KERN_ALERT "stype=%s\n",stype); return 0; } static void __exit module_param_exit(void) { printk(KERN_ALERT "param exit!\n"); } module_init(module_param_init); module_exit(module_param_exit); MODULE_AUTHOR("lx"); MODULE_DESCRIPTION("功能描述"); MODULE_VERSION("1.0"); MODULE_LICENSE("GPL v2");////告诉内核该模块具有GNU公共许可证
符号共享
内核模块可以共享导出的符号表
- 变量共享
- 函数共享
EXPORT_SYMBOL(sym)
- sym:变量名或者函数名
查看符号表
cat /proc/kallsyms | grep xxx
这篇关于内核模块实验2的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南
- 2024-12-21功能权限实战:新手入门指南
- 2024-12-21后台管理开发项目实战:从入门到独立开发