Linux 串口驱动与使用
目錄
- 概述
- 實驗目的
- 配置設備樹
- 編譯設備樹
- 串口收發測試
- 移植minicom工具
概述
- 串口驅動和IIC/SPI驅動不同,它沒有什么主機端和設備端之分,就只有一個串口驅動。
- 官網一般會把串口驅動編寫好了,我們真正要做的就是在設備樹中添加所要使用的串口節點信息。
- 當系統啟動以后串口驅動和設備匹配成功,相應的串口就會被驅動起來,生成/dev/ttyx節點。
- 移植minicom串口工具,可以很方便的對串口進行讀寫操作。
- 雖然串口驅動不需要我們去寫,但是串口驅動框架我們還是需要了解的。
實驗目的
- 配置設備樹,使能Atmel SAMA5D34型號CPU的串口USART1;
- 編譯設備樹,確認串口驅動編譯進入內核,下載運行;
- 查看串口配置,設置串口配置;
- 通過命令,測試串口的收發;
- 移植minicom工具。
配置設備樹
在設備樹中添加串口的設備樹,status為”okey”
usart1: serial@f0020000 {compatible = "atmel,at91sam9260-usart";reg = <0xf0020000 0x100>;interrupts = <13 IRQ_TYPE_LEVEL_HIGH 5>;dmas = <&dma0 2 AT91_DMA_CFG_PER_ID(5)>,<&dma0 2 (AT91_DMA_CFG_PER_ID(6) | AT91_DMA_CFG_FIFOCFG_ASAP)>;dma-names = "tx", "rx";pinctrl-names = "default";pinctrl-0 = <&pinctrl_usart1>;clocks = <&usart1_clk>;clock-names = "usart";status = "okay"; };compatible="atmel,at91sam9260-usart"用于匹配驅動的名字,在內核的drivers目錄下可以搜索到相應的驅動。執行搜索:grep -nR “atmel,at91sam9260-usart*”,串口驅動路徑為:/drivers/ tty/serial/atmel_serial.c
串口usart1所使用的引腳可以在pinctrl_usart1子節點中查看。檢查一下 USART1_TX 和 USART1_RX 這兩個引腳有沒有被用作其他功能,如果有的話要將其屏蔽掉,保證這兩個 IO 只用作 USART1,切記!!!
pinctrl_usart1: usart1-0 {atmel,pins =<AT91_PIOB 28 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB28 periph A */AT91_PIOB 29 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; /* PB29 periph A with pullup */ };編譯設備樹
在內核的根目錄下執行make dtbs,生成.dtb目標文件。
檢查串口驅動是否編譯進入內核:在/drivers/ tty/serial/Makefile可以看到obj-$(CONFIG_SERIAL_ATMEL) += atmel_serial.o,只要根目錄下.config文件中” CONFIG_SERIAL_ATMEL=y”串口驅動就會被編譯進入內核。
下載設備樹過后,進入設備樹目錄cd /proc/device-tree/,執行find -name “serial*”,可以查找到對應設備樹的配置。
串口收發測試
串口生成的節點為/dev/ttyx。具體是tty什么,可以通過驅動查看,本例程中usart1生成節點名/dev/ttyS2。
輸入“stty -F /dev/ttyS2 -a”,可查看串口的信息,比如波特率。
輸入” stty -F /dev/ttyS2 ispeed 115200 ospeed 115200 cs8”設置串口波特率,停止校驗位等等。
執行echo “test” >/dev/ttyS2,可將test字符通過串口發送出去。
執行cat /dev/ttyS2,可接收串口數據并打印出來。
移植minicom工具
未完待續…
總結
以上是生活随笔為你收集整理的Linux 串口驱动与使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米6刷android 8.0,小米小米
- 下一篇: linux下编译jrtplib和jthr