Linux驱动——驱动模块初次加载成功,后面失败 failed with error -38
个人声明:转发请注明出处,个人原创,实属不易。本人水平有限,文章若有不妥之处,还请留言批评指正,不胜感激。
设备树下platform的驱动模块加载 failed with error -38
初次加载成功,后面均无法加载,必须重启开发板才能重新加载,运行提示如下:
/lib/modules/4.1.15 # depmod
/lib/modules/4.1.15 # modprobe dtsplatformled.ko
dts platform led probe!
node is found!
led-gpio num = 3
major is 249, minor is 0
/lib/modules/4.1.15 # depmod
/lib/modules/4.1.15 # rmmod dtsplatformled.ko
dts platform led remove!
/lib/modules/4.1.15 # modprobe dtsplatformled.ko
dts platform led probe!
node is found!
led-gpio num = 3
can't request led gpio!
imx6ull-led: probe of gpioled failed with error -38
通过打印的提示信息“can’t request led gpio!”可知第二次加载驱动时LED的GPIO已经被占用了,但是这期间又没有其他的驱动加载使用到此IO,那就只有一个原因:上一次卸载驱动时没有释放LED的GPIO,导致系统还占用着,所以后面再加载驱动申请此IO时肯定就失败了。
检查程序,果然发现了在led_remove(struct platform_device *dev)函数体内部没有调用gpio_free()函数释放对应的GPIO,这一部分代码补全后如下:
static int led_remove(struct platform_device *dev)
{gpio_set_value(led.dev_gpio,1); // turn off the LEDgpio_free(led.dev_gpio);device_destroy(led.class,led.devid);class_destroy(led.class);cdev_del(&led.cdev);unregister_chrdev_region(led.devid,DTSPLATFORM_DEV_CNT);printk("dts platform led remove!\r\n");return 0;
}
所以测试驱动检测bug的一个简单方法:写完一个驱动之后,反复的加载—卸载多次,如果没有出现问题,就说明此驱动至少是可以运行,但不排除还有其他bug!!!
Linux驱动——驱动模块初次加载成功,后面失败 failed with error -38相关推荐
- WebView监听网页加载成功与失败
问题说明: 现在好多APP在应用中会内嵌webview,好多时候需要监听webview是否加载成功与失败.当加载成功的时候会回调WebViewClient的onPageFinished方法:当加载失败 ...
- linux直接运行程序加载动态库失败,扣丁学堂Linux培训详解程序运行时加载动态库失败解决方法...
今天扣丁学堂Linux培训老师给大家介绍一下关于Linux程序运行时加载动态库失败的解决方法,希望对同学们学习有所帮助,下面我们一起来看一下吧. Linux下不能加载动态库问题 当出现下边异常情况 . ...
- Linux驱动之内核加载模块过程分析
Linux内核支持动态的加载模块运行:比如insmod first_drv.ko,这样就可以将模块加载到内核所在空间供应用程序调用.现在简单描述下insmod first_drv.ko的过程 1.in ...
- js校验图片是否加载成功或失败
onload :事件会在页面或图像加载完成后立即发生. onerror: 事件在加载外部文件(文档或图像)发生错误时触发. 验证图片成功方法: let IMG =new Image(); IMG.sr ...
- linux驱动之可加载模块
Linux 的众多优良特性之一就是可以在运行时扩展由内核提供的特性的能力. 这意味着你可以在系统正在运行着的时候增加内核的功能( 也可以去除 ). 每块可以在运行时添加到内核的代码, 被称为一个模块. ...
- 页面加载成功后调用_在微信小程序里实现图片预加载组件
网页中的图片预加载 我们知道在 Web 页面中实现图片的预加载其实很简单,通常的做法是在 JS 中使用 Image 对象即可,代码大致如下 var image = new Image() image. ...
- sn9c291 驱动加载成功,mpayer无法播放
先目前将一个sn9c291+ov9712的模块驱动在fedora上加载成功,可是在使用mplayer却无法播放,不知道为何? 前后对比发现dev目录下多了video0,video1 设备节点已经出来, ...
- Linux系统开机自动加载驱动module
Linux系统的驱动默认存放目录为: /lib/modules/$(uname -r)/kernel/drivers,因此如果希望系统可以启动时自动加载驱动必须首先把驱动放到该目录下面,执行完此步操作 ...
- 驱动开发:判断自身是否加载成功
在驱动开发中我们有时需要得到驱动自身是否被加载成功的状态,这个功能看似没啥用实际上在某些特殊场景中还是需要的,如下代码实现了判断当前驱动是否加载成功,如果加载成功, 则输出该驱动的详细路径信息. 该功 ...
最新文章
- UVA 572 BFS 图论入门
- TensorFlow MNIST (Softmax)
- ModuleNotFoundError: No module named 'djqscsv'
- Android设计模式之——观察者模式
- 计算机辅助开始于计算机发展的第几个阶段,计算机辅助开始于计算机发展第几阶段...
- python对比两组字符串差异_python – 比较两个不同文件中的字符串的脚本
- 数据结构 7并查集(DISJOINT SET)
- javascript循环语句及函数
- c++ opengl 三维图形中显示文字_opengl基本流程
- 第7章 航空公司客户价值分析
- C(每日一题)——数据结构——创建一个线性链表(详细过程)
- 名人博客VS 博客名人
- 用PySimpleGui做户籍资料查询工具
- 区块链最可能大规模应用场景:社交网络和共享经济
- IPv6地址的无状态自动配置
- centos7 杀不死 httpd (Apache )
- 有一种感觉叫清风细雨
- 陀螺仪偏航角的夹角计算方法
- 【泛函分析MOOC笔记】(一)拓扑和拓扑空间
- iOS15第二个测试版发布!修复大量bug,稳定性提升