<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM嵌入式系統(tǒng)串口擴(kuò)展

          ARM嵌入式系統(tǒng)串口擴(kuò)展

          作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
          ARM嵌入式系統(tǒng)常常會(huì)遇到多串口應(yīng)用需求,而ARM芯片系統(tǒng)原生的UART數(shù)目有限,因此就需要通過(guò)其他高速總線來(lái)擴(kuò)展更多的接口。本文就以Toradex 基于NXP i.MX6D/6Q處理器的Apalis i.MX6D/Q ARM計(jì)算機(jī)模塊,在Linux系統(tǒng)下通過(guò)EXAR方案擴(kuò)展8路串口。

          Apalis i.MX6D/Q 模塊自身最多可以支持 5 個(gè) UART 串口輸出。兼容 高速 TIA/EIA-232F(最高 5Mbit/s)。支持7、8 或者 9(用于RS485)位數(shù)據(jù),1或者2位停止位。其中 UART1 為全功能串口,其余部分串口也可支持 RTS和CTS 信號(hào)。

          本文引用地址:http://www.ex-cimer.com/article/201611/319518.htm

          在 Linux 系統(tǒng)中一般會(huì)保留一個(gè)串口用于應(yīng)用調(diào)試開(kāi)發(fā)以及系統(tǒng)升級(jí)。雖然 SSH 等功能也可以用于遠(yuǎn)程網(wǎng)絡(luò)訪問(wèn)以及系統(tǒng)調(diào)試,但是對(duì)于嵌入式產(chǎn)品,系統(tǒng)啟動(dòng)時(shí),特別是 Uboot 啟動(dòng)的信息,可以有助于功能調(diào)試以及問(wèn)題定位。而這部分信息只能從串口輸出。Toradex 模塊在更新 Linux BSP 的時(shí)候也同樣需要在 Uboot 進(jìn)行。

          Apalis i.MX6Q/D 模塊剩余的4個(gè)串口,除了可以使用 TTL 電平直接控制相應(yīng)的外設(shè),也可以擴(kuò)展為 RS232/RS485/RS422 常用的工業(yè)控制端口。對(duì)于更多串口的需求,目前有多種方案實(shí)現(xiàn)串口擴(kuò)展,例如通過(guò) USB、SPI、Memory Bus、I2C以及 PCIe 等總線。 Memory Bus 和 PCIe 相對(duì)于其他總線具有更高的實(shí)時(shí)性,在同一個(gè)接口上也能夠擴(kuò)展出更多的串口。對(duì)于串口數(shù)量以及數(shù)據(jù)實(shí)時(shí)性較高的應(yīng)用可以優(yōu)先選擇這兩種擴(kuò)展方案。與此同時(shí), Memory Bus 和 PCIe 屬于高速信號(hào)總線,在 PCB 布線方面需要一些特殊考慮。Toradex 為此也提供了免費(fèi)的 PCB 設(shè)計(jì)指導(dǎo)。下面我們就將介紹如何使用 EXAR 基于 PCIe 總線的XR17V358 方案,擴(kuò)展 8 路串口。

          1). XR17V358方案簡(jiǎn)介及驅(qū)動(dòng)下載

          XR17V358 擴(kuò)展的 8 個(gè)串口均支持 RTS/CTS 或者 DTR/DSR 流控功能,每個(gè)串口帶有 256 字節(jié)的 FIFO,獨(dú)立時(shí)鐘輸出,支持半雙工 RS485,最高傳輸速度為 25 Mbps 。XR17V358 使用 PCIe 2.0 Gen 1 與 Apalis i.MX6Q/D 相連接,保證高速實(shí)時(shí)地?cái)?shù)據(jù)傳輸。EXAR 目前為 XR17V358 提供了 Windows 和 Linux 驅(qū)動(dòng)。這里我們采用其最新的 Linux 驅(qū)動(dòng),并移植到 Apalis i.MX6 平臺(tái)上。驅(qū)動(dòng)源碼下載地址 http://www.exar.com/common/content/document.ashx?id=20121

          2). 配置編譯環(huán)境

          在編譯之前,還需要下載 Apalis i.MX6 的 Linux 內(nèi)核以及交叉編譯工具。

          a). Apalis i.MX6 的 Linux 內(nèi)核下載

          $ git clone -b toradex_imx_3.14.28_1.0.0_ga-next git://git.toradex.com/linux-toradex.git

          b). 交叉編譯工具下載

          $ wget http://releases.linaro.org/14.11/components/toolchain/binaries/arm-linux-gnueabihf/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz

          $ tar xvf gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz

          $ ln -s gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf gcc-linaro

          $ export ARCH=arm

          $ export PATH=~/gcc-linaro/bin/:$PATH

          $ export CROSS_COMPILE=arm-linux-gnueabihf-

          注意:上面的路徑需要對(duì)應(yīng)交叉編譯工具實(shí)際解壓的目錄。

          c). 編譯 Linux 內(nèi)核,為 XR17V358 提供必要的配置文件。

          $ make apalis_imx6_defconfig

          $ make -j4 uImage LOADADDR=10008000

          d). 編譯 XR17V358 驅(qū)動(dòng)

          // 編輯 Makefile 文件,將 KERNEL_SRC 指向 Linux 內(nèi)核所在目錄

          KERNEL_SRC = /home/ban/Toradex/oe-core-tegra/LinuxKernel/v2.5/mx6/toradex_imx_3.14.28_1.0.0_ga-next/linux-toradex

          // 保持后運(yùn)行 make 命令進(jìn)行編譯,確保上面提到的 ARCH、PATH和 CROSS_COMPILE 參數(shù)仍然有效。

          $ make

          // 編譯成功后會(huì)生成針對(duì) ARM 處理器的內(nèi)核模塊文件 xr17v35x.ko

          $ file xr17v35x.ko

          xr17v35x.ko: ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV), BuildID[sha1]=399121b7862105b185e24b45ba3522f14158295e, not stripped

          e). 安裝驅(qū)動(dòng)

          將 xr17v35x.ko 復(fù)制到 Apalis i.MX6 模塊上,并安裝

          root@apalis-imx6:~# insmod xr17v35x.ko

          [ 151.156648] Exar PCIe (XR17V35x) serial driver Revision: 2.0

          root@apalis-imx6:~# lspci

          00:00.0 PCI bridge: Device 16c3:abcd (rev 01)

          01:00.0 PCI bridge: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch (rev aa)

          02:01.0 PCI bridge: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch (rev aa)

          02:02.0 PCI bridge: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch (rev aa)

          02:03.0 PCI bridge: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch (rev aa)

          03:00.0 Serial controller: Exar Corp. Device 0358 (rev 03)

          在 /dev 目錄下出現(xiàn)對(duì)應(yīng)的串口設(shè)備文件 ttyXR0 至 ttyXR7。

          root@apalis-imx6:/dev# ls

          autofs network_latency tty18 tty60

          block network_throughput tty19 tty61

          bus null tty2 tty62

          char port tty20 tty63

          console ppp tty21 tty7

          cpu_dma_latency ptmx tty22 tty8

          cuse ptp0 tty23 tty9

          disk pts tty24 ttyXR0

          dri ram0 tty25 ttyXR1

          fb ram1 tty26 ttyXR2

          fb0 ram10 tty27 ttyXR3

          fb1 ram11 tty28 ttyXR4

          fb2 ram12 tty29 ttyXR5

          fb3 ram13 tty3 ttyXR6

          fd ram14 tty30 ttyXR7

          f). 設(shè)置波特率

          root@apalis-imx6:~# stty -F /dev/ttyXR0 115200

          驅(qū)動(dòng)加載完畢后,在 Linux 中可以和其他串口一樣正常使用。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();