insmod提示 device or resource,同时提示 busy request GPIO 37 for pwm failed

liaojiededepan 2016-06-22 11:05:26
本人最近在学linux驱动编程 首先入手的是pwm的例子,用的是友善之臂 提供的官方源码
在内核编译的时候 pwm驱动 选择编译成模块,友善之臂提供的官方驱动源码
最后生成了 tiny4412_pwm.ko
但是insmod的时候提示]
request GPIO 37 for pwm failed
insmod:can't insert 'tiny4412_pwm.ko':device or resource busy


我做了下面实验
0.官方的代码应该没有错,我一个字没改
1.直接编译进内核 ==>pwm可以用没有问题,用debugfs查看gpio占用情况
#mkdir /data/debug
#mount -t debugfs debugfs /data/debug
#cd /data/debug
# cat gpio
输出:
GPIOs 37-40,GPD0
gpio-37 (pwm ) in lo

2.编译成模块 就是死活insmod不进去 提示就是设备或资源忙,在用debugfs查看gpio占用情况
==>输出
GPIOs 37-40,GPD0
//这个表示没有占用


我百度了一下有几种情况
1.设备号被占用 ==>排除 官方驱动不应该有错,设备号不会分配错
2.GPIO 37 确实被占用 ==>看了一下驱动的代码确实==>tiny4412_pwm_dev_init(void)函数第一句话就这么写的

static int __init tiny4412_pwm_dev_init(void)
{
int ret;

ret = gpio_request(BUZZER_PMW_GPIO, DEVICE_NAME);
if (ret)
{
printk("request GPIO %d for pwm failed\n,error=%d", BUZZER_PMW_GPIO, ret);
return ret;
}
..
}

我把 上面代码中断 ret 变量打印了出来 是-16 //#define EBUSY 16 /* Device or resource busy */ -16的意思就是被占用
但是debugfs查看gpio占用情况 就是告诉我没有占用
请教各位 这个问题怎么解决 谢谢
...全文
1759 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kxkakak 2016-10-16
  • 打赏
  • 举报
回复
哥们,你最后怎么解决的?
uid123 2016-10-16
  • 打赏
  • 举报
回复
解决了没????

1,317

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧