- 论坛徽章:
- 0
|
使用out_p向并口中写数据,但是其值总是不变,总是为0xff,例如outb_p(0x10, BASEPORT + 2); 加入调试语句printk("0x37A=%x\n",inb_p(BASEPORT+2));结果输入为0x37A=ff,以下几个outb_p也是一样,无法向并口地址写入数据,这是为什么?
#include <linux/module.h>
#include <linux/interrupt.h>
#include <asm/io.h>
#define BASEPORT 0x378
static unsigned long devid;
int cntr;
static irqreturn_t handler(int irq, void *data)
{
cntr++;
printk("parint: >>> Interrupt PARALLEL PORT INT %d HANDLED\n", cntr);
return IRQ_HANDLED;
}
int xinit_module(void)
{
int ret;
ret = request_irq(7, handler, SA_INTERRUPT , "parallelport", (void *)&devid);
if (ret) { printk ("parint: error requesting irq 7: returned %d\n", ret); }
outb_p(0x10, BASEPORT + 2);
printk("parint: Generating Interrupt now on all output pins (intr/ACK = pin 10)\n");
//generate interrupt
outb_p(0, BASEPORT);
outb_p(255, BASEPORT);
outb_p(0, BASEPORT);
printk("parint: Interrupt generated. You should see the handler-message\n");
return 0;
}
void xcleanup_module(void)
{
disable_irq(7);
free_irq(7, (void *)&devid);
}
module_init(xinit_module);
module_exit(xcleanup_module);
MODULE_LICENSE("GPL"); |
|