gpt4 book ai didi

linux - 如何使用mpc8xxx_gpio.c设备驱动

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:12 24 4
gpt4 key购买 nike

我是设备驱动程序开发的新手。我正在尝试访问 MPC837xERDB 评估板的 GPIO。

我已将其内核升级到 linux-2.6.28.9 并启用对 mpc8xxx_gpio.c 的支持。在启动时,它成功检测到两个 gpio Controller 。

现在我的问题是如何使用它与 gpio 引脚通信?我是否必须修改 mpc8xxx_gpio.c 文件中的代码才能使用 gpios 做任何我想做的事情,或者我可以使用标准的 gpio API在内核中提供(gpio_request()/gpio_free())。我也尝试了标准内核 API,但它失败了。这是我的代码:

#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);

它给出了以下 O/P:

[  617.075329] sample_driver: unable to request GPIO_PG1
[ 617.080418] sample_driver: unable to request GPIO_PG2
[ 617.085470] sample_driver: unable to request GPIO_PG3
[ 617.090522] sample_driver: unable to request GPIO_PG4
[ 617.095574] sample_driver: unable to request GPIO_PG5
[ 617.100625] sample_driver: unable to request GPIO_PG6
[ 617.105676] sample_driver: unable to request GPIO_PG7
[ 617.110727] sample_driver: unable to request GPIO_PG8
[ 617.115779] sample_driver: unable to request GPIO_PG9
[ 617.120830] sample_driver: unable to request GPIO_PG10
[ 617.125968] sample_driver: unable to request GPIO_PG11
[ 617.131106] sample_driver: unable to request GPIO_PG12
[ 617.136245] sample_driver: unable to request GPIO_PG13
[ 617.141383] sample_driver: unable to request GPIO_PG14
[ 617.146521] sample_driver: unable to request GPIO_PG15
[ 617.151660] sample_driver: unable to request GPIO_PG16
[ 617.156798] sample_driver: unable to request GPIO_PG17
[ 617.161936] sample_driver: unable to request GPIO_PG18
[ 617.167074] sample_driver: unable to request GPIO_PG19
[ 617.172213] sample_driver: unable to request GPIO_PG20
[ 617.177351] sample_driver: unable to request GPIO_PG21
[ 617.182489] sample_driver: unable to request GPIO_PG22
[ 617.187628] sample_driver: unable to request GPIO_PG23
[ 617.192767] sample_driver: unable to request GPIO_PG24
[ 617.197905] sample_driver: unable to request GPIO_PG25
[ 617.203042] sample_driver: unable to request GPIO_PG26
[ 617.208182] sample_driver: unable to request GPIO_PG27
[ 617.213319] sample_driver: unable to request GPIO_PG28
[ 617.218458] sample_driver: unable to request GPIO_PG29
[ 617.223597] sample_driver: unable to request GPIO_PG30
[ 617.228735] sample_driver: unable to request GPIO_PG31
[ 617.233873] sample_driver: unable to request GPIO_PG32

谁能给我提供示例代码或其他东西。实际上我正在尝试设置 GPIO 引脚号。 9 为低电平有效,因为它连接到板上的 LED。

最佳答案

来自你的另一个问题:

# 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 引脚 block 。一个 block 从编号 192 开始,另一个从 224 开始。在上面的代码中,您试图请求 GPIO 0-31,这在您的平台上不存在。

您可以通过查看每个 gpiochip* 目录中的 ngpio 文件来了解每个 block 中有多少个 GPIO。

关于linux - 如何使用mpc8xxx_gpio.c设备驱动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3458782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com