Linux下USB轉串列埠驅動
Linux發行版自帶usb to serial驅動,以模組方式編譯驅動,在核心原始碼目錄下執行Make MenuConfig選擇Devces drivers-->USB seupport--> <M>USB Serial Converter support --> <M> USB driver for GSM and CDMA modems & [*]USB Generic Serial Driver,儲存退出。執行make modules,編譯成功後可找到usbtoserial.ko及option.ko兩個驅動(2.6以上核心版本模組驅動用.ko表示)。如果想在開發板上執行,要用arm-linux-gcc編譯。
在2.6.18以前的核心版本中,很多公司及產品未定義,直接用usbtoserial.ko指定ID號可以驅動模組,不需要option.ko。格式為[insmod usbserial.ko vendor=<comp.ID> product=<pro.ID>],對於除錯過的模組,給出ID如下:
Telit_UC864:
vendor=0x1bc7 product=0x1003
轉出ttyUSB0~2三個串列埠,ttyUSB0可用,響應AT指令。
大唐 DTM6211:
vendor=0x1ab7 product=0x6000
轉出ttyUSB0~5六個串列埠,ttyUSB5可用,響應AT指令。
華為 MC703:
vendor=0x12d1 product=0x1001
轉出ttyUSB0~2三個串列埠,ttyUSB0和ttyUSB2可用,響應AT指令。
例如要驅動UC864,可輸入insmod usbserial.ko vendor=0x1bc7 product=0x1003。注意生成的串列埠不一定能自動建立,查詢/dev下面的裝置看是否存在ttyUSBx。如不存在,需要手動呼叫mknod建立節點。cat /proc/devices,檢視載入的驅動號,一般usbtoserial的裝置號為188。因此可呼叫mknod ttyUSB0 c 188 0,建立節點。c表示字元驅動,188是查到的主裝置號,0為子裝置號。
2.6.18以後的核心,option.c中定義了很多公司和裝置,檢視核心原始碼,開啟option.c檔案,查詢 static struct usb_device_id option_ids[] 結構體陣列,裡面定義了很多模組廠商和產品的ID,如果未找到我們的模組,可手動新增,然後按上面的步驟重新編譯驅動。使用新生成的usbtoserial.ko和option.ko檔案,不需要指定ID號,直接insmod usbtoserial.ko再insmod option.ko,即可驅動模組。
參考文章二:
現在市面上的USB轉串列埠線非常便宜,而且現在大部分機器都沒有串列埠.因此在嵌入式LINUX下開發使用USB轉串列埠的線相當普遍.而我測試最穩定是 PL2303晶片,即一般是黑色不透明那種.在WINDOWS XP下使用比較穩定.學生一般問我,我都推薦這種,反而是市面上那種綠色透明的轉換線,相當不穩定.
關於PL2303的驅動 現在情況是,我們需要在桌面版LINUX上使用USB轉串列埠.而且現在開發板都是一個串列埠,因此做GPS測試,AT撥號等實驗相當不方便.因此讓PL2303在X86和ARM Linux工作,無論是對開發是有相當的意思. 廠家提供了Windows XP驅動,在網上也能下到針對WinCE5,Redhat9 驅動 在這裡能下到很多關於PL2303的資料 其中WinCE5 X86驅動是 WinCE5 ARM驅動是 針對redhat 7.0/8.0/9.0的帶原始碼的驅動 並且它註明了 Linux Kernel 2.4.10 and above already includes built-in drivers for PL-2303H.Linux Kernel 2.4.31 and above already includes built-in drivers for PL-2303H, PL-2303XA/HXA and PL-2303HXD. 因此我的機器上的RHEL實際是自帶驅動.果然去原始碼目錄一找就發現已經帶了編譯好的動態模組. 在/lib/modules/2.6.18-128.el5/kernel/drivers/usb/serial 找到pl2303.ko 因此可以直接使用它來安裝了. 安裝X86的驅動 在驅動目錄下執行如下命令安裝驅動模組 insmod usbserial.ko insmod pl2303.ko 沒有提示即為正常載入。可以執行lsmod 檢視模組裝載的情況 [[email protected] serial]# lsmod | grep pl2303
pl2303 21701 0
usbserial 33065 1 pl2303 可以檢視系統控制檯的輸出 dmesg | tail ,資訊已經提示驅動已經註冊上了。
[[email protected] serial]# dmesg | tail |
[[email protected] serial]# dmesg | tail
usb 1-3: USB disconnect, address 7 |
crw-rw---- 1 root uucp 188, 0 Mar 12 13:16 /dev/ttyUSB0 配置串列埠終端程式.
- 執行 minicom -s進行配置。選擇Serial port setup
- 注意裝置名選擇 /dev/ttyUSB0,我的開發板的引數是 115200 8-N-1.
- 然後執行選單 Save setup as dfl ...儲存為預設配置。
- 然後選擇 Exit進入串列埠,或完全退出minicom後,重新執行 minicom
這時在minicom就能操作開發板!整個過程到處完全成功。