0
我在Linux設備驅動的例子試圖short.c 3OUTB()不LDD3例如短模塊工作
我的電腦有並口與Ubuntu的開機後,我可以看到這些:
cat /proc/ioports
0378-037a : parport0
037b-037f : parport0
outp 0x378 1
(outp is another example in LDD3 which write data to ports)
the LED on the port is ON.
然後我運行這些命令以刪除模塊
rmmod lp
rmmod parport_pc
cat /proc/ioports
(There is no module on 0378-037f any more.)
我再次運行本但是LED不是該時間。
outp 0x378 1
然後我安裝了short.ko和request_region()成功。
cat /proc/ioports
0378-037f : short
cat /proc/devices
249 short
outp 0x378 1
the LED is not ON this time either.
我想這些了,但是同樣的結果(LED不亮)
mknod /dev/short0 c 249 0
echo -n "a" > /dev/short0
「a」 是0x61,使最後一位爲1
我爲什麼不能寫數據了,雖然我有I/O區域?
感謝您的回答。
你做了什麼,以確認您已經連線了LED是否正確? – sawdust
是的,LED連線正確。我可以在模塊parport_pc被移動之前打開它。 – user1443721
新發現。如果我刪除了request_region()函數調用並且不卸載parport模塊,我可以使代碼讀寫(也點亮LED)。由於parport模塊在那裏,irq 7被它使用。我必須將irq 5分配給「短」模塊。儘管我成功啓用了irq 5,但中斷永遠不會進入[通過連接引腳9和引腳10以及outb(0xff,0x378)]。檢查/ proc/interrupts,我注意到當調用outb(0xff,0x378)時,irq 7的計數器增加,但是irq 5始終爲0.有沒有解決它的建議? – user1443721