2011-11-24 29 views
0

我是一名專業的C程序員。我正在學習設備驅動程序,並希望編寫(測試)一個簡單的串口驅動程序,以9600的波特率發送字符。我已經開始編寫代碼。分配串行端口寄存器時request_region函數調用失敗

問題是當我嘗試分配地址範圍爲03f8-03ff的串行端口寄存器時,函數request_region失敗(返回NULL)。 當我發出命令「cat/proc/ioports」時,我可以看到以下行

03f8-03ff:serial。

我的事情,這是因爲這些端口已經分配給現有的串口驅動

我是否需要卸載已有的串口驅動程序來測試我的司機? 如果是這樣,我該怎麼做?

回答

2

你是對的:已經有一個使用這些端口的內核驅動程序。我假設你使用的是英特爾盒子,所以你最喜歡使用8250驅動程序。您可以嘗試通過卸載:

modprobe -vr 8250 

,但如果您使用的是一個發行版提供的內核,因爲他們大多有這個模塊「內置」,這將極有可能失敗。你可以用

grep CONFIG_SERIAL_8250 /boot/config-`uname -r` 

檢查這個,你會得到CONFIG_SERIAL_8250=y那麼你需要編譯內核,其中8250驅動器實際上是一個可加載模塊。