嵌入式linux调试串口,嵌入式Linux下串口调试

摘要:UART串口是嵌入式设备最为常用的调试和通讯接口之一,无论是RS232还是RS422/485都有着非常广泛的应用,因此本文就基于嵌入式Linux演示在User Space进行串口调试。

‍1).简介‍

UART串口是嵌入式设备最为常用的调试和通讯接口之一,无论是RS232还是RS422/485都有着非常广泛的应用,因此本文就基于嵌入式Linux演示在User Space进行串口调试。

本文所演示的平台来自于Toradex Colibri iMX6DL ARM嵌入式平台,这是一个基于NXP iMX6DL ARM处理器,支持双核Cortex-A9。

2.准备

a).ColibriiMX6DL ARM核心版配合ColibriEva Board载板,连接调试串口UART1到开发主机方便调试,同时配置好Ubuntu开发主机开发环境,具体操作方法可以参考这里。

b).Colibri iMX6DL系统使用Toradex Linux Release V2.6.1,下载和更新方法请参考这里。

3). RS232串口通讯测试

a). Colibri iMX6S核心版默认定义提供了三个串口,如下所示,其中UART1为默认的调试串口,当然可以通过uboot设置关闭调试串口或者指定另外一个串口作为调试串口。

929f969fa8180315c8e145d6e8f7e3ea.png

b). Colibri Eva Board X25 Top DB9连接器默认为UART2接口,连接到Ubuntu开发主机进行UART2串口测试。另外,通过载板跳线测试也可以将UART3串口路由到X25 bottom DB9连接器上面,具体说明可以参考这里。

c). User Space下直接操作UART2串口设备进行测试

---------------------------------

//设置串口bandrate

root@colibri-imx6# stty -F /dev/ttymxc1115200

//发送数据

root@colibri-imx6# echo Test >/dev/ttymxc1

//接收数据

root@colibri-imx6# cat /dev/ttymxc1

--------------------------------

d). User Space下通过C程序测试UART2串口

./ uart相关基本操作头文件和子程序

//打开和关闭uart设备

uart_open

uart_close

//配置uart baudrate以及其他参数并生效

uart_config

//利用write函数发送数据

uart_send

//利用select函数侦测事件发生,然后用read函数读取数据

uart_read

具体代码请见这里:

uartconfig.h - https://github.com/simonqin09/uarttest/blob/master/uartconfig.h

uartconfig.c - https://github.com/simonqin09/uarttest/blob/master/uartconfig.c

./ main主程序,打开并配置串口baudrate 115200,发送数据然后接收数据来测试串口。

具体代码如下:

https://github.com/simonqin09/uarttest/blob/master/uarttest.c

./执行情况,可见收发都正常

--------------------------------

//Colibri iMX6调试串口输出

root@colibri-imx6:~# ./uarttest/dev/ttymxc1

send successflly

send sucessfully

test!

//PC主机RS-232接口测试端口输出,收到message后,键盘键入”test!”后回车。

Welcome to minicom 2.7

……

this is a test program

--------------------------------

4). RS485串口通讯测试

a). Colibri iMX6 UART除了RS232模式,也支持RS422/485模式,这里还是利用UART2来测试RS485半双工模式通讯,基于Colibri Eva Board的硬件连接如下:

./ 将Colibri Eva Board连接器X2 bottom DB9 管脚4(RXD+),管脚5(RXD-)以及管脚1(GND)和PC主机485接口设备对接

./ 将Colibri Eva Board下面几个跳线做如下设置:

JP11 短接 – 让485接口可以发送以及接收收据,如果断开,则只能发送数据

JP12,JP14断开 – 用于插入120ohm终端电阻,针对RS-422模式

JP13,JP15短接 – 设置为半双工模式,如果断开,则为全双工模式

JP16短接 – UART2到RS232的功能关闭,切换到RS485功能;断开则反之。

b). 然后需要使能UART2 RS485功能,有两种方式,一种是在device tree中使能,另外一种是利用ioctrlTIOCSRS485在User Space中使能。

./ 在device tree中使能

//参考这里下载Toradex Linuxkernel V2.6版本源代码,根据如下patch文件修改arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts文件,并参考这里编译新的dtb文件后部署到Colibri iMX6模块上。

https://github.com/simonqin09/uarttest/blob/master/485.patch

然后可以和上面第三章节完全一样的两种方式操作UART2设备进行测试通信,无需任何改动。

./ 利用ioctrlTIOCSRS485 在C程序中使能并通信

//在上面uartconfig.h和uartconfig.c文件中添加485使能函数,同时可以配置RTS在发送中和发送后的电平以及时间延迟设置。

uart_485

//在uarttest.c中添加下面485使能,其他和上面RS232都一致。

--------------------------------

if(uart_485(fd)< 0)

{

printf("failedenable RS485 mode\n");

return -1;

}

else

printf("RS485mode enabled\n");

--------------------------------

完整代码同样可以参考上面第3章节里面的这三个文件链接

//程序部署后执行情况,可见收发都正常

--------------------------------

//Colibri iMX6调试串口输出

root@colibri-imx6:~# ./uarttest/dev/ttymxc1

RS485 mode enabled

send successflly

send sucessfully

test!

//PC主机RS485接口测试端口输出,收到message后,键盘键入”test!”后回车。

Welcome to minicom 2.7

……

this is a test program

--------------------------------

5).总结

本文基于NXP iMX6嵌入式平台在嵌入式linux系统下测试了UART相关通信,希望给大家有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值