如何使用mpc8xxx_gpio.c设备驱动程序

时间:2010-08-11 13:30:32

标签: linux linux-kernel linux-device-driver embedded-linux

我是设备驱动程序开发的新手。我正在尝试访问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时为低电平有效。

2 个答案:

答案 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