字符设备驱动的理解

一、 字符设备驱动主要是对fs.h里面的file_operations里的open、read、write、close等等一些函数的实现

二、 字符设备驱动可以编译进kernel(内核)里面,也可以编译成模块,再测试的时候直接运行模块(.ko)即可。

#三、 模块的加载与删除moudle_init(chrdevbase_init),模块的入口,当加载模块的时候,会调用里面的chrdevbase_init函数 moudle_close(chrdevbase_close),模块的出口,退出模块的时候,会调用里面的chrdevbase_close函数

四、 模块的加载与驱动: 加载命令:insmod和modprobe,加载的时候,module_init 函数用来向 Linux 内核注册一个模块加载函数,当使用“insmod”命令加载驱动的时候,xxx_init 这个函数就会被调用,。module_exit()函数用来向 Linux 内核注册一个模块卸载函数,参数 xxx_exit 就是需要注册的具体函数,当使用“rmmod”命令卸载具体驱动的时候 xxx_exit 函数就会被调用。

五、 insmod和modprobe的区别: insmod命令不能解决模块的依赖关系,比如 drv.ko 依赖 first.ko 这个模块,就必须先使用 insmod 命令加载 first.ko这个模块,然后再加载 drv.ko 这个模块。但是 modprobe 就不会存在这 个问题,modprobe会分析模块的依赖关系,然后会将所有的依赖模块都加载到内核中,因此 modprobe 命令相比 insmod 要智能一些 使用 modprobe 命令可以卸载掉驱动模块所依赖的其他模块,(慎重) 当第一次加载模块之后,就会生成文件并且会调用初始化函数,如果不卸载的话,同一名字的模块不会被加载进去(不会调用初始化函数)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值