linux串口連接
❶ linux串口驅動簡介及使用方法linux串口的驅動
Linux 串口驅動簡介
Linux 是一款市場佔有率非常高的操作系統,其架構深受業界歡迎,同時也受到了桌面系統、手機系統以及嵌入式系統的青睞,作為開源系統,市場份額一直都在繼續上漲。
串口驅動對於許多嵌入式設備來說是十分重要的,所以其對Linux的支持同樣十分重要。 Linux內核中有一個串口驅動,可以輕松地將不同的硬體通道做連接,主要包括8253,8250,16550加上8255,16650,16750和16950等幾種。不同硬體的支持受到一定的限制,如16650及其以上就受到hard_seral_port參數設定的限制。
使用 Linux 串口驅動
1. 啟動內核中的串口驅動:在啟動內核時,必須確定計算機使用的串口類型,可以在Kconfig中選擇在make menuconfig時,選擇相應的模塊就可以使能串口設備或者驅動了;
2. 載入必要的模塊及硬體:在編寫makefiile時,必須確保已經編譯好的模塊與硬體相兼容,否則可能會出現無法載入模塊或模塊不能匹配硬體的情況;
3. 編寫驅動程序:有多種方式可以編寫驅動,基於模板的可以採用Driver core方式,可以輕松控制各種設備;也可以從頭開始編寫,從底層實現;
4. 測試串口:最後,測試串口驅動是否正常工作,使用minicom等專業的軟體可以發送指令,測試硬體連接是否正常;
使用Linux驅動串口的好處在於,可以通過修改內核配置和加裝必要的模塊來支持不同的硬體,大大減少用戶的配置時間,而且兼容性更高,可以支持不同的型號的串口硬體,以及不支持的設備也可以輕松支持,確保系統的穩定性。
❷ Linux串口連接ttyS0、ttyS1是什麼意思
這是通信串口名稱。
在Linux環境下,串口名從ttyS0開始依次是ttyS1、ttyS2等。在本程序中,使用ttyS0作為通信串口。在打開ttyS0的時候,選項 O_NOCTTY 表示不能把本串口當成控制終端,否則用戶的鍵盤輸入信息將影響程序的執行; O_NDELAY表示打開串口的時候,程序並不關心另一端 的串口是否在使用中。在Linux中,打開串口設備和打開普通文件一樣,使用的是open()系統調用。比如我么打開串口設備1也就是COM1,只需要:
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY );
打開的串口設備有很多設置選項。本文中使用int setup_com(int fd)設置。在系統頭文件中 定義了終端控制結構struct termios,tcgetattr()和tcsetattr()兩個系統函數獲得和設置這些屬性。結構 struct termios中的域描述的主要屬性包括:
c_cflag : 控制選項
c_lflag : 線選項
c_iflag : 輸入選項
c_oflag :輸出選項
c_cc :控制字元
c_ispeed :輸入數據波特率
c_ospeed :輸出數據波特率
如果要設置某個選項,那麼就使用"|=「運算,如果關閉某個選項就使用」&=「和」~"運算。本文使用的各個選項的意義定義如下:
c_cflag:
CLOCAL 本地模式,不改變埠的所有者
CREAD 表示使能數據接收器
PARENB 表示偶校驗
PARODD 表示奇校驗
CSTOPB 使用兩個停止位
CSIZE 對數據的bit使用掩碼
CS8 數據寬度是8bit
c_lflag:
ICANON 使能規范輸入,否則使用原始數據(本文使用)
ECHO 回送(echo)輸入數據
ECHOE 回送擦除字元
ISIG 使能SIGINTR,SIGSUSP, SIGDSUSP和 SIGQUIT 信號
c_iflag:
IXON 使能輸出軟體控制
IXOFF 使能輸入軟體控制
IXANY 允許任何字元再次開啟數據流
INLCR 把字元NL(0A)映射到CR(0D)
IGNCR 忽略字元CR(0D)
ICRNL 把CR(0D)映射成字元NR(0A)
c_oflag: OPOST 輸出後處理,如果不設置表示原始數據(本文使用原始數據)
c_cc[VMIN]: 最少可讀數據
c_cc[VTIME]: 等待數據時間(10秒的倍數)