Linux驱动模块加载失败
2021/6/30 7:21:54
本文主要是介绍Linux驱动模块加载失败,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Linux驱动模块加载失败
个人声明:转发请注明出处,个人原创,实属不易。本人水平有限,文章若有不妥之处,还请留言批评指正,不胜感激。
提示:
/lib/modules/4.1.15 # modprobe gpioled.ko gpioled node is found! led-gpio num = 3 can't request led gpio! gpioled node is found! led-gpio num = 3 can't request led gpio! modprobe: can't load module gpioled.ko (gpioled.ko): Invalid argument
查找原因:
can’t request led gpio!
->can’t load module gpioled.ko
->Invalid argument
据原子哥提示,GPIO请求失败,很大概率是GPIO使用冲突了!!!
打开Linux内核源码,找到自己开发板对应的设备树源文件XXX.dts,在当前文件下搜索led的GPIO有哪些设备在用:MX6UL_PAD_GPIO1_IO03__GPIO1_IO03
搜索发现:除了我的pinctrlgpioled节点在使用
pinctrl_gpioled: ledgrp{ fsl,pin = < MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0x10B0 >; };
还有pinctrl_tsc设备节点也在使用该GPIO:
pinctrl_tsc: tscgrp { fsl,pins = < MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0xb0 MX6UL_PAD_GPIO1_IO02__GPIO1_IO02 0xb0 MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0xb0 // 此处为冲突使用的GPIO MX6UL_PAD_GPIO1_IO04__GPIO1_IO04 0xb0 >; };
将冲突使用的GPIO屏蔽掉就可以正常使用,除了屏蔽pinctrl节点的GPIO,还要屏蔽其他所有对该GPIO(GPIO1_IO03)有操作的地方,比如:
&tsc { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_tsc>; xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>; // 此处为对该GPIO有操作的地方,也应该被屏蔽 measure-delay-time = <0xffff>; pre-charge-time = <0xfff>; status = "okay"; };
屏蔽后的代码:
/* MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0xb0 */ /* xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>; */
屏蔽上述两行代码后,重新加载驱动,成功!!!
/lib/modules/4.1.15 # depmod /lib/modules/4.1.15 # modprobe gpioled.ko gpioled node is found! led-gpio num = 3 major is 249, minor is 0
这篇关于Linux驱动模块加载失败的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法
- 2024-08-21【Linux】gnome桌面环境切换KDE Plasma
- 2024-08-19如何安装 VMware Tools (macOS, Linux, Windows)
- 2024-08-15Linux部署Scrapy教程:入门级指南
- 2024-07-29linux命令行下好用的性能监控工具atop
- 2024-07-04Linux系统上离线升级SSH服务的具体操作步骤-icode9专业技术文章分享
- 2024-06-0600-macOS和Linux安装和管理多个Python版本
- 2024-03-30[译]漫画SELinux概念