日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 串口驱动与使用

發(fā)布時(shí)間:2024/8/1 linux 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 串口驱动与使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 概述
  • 實(shí)驗(yàn)?zāi)康?/li>
  • 配置設(shè)備樹
  • 編譯設(shè)備樹
  • 串口收發(fā)測試
  • 移植minicom工具

概述

  • 串口驅(qū)動(dòng)和IIC/SPI驅(qū)動(dòng)不同,它沒有什么主機(jī)端和設(shè)備端之分,就只有一個(gè)串口驅(qū)動(dòng)。
  • 官網(wǎng)一般會(huì)把串口驅(qū)動(dòng)編寫好了,我們真正要做的就是在設(shè)備樹中添加所要使用的串口節(jié)點(diǎn)信息。
  • 當(dāng)系統(tǒng)啟動(dòng)以后串口驅(qū)動(dòng)和設(shè)備匹配成功,相應(yīng)的串口就會(huì)被驅(qū)動(dòng)起來,生成/dev/ttyx節(jié)點(diǎn)。
  • 移植minicom串口工具,可以很方便的對串口進(jìn)行讀寫操作。
  • 雖然串口驅(qū)動(dòng)不需要我們?nèi)?#xff0c;但是串口驅(qū)動(dòng)框架我們還是需要了解的。

實(shí)驗(yàn)?zāi)康?/h1>
  • 配置設(shè)備樹,使能Atmel SAMA5D34型號(hào)CPU的串口USART1;
  • 編譯設(shè)備樹,確認(rèn)串口驅(qū)動(dòng)編譯進(jìn)入內(nèi)核,下載運(yùn)行;
  • 查看串口配置,設(shè)置串口配置;
  • 通過命令,測試串口的收發(fā);
  • 移植minicom工具。

配置設(shè)備樹

在設(shè)備樹中添加串口的設(shè)備樹,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"用于匹配驅(qū)動(dòng)的名字,在內(nèi)核的drivers目錄下可以搜索到相應(yīng)的驅(qū)動(dòng)。執(zhí)行搜索:grep -nR “atmel,at91sam9260-usart*”,串口驅(qū)動(dòng)路徑為:/drivers/ tty/serial/atmel_serial.c

串口usart1所使用的引腳可以在pinctrl_usart1子節(jié)點(diǎn)中查看。檢查一下 USART1_TX 和 USART1_RX 這兩個(gè)引腳有沒有被用作其他功能,如果有的話要將其屏蔽掉,保證這兩個(gè) 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 */ };

編譯設(shè)備樹

在內(nèi)核的根目錄下執(zhí)行make dtbs,生成.dtb目標(biāo)文件。
檢查串口驅(qū)動(dòng)是否編譯進(jìn)入內(nèi)核:在/drivers/ tty/serial/Makefile可以看到obj-$(CONFIG_SERIAL_ATMEL) += atmel_serial.o,只要根目錄下.config文件中” CONFIG_SERIAL_ATMEL=y”串口驅(qū)動(dòng)就會(huì)被編譯進(jìn)入內(nèi)核。
下載設(shè)備樹過后,進(jìn)入設(shè)備樹目錄cd /proc/device-tree/,執(zhí)行find -name “serial*”,可以查找到對應(yīng)設(shè)備樹的配置。

串口收發(fā)測試

串口生成的節(jié)點(diǎn)為/dev/ttyx。具體是tty什么,可以通過驅(qū)動(dòng)查看,本例程中usart1生成節(jié)點(diǎn)名/dev/ttyS2。
輸入“stty -F /dev/ttyS2 -a”,可查看串口的信息,比如波特率。

# stty -F /dev/ttyS2 -a speed 115200 baud;stty: /dev/ttyS2line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

輸入” stty -F /dev/ttyS2 ispeed 115200 ospeed 115200 cs8”設(shè)置串口波特率,停止校驗(yàn)位等等。
執(zhí)行echo “test” >/dev/ttyS2,可將test字符通過串口發(fā)送出去。
執(zhí)行cat /dev/ttyS2,可接收串口數(shù)據(jù)并打印出來。

移植minicom工具

未完待續(xù)…

總結(jié)

以上是生活随笔為你收集整理的Linux 串口驱动与使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。