搞嵌入式的經常要和串口通訊打交道,在開發的時候有可能同時使用十幾個串口,這個時候一個PCI多串口卡就好用了。
但是很多Linux發行版的8250驅動默認限制檢測的最大串口數量爲4,例如在Ubuntu 8.10有如下配置:
cat /boot/config-`uname -r` | grep 8250
CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_ACCENT=m CONFIG_SERIAL_8250_BOCA=m CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_CS=m # CONFIG_SERIAL_8250_DETECT_IRQ is not set CONFIG_SERIAL_8250_EXAR_ST16C554=m CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_FOURPORT=m CONFIG_SERIAL_8250_HUB6=m CONFIG_SERIAL_8250_MANY_PORTS=y CONFIG_SERIAL_8250_MCA=m CONFIG_SERIAL_8250_NR_UARTS=48 CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_PNP=y CONFIG_SERIAL_8250_RSA=y CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_8250_SHARE_IRQ=y
配置項RUNTIME_UARTS限制了這個數目:
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
如果你安裝了例如16個串口的串口卡來擴充機器的串口數目,那麼只能得到4個。
重新配置內核並編譯當然可以解決這個問題,但是更方便的方法是通過內核啓動參數8250.nr_uarts=??來改變這個默認數字。(內核啓動參數8250.nr_uart最終會被傳入到8250模塊。)
修改/boot/grub/menu.lst,在默認啓動的項目中加入8250.nr_uarts=16即可。
-----------
Enjoy it.