我目前正在阅读Linux模块编程指南,我偶然发现了两个让人困惑的术语 - 设备文件和设备驱动程序.在仔细阅读这些条款后,我遇到以下情况 -
设备驱动程序是一种操作或控制特定类型设备的软件.
设备文件是设备驱动程序的接口,它出现在文件系统中,就像它是普通文件一样.在类Unix操作系统中,这些通常位于/ dev目录下,也称为设备节点.
我想知道的是 -
1)设备文件是用户空间程序和设备驱动程序之间的接口吗?2)程序是否通过相应的设备专用文件访问内核中的驱动程序?
例如,当使用say spidev char dev文件时,是否允许我的用户空间程序使用简单的read,write和ioctl调用与spi.c和omap2_mcspi.c等进行交互?
我使用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)