创龙SBC‑TLT153 嵌入式 Linux 应用开发,交叉编译与 GDB 调试实践(中)
3 Linux常用开发案例Linux常用开发案例位于产品资料“4-软件资料\Demo\”路径下的base-demos目录。其中,案例bin目录存放可执行文件,案例src目录存放源码。
如需重新编译Linux常用开发案例,请将对应案例src目录拷贝至Ubuntu工作目录下,在src目录执行如下命令配置交叉编译工具链,并执行make命令进行案例编译。编译完成后,将在当前目录下生成可执行文件。Host#source /home/tronlong/T153/environment
Host# make
3.1 led_flash案例 3.1.1 案例功能
本案例通过向单板机用户可编程指示灯LED设备节点反复交替写入1、0数值,实现LED闪烁效果。LED点亮与熄灭时间均为0.5s。程序流程如下图所示。
LED设备节点为"/sys/class/leds/user-ledX/"目录下的brightness。
3.1.2 操作说明
将本案例bin目录下的可执行程序led_flash拷贝至单板机文件系统,并在可执行程序所在目录执行如下命令运行程序,即可看到单板机LED以0.5s的时间间隔进行闪烁。同时,串口终端打印系统全部LED设备信息和程序当前控制的LED设备信息。
Target# ./led_flash -help
Target# ./led_flash -n 3
3.1.3 关键代码
(1)预定义LED数组。程序由此数组获取LED信息,数组信息必须为系统已有LED信息,否则程序运行报错。
(2)LED亮灭操作和时间间隔。
3.2 uart_rw案例3.2.1案例功能
本案例实现串口读写功能。备注:SBC-TLT153单板机未引出RS-485/RS-232接口,因此本案例使用EPC-TLT153-BU工控机为例进行测试。程序流程如下图所示。串口初始化时将设置波特率、模式、数据位、停止位等参数。通过设备文件描述符对串口进行读写操作。
本案例支持的串口以及串口对应设备节点,如下表所示。
3.2.2 操作说明
(1)RS-232串口测试
我司EPC-TLT153-BU工控机默认配置RS-485/RS-232接口为RS-485功能。请联系我司销售或技术服务人员,将EX-TLBaseUART扩展板的拨码开关SW7拨至RS-232档位,配置为RS-232功能。本次以EPC-TLT153-BU工控机的RS-232功能为例进行演示,请通过USB转RS-232**串口线和杜邦线,将RS-232(G1、R1、T1)串口连接至PC机的USB接口,硬件连接如下图所示。
https://file1.elecfans.com/web3/M00/7E/50/wKgZO2rMWjaAZS7QAAhB4ryn-a8987.png
将本案例bin目录下的可执行程序uart_rw拷贝至文件系统,并在该可执行程序所在目录执行如下命令,查看程序参数信息。
Target# ./uart_rw -h
a)接收测试打开设备管理器,本次测试中调试串口DEBUG端口号为COM16,RS-232串口的端口号为COM18,如下图所示。
打开串口调试终端,设置COM16波特率为115200,8N1,无校验位。设置COM18波特率为115200,8N1,无校验位,并建立串口连接。调试串口终端执行如下命令,等待接收上位机发送的数据。Target# ./uart_rw -d /dev/ttyAS7 -r -s 8
在RS-232串口终端点击"View -> Command (Chat) Window",选中并打开"Command (Chat) Window"窗口。
在窗口中输入数据,例如"Tronlong",再按回车键。
调试串口终端将会打印接收到的数据。
https://file1.elecfans.com/web3/M00/7E/47/wKgZPGrMWEmAU2bJAAAV0VwRYnQ156.png
b)发送测试执行如下命令,通过RS-232串口发送数据至上位机,数据已在程序中定义。Target# ./uart_rw -d /dev/ttyAS7 -w -s 8
https://file1.elecfans.com/web3/M00/7E/4F/wKgZO2rMWFSANlQYAAAN5wU0MqU838.png
RS-232串口终端将会打印接收到的数据,如下图所示。
https://file1.elecfans.com/web3/M00/7E/47/wKgZPGrMWFyAWQ3IAAALa1bvZnA232.png
(2)RS-485串口测试本次以EPC-TLT153-BU工控机的RS-485(G1、B1、A1)串口为例进行演示,其他RS-485(Gx、Bx、Ax)串口测试同理。请使用RS-232转RS-485模块、USB转RS-232**串口线,将RS-485串口连接至PC机的USB接口,硬件连接如下图所示。
https://file1.elecfans.com/web3/M00/7E/48/wKgZPGrMWmuAKiZdAAhRFMMVVj4310.png
执行如下命令,进行RS-485串口数据读写操作。RS-485串口测试步骤与现象与RS-232类似,命令中的设备节点请根据实际情况修改即可。Target# ./uart_rw -d /dev/ttyAS7 -r -s 8 //读操作
Target# ./uart_rw -d /dev/ttyAS7 -w -s 8 //写操作3.2.3 关键代码
(1)串口初始化函数。
https://file1.elecfans.com/web3/M00/7E/4F/wKgZO2rMWHiAZZG1AACqOw6me0w100.png
https://file1.elecfans.com/web3/M00/7E/47/wKgZPGrMWHiAd3Y0AABiMFHueTc773.png
(2)串口读写函数。
https://file1.elecfans.com/web3/M00/7E/4F/wKgZO2rMWIyAFsrCAAAm9nvl1ac650.png
https://file1.elecfans.com/web3/M00/7E/47/wKgZPGrMWIyAOo-rAACcC3PyARk646.png
https://file1.elecfans.com/web3/M00/7E/4F/wKgZO2rMWIyAcLlqAABmHrwmb5U465.png
https://file1.elecfans.com/web3/M00/7E/4F/wKgZO2rMWIyAXMYnAACKgZ3uGNo804.png
(3)回环测试。
https://file1.elecfans.com/web3/M00/7E/4F/wKgZO2rMWKeAQCqaAAB5Gjs_MXU309.png
https://file1.elecfans.com/web3/M00/7E/48/wKgZPGrMWKeADiJjAAB4C8PKLKE640.png
(4)相关逻辑。
https://file1.elecfans.com/web3/M00/7E/48/wKgZPGrMWLaAXYumAACuKbksVLU678.png
3.3 can_perf案例3.3.1 案例功能
本案例基于SocketCAN实现CAN/CAN-FD总线通信,包含数据收发测试及误码率统计。程序原理如下。备注:SBC-TLT153单板机未引出CAN FD接口,因此本案例使用EPC-TLT153-BU工控机为例进行测试。发送端:(1)发送指定数量帧;(2)帧的数据长度由参数指定;(3)发送从0至255的递增数;(4)每一帧的发送间隔由参数指定。接收端:(1)接收CAN总线上的数据包;(2)提取数据包数据进行校验;(3)每接收到1000个数据帧打印一次帧数;(4)打印误码率,总接收帧数信息。程序流程如下图。
https://file1.elecfans.com/web3/M00/7E/4F/wKgZO2rMWMWAcMA4AAHToTIHt04020.png
3.3.2 操作说明
本次测试以EPC-TLT153-BU工控机的CAN FD(G1、L1、H1)接口(设备节点为:can0)为例进行演示,如需测试CAN FD(G2、L2、H2)接口,请将设备节点修改为can1。请准备两块EPC-TLT153-BU工控机,使用杜邦线将两个EPC-TLT153-BU工控机的CAN FD接口H1端子、L1端子和G1端子进行直连。接口的连接关系如下表所示。
https://file1.elecfans.com/web3/M00/7E/48/wKgZPGrMWNCAPHUeAAASJN4Rtho481.png
工控机上电启动,将本案例bin目录下的可执行程序can_perf分别拷贝至两个工控机的文件系统,进入可执行程序所在目录,执行如下命令查看程序参数信息。Target# ./can_perf -h
https://file1.elecfans.com/web3/M00/7E/4F/wKgZO2rMWOiAQM5QAAAxcv5SThQ680.png
https://file1.elecfans.com/web3/M00/7E/50/wKgZO2rMWkaACvJ3AAmfnaIwlz8167.png
参数解析:-d:CAN接口的对应节点;-r:作为接收端读取数据;-w:作为发送端发送数据;-f:收发数据帧的数量;-l:帧的数据长度;-i:帧间隔时长,单位为us,默认为0;-m:模式选择,默认为CAN模式,0:CAN模式,1:CAN FD模式;-h:帮助信息。将工控机1和工控机2上电启动,进入工控机文件系统,分别执行如下命令配置CAN FD接口波特率为1Mbps,配置数据波特率为5Mbps,并启动CAN0总线。Target# ip link set can0 down
Target# ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd onTarget# ip link set can0 up
https://file1.elecfans.com/web3/M00/7E/48/wKgZPGrMWPyARYEuAAAZmKsrPEc510.png
在工控机1的终端执行如下命令,设置工控机1的CAN0总线等待接收数据。Target# ./can_perf -d can0 -r -f 50000 -m 1
https://file1.elecfans.com/web3/M00/7E/4F/wKgZO2rMWQWAWRXgAAAMfdvQSaw005.png
在工控机2的终端窗口下,设置工控机2的CAN0总线以1000us的时间间隔发送50000帧数据至工控机1的CAN0总线。备注:当执行的命令未设置-i参数,默认发送数据帧间隔时长为0us,由于数据发送过快,可能导致系统资源(如缓冲区)迅速耗尽,从而触发"No buffer space available"错误,并造成数据帧丢失。Target# ./can_perf -d can0 -w -f 50000 -i 1000 -m 1
https://file1.elecfans.com/web3/M00/7E/4F/wKgZO2rMWQ-AOHn5AAAcAvD07-w112.png
https://file1.elecfans.com/web3/M00/7E/48/wKgZPGrMWQ-AGxbaAABah73lBYM944.png
从打印信息可以得知,接收端工控机1成功接收50000帧数据,误码率为0.00%,耗时为0.161秒。
页:
[1]