没有合适的资源?快使用搜索试试~ 我知道了~
1. 设备驱动定义 2. 模块 4. 重要的数据结构 5. 字符设备 2. 如果申请的设备编号范围的主设备号为 0,那么表示设备驱动程序请求动态分配一个主设备号
资源详情
资源评论
资源推荐
1. 设备驱动定义
设备驱动程序是一个软件层,该软件层使硬件响应预定义好的编程接口,我们已经熟
悉了这种接口,它由一组控制设备的 VFS 函数(open,read,lseek,ioctl 等)组成,这些函数实
际实现由设备驱动程序全权负责。
2. 模块
2.1 模块定义:可在运行时添加到内核中的代码被称为“模块”。
2.2 模块优点:
(1)模块化方法
因为任何模块都可以在运行时被链接和解除链接,因此,系统程序员必须提出明确
定义的软件接口以访问由模块处理的数据结构,这使得开发新模块变得容易;
(2)平台无关性
即使模块依赖于某些特殊的硬件特点,但它不依赖于某个固定的硬件平台;
(3)节省内存使用
当需要模块功能时,把它链接到正在运行的内核中,否则,将该模块解除链接;
(4)无性能损失
模块的目标代码一旦被链接到内核,起作用与静态链接的内核代码完全等价;
2.3 模块的组成:
(1)模块加载函数(必须)
(2)模块卸载函数(必须)
(3)模块许可证声明(必须)
(4)模块参数(可选)
(5)模块导出符号(可选)
(6)模块作者等信息声明(可选)
3. Hello world 模块
3.1 为什么用 printk
Printk 函数是在内核中定义的,功能作用与 C 库中
的 printf 函数类似。内核运行时不能依赖 C 库,模块连
接内核后可以访问内核的公用符号(函数、变量等)。
3.2 加载、卸载函数
__init 标识的函数,在初始化调用后,即可释放内
存。
#include<linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL"); //许可
证声明
static int hello_init(void) //加载函数
{
printk(KERN_ALERT "Hello, world
enter");
return 0;
}
static void hello_exit(void) //卸载函数
{
printk(KERN_ALERT "hello world
exit");
}
shkpwbdkak
- 粉丝: 30
- 资源: 300
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- IMG_0694.GIF
- 基于图像的三维模型重建C++源代码+文档说明(高分课程设计)
- 基于聚焦法的工件立体测量方案,根据数据进行三维重建 使用HALCON处理图像,MATLAB拟合数据+源代码+数据集+效果图
- 锄战三国村 修改:货币使用不减 v1.10(2) 原创 (中文).apk
- 基于python实现的单目双目视觉三维重建+源代码+图像图片(高分课程设计)
- 基于C+++OPENCV的全景图像拼接源码(课程设计)
- 基于Python+OpenCV对多张图片进行全景图像拼接,消除鬼影,消除裂缝+源代码+文档说明+界面截图(高分课程设计)
- 基于C++实现的全景图像拼接源码(课程设计)
- 基于SIFT特征点提取和RASIC算法实现全景图像拼接python源码+文档说明+界面截图+详细注释(95分以上课程大作业)
- 基于matlab实现眼部判别的疲劳检测系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0