ARM-Linux GPIO 占用问题(sh: write error: Device or resource busy)

一般在芯片供应商处获取的内核代码可能需要修改,以适配自己的电路板,尤其是电路板与供应商电路板有区别时。因内核调试较少,写博客记录一些自己在调试内核中遇到的问题;

坑1:

 Linux 驱动调试中可能遇到gpio无法申请的问题,需要查找gpio被哪个驱动占用,用来解决管脚占用问题,介绍几种查找gpio占用的方案

方案1:

mount -t  debugfs none /media

cat /media/gpio ; #左边红色一列为gpio管脚,右边绿色列为驱动名称,如果右边驱动列不为? 那么可以根据驱动名称去查找 gpio被哪个驱动占用;

方案2:

内核中自带堆栈调试(dump_stack)功能,对于驱动调试非常有用,在驱动中函数内添加dump_stack可以看到函数被调用的流程;如上例子,从厂商手中获取的内核gpio-69 无法得知被哪个驱动占用,应用使用时出现  gpio sh: write error: Device or resource busy,因此需要解除占用。 在gpiolib.c 中添加 如下代码:

编译后,刷入电路板,最终会显示gpio-69的申请过程  kernel_init->sunxi_hci_init,在内核源码中grep  -rn  sunxi_hci_init, 找到对应的.c 然后根据.c 找Makefile ,Kconfig……,即可判断该gpio的用途;

 (此问题为调试allwinner s3 官方bsp遇到的问题;)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值