小编Sid*_*rth的帖子

设备文件和设备驱动程序之间的区别

我目前正在阅读Linux模块编程指南,我偶然发现了两个让人困惑的术语 - 设备文件和设备驱动程序.在仔细阅读这些条款后,我遇到以下情况 -

设备驱动程序是一种操作或控制特定类型设备的软件.

设备文件是设备驱动程序的接口,它出现在文件系统中,就像它是普通文件一样.在类Unix操作系统中,这些通常位于/ dev目录下,也称为设备节点.

我想知道的是 -

1)设备文件是用户空间程序和设备驱动程序之间的接口吗?2)程序是否通过相应的设备专用文件访问内核中的驱动程序?

例如,当使用say spidev char dev文件时,是否允许我的用户空间程序使用简单的read,write和ioctl调用与spi.c和omap2_mcspi.c等进行交互?

linux linux-device-driver

6
推荐指数
1
解决办法
1837
查看次数

检测内核模块中GPIO的中断

我使用Atmel uC将输入切换到BeagleBone上的GPIO线,每500 ms从高到低.我在我的Linux内核模块中为此注册了一个处理程序,但由于某种原因没有调用处理程序.

我的模块代码是 -

#define GPIO 54
#define GPIO_INT_NAME  "gpio_int"

#define GPIO_HIGH gpio_get_value(GPIO)
#define GPIO_LOW (gpio_get_value(GPIO) == 0)
short int irq_any_gpio    = 0;
int count =0;

enum { falling, rising } type; 
static irqreturn_t r_irq_handler(int irq, void *dev_id)
 {
      count++;
    printk(KERN_DEBUG "interrupt received (irq: %d)\n", irq);
        if (irq == gpio_to_irq(GPIO)) 
    {

        type = GPIO_LOW ? falling : rising;

        if(type == falling)
        {
            printk("gpio pin is low\n");    
        }
        else
            printk("gpio pin is high\n");

    }

    return IRQ_HANDLED;
}


void r_int_config(void) { …
Run Code Online (Sandbox Code Playgroud)

linux interrupt linux-device-driver interrupt-handling gpio

3
推荐指数
1
解决办法
2万
查看次数