基于内核提供的pwm驱动器驱动编写pwm的字符设备驱动程序——收获

1、遇到权限问题:insmod: cannot insert 'learn_pwm.ko': Operation not permitted

解决方法:这次遇到这个问题是因为在模块入口函数里面出现问题后,没有及时清掉已经获得的内容。

教训:在驱动的入口模块函数里面,要注意内容申请的顺序,在判断错误的地方按顺序移除已经分配的内容,alloc_chrdev_region函数在入口函数和出口函数中都应该是最后一个运行的。

 

2、遇到的问题:对于一些函数的返回值不明确,导致错误判断,从而导致正确的程序运行错误

解决方法:查看函数的原型,在sourceInsight中可以ctrl+鼠标单击目标函数,获得原型函数说明。

教训:要对函数返回值有确定的判断,不能猜测。

3、遇到的问题:卸载驱动出错

解决方法:申请到的pwm结构体不需要在卸载函数中释放

教训:不是所有的内容都要在卸载(出口)函数中释放,在其它地方也可以释放,比如关闭函数,可以用于释放pwm。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值