- 論壇徽章:
- 0
|
使用out_p向并口中寫數(shù)據(jù),但是其值總是不變,總是為0xff,例如outb_p(0x10, BASEPORT + 2); 加入調(diào)試語句printk("0x37A=%x\n",inb_p(BASEPORT+2));結(jié)果輸入為0x37A=ff,以下幾個(gè)outb_p也是一樣,無法向并口地址寫入數(shù)據(jù),這是為什么?
#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"); |
|