首页 > 编程知识 正文

arm嵌入式系统考试(arm linux 扩展串口,ARM嵌入式系统串口扩展)

时间:2023-05-05 03:03:40 阅读:121771 作者:702

在ARM嵌入式系统中,通常存在多串行APP应用的需求,但由于ARM芯片系统的本机UART数量有限,因此需要通过其他高速总线扩展更多的接口。 本文使用带有tora dex nxp I.mx6d/6q处理器的Apalis i.MX6D/Q ARM计算机模块,在Linux系统下以EXAR方式扩展8路串行端口。

Apalis i.MX6D/Q模块本身最多可以支持5个UART串行输出。 支持高速TIA/EIA-232F (最多5Mbit/s )。 支持7、8或9 (用于9(RS485 )位数据、1或2位停止位。 其中UART1是全功能串行端口,其余部分串行端口也能够支持RTS和CTS信号。

在Linux系统上,通常保留串行端口用于APP应用程序的调试开发和系统升级。 虽然SSH等功能也可用于远程网络访问和系统调试,但对于嵌入式产品,系统启动时(特别是Uboot启动信息)有助于识别功能调试和问题。 此信息只能通过串行端口输出。 Toradex模块在更新Linux BSP时也同样需要在Uboot上进行。

Apalis i.MX6Q/D模块的剩馀四个串行端口除可以使用TTL级别来直接控制对应的外围设备,还可以扩展到RS232/RS485/RS422常用的工业控制端口。 针对更多串行端口需求,目前有多种方法可以通过USB、SPI、内存总线、I2C和PCIe等总线实现串行端口扩展。 Memory Bus和PCIe比其他总线更实时,并且可以在同一接口上扩展更多串行端口。 对于串行端口数和数据实时性较高的APP应用,可以优先选择这两种扩展方案。 同时,内存总线和PCIe是高速信号总线,在PCB布线方面需要特殊考虑。 Toradex还为此提供免费的PCB设计指导。 本节介绍如何使用基于exar pcie总线的XR17V358方案来扩展8路串行端口。

1 ).XR17V358方案介绍和驱动程序下载

XR17V358扩展的8个串行端口都支持RTS/CTS或DTR/DSR流控制功能,每个串行端口具有256字节的FIFO、独立时钟输出、支持半双工RS485,最高传输速率为25 Mbps。 XR17V358使用PCIe 2.0 Gen 1与Apalis i.MX6Q/D连接,确保高速实时数据传输。 EXAR目前为XR17V358提供Windows和Linux驱动程序。 这里采用最新的Linux驱动程序,移植到Apalis i.MX6平台。 驱动器源代码下载地址https://www.exar.com/common/content/document.ashx? id=20121

2 )配置编译环境

在编译之前,还必须下载Apalis i.MX6的Linux内核和交叉编译工具。

a ).Apalis i.MX6上的Linux内核下载

$ git clone-btoradex _ imx _3. 14.28 _1.0.0_ ga-next git ://git.tora dex.com/Linux-tora dex.git

b ) .下载交叉编译工具

$ wget https://releases.Lina ro.org/14.11/components/toolchain /敏感电话Aries/arm-Linux-gnueabihf/gcc-Lina ro-4.9

$ tarxvfgcc-Lina ro-4.9-2014.11-x86 _ 64 _ arm-Linux-gnueabihf.tar.xz

$ ln-sgcc-Lina ro-4.9-2014.11-x86 _ 64 _ arm-Linux-gnueabihfgcc-Lina ro

$ export ARCH=arm

$导出路径=~/gcc-Lina ro /敏感电话/:$PATH

$ export cross _ compile=arm-Linux-gnueabihf -

注意:上述路径必须与交叉编译工具实际解压缩的目录相对应。

c ) .编译Linux内核并提供XR17V358所需的配置文件。

$ make apalis_imx6_defconfig

$ make-j4uimageloadaddr=10008000

d ) .编译XR17V358驱动程序

编辑//makefile,将KERNEL_SRC指向Linux内核所在的目录

kernel _ src=/home/ban/tora dex/OE-core-tegra/Linux kernel/v 2.5/mx6/tora dex _ imx _3. 14.28 _ 1.0

//保持后运行make命令进行编译,确保上述ARCH、PATH和CROSS_COMPILE参数仍然有效。

$ make

//

编译成功后会生成针对 ARM 处理器的内核模块文件  xr17v35x.ko

$ file xr17v35x.ko

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

e). 安装驱动

将 xr17v35x.ko 复制到 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 目录下出现对应的串口设备文件 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). 设置波特率

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

驱动加载完毕后,在 Linux 中可以和其他串口一样正常使用。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。