我是设备驱动程序开发的新手。我正在尝试访问MPC837xERDB评估板的GPIO。
我已将其内核升级到linux-2.6.28.9
并启用对mpc8xxx_gpio.c
的支持。在启动时,它成功检测到两个gpio
控制器。
现在我的问题是我将如何使用它与gpio
针脚进行通信?我是否必须修改mpc8xxx_gpio.c
文件中的代码以执行我想对gpios
执行的操作,或者我可以使用内核中提供的标准gpio
API(gpio_request()
/ { {1}})。我也尝试了标准的内核API,但它失败了。这是我的代码:
gpio_free()
它提供以下O / P:
#include <linux/module.h>
#include <linux/errno.h> /* error codes */
#include <linux/gpio.h>
static __init int sample_module_init(void)
{
int ret;
int i;
for (i=1; i<32; i++) {
ret = gpio_request(i, "Sample Driver");
if (ret) {
printk(KERN_WARNING "sample_driver: unable to request GPIO_PG%d\n", i);
//return ret;
}
}
return 0;
}
static __exit void sample_module_exit(void)
{
gpio_free(9);
}
MODULE_LICENSE("GPL");
module_init(sample_module_init);
module_exit(sample_module_exit);
有人可以为我提供示例代码或其他内容。实际上我正在设置GPIO引脚号。 9连接到板上的LED时为低电平有效。
答案 0 :(得分:1)
来自您的其他问题:
# ls /sys/class/gpio/ -la
drwxr-xr-x 4 root root 0 Jan 1 00:00 .
drwxr-xr-x 24 root root 0 Jan 1 00:00 ..
--w------- 1 root root 4096 Jan 1 00:10 export
drwxr-xr-x 3 root root 0 Jan 1 00:00 gpiochip192
drwxr-xr-x 3 root root 0 Jan 1 00:00 gpiochip224
--w------- 1 root root 4096 Jan 1 00:00 unexport
您有两个GPIO引脚块。一个块从192开始,另一个块在224.在上面的代码中,您尝试请求GPIO 0-31,这在您的平台上不存在。
通过查看每个ngpio
目录中的gpiochip*
文件,您可以了解每个块中有多少GPIO。
答案 1 :(得分:0)
您是否在内核源代码中查看了Documentation/gpio.txt
?