linux驱动开发-模块加载卸载命令

一 学习目标:
掌握Linux设备驱动开发中常用的机制和内核资源
中断顶/底半部处理
内核定时器和延时操作
并发控制在内核中的应用
内存管理和分配
阻塞型I/O和非阻塞型I/O

二 驱动特点
驱动的特点:提供能力(机制),而不是提供策略


三 模块部分知识点:
1.模块装载命令
insmod rmmod  lsmod |grep hello
modprobe 加载模块的第二种方法
Insmod和modprobe主要区别
modprobe会考虑要装载的模块是否引用了一些当前内核不存在的符号。如果有这类引用,modprobe会在当前模块路径中搜索定义了这些符号的其他模块,并同时将这些模块也装载到内核。如果在这种情况下使用insmod,该命令则会失败,并在系统日志文件中记录“unresolved symbols(未解析的符号)”消息。
2.
模块也可以拥有参数数组
形式为“module_param_array(数组名,数组类型,数组长,参数读/写权限)”。
运行insmod或modprobe命令时,应使用逗号分隔输入的数组元素
装载模块时改变参数:
可通过insmod或modprobe
insmod hello_ext.ko howmany=5 whom="Students" 
modprobe也可以从它的配置文件(/etc/modprobe.conf)读取参数的值

3.导出符合
EXPORT_SYMBOL_GPL(name);  GPL 版本的宏定义的导出符号只能对 GPL 许可的模块可用

EXPORT_SYMBOL是Linux内核中一个常见的工具,其作用是讲一个”Symbol”(函数或者变量)导出到内核空间,使得内核的所有代码都可以使用
4.模块声明与描述 

MODULE_AUTHOR(author); ---声明模块的作者 
MODULE_DESCRIPTION(description); ---声明模块的描述
MODULE_VERSION(version_string); ---声明模块的版本 
MODULE_DEVICE_TABLE(table_info); ---声明模块的设备表
MODULE_ALIAS(alternate_name); ---声明模块的别名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值