陈工-创龙科技 发表于 2026-2-25 14:02:08

RK3562 单板机 Linux 应用开发实战手册:LED/CAN/TCP/UART 案例与 Python 开发(二)

3 Linux常用开发案例我司提供的Linux常用开发案例位于产品资料“4-软件资料\Demo\”路径下的base-demos目录下。案例bin目录存放可执行文件,src目录存放源码。
如需重新编译Linux常用开发案例,请将对应案例src目录拷贝至Ubuntu工作目录下,进入src目录执行如下命令配置交叉编译工具链,并执行make命令进行案例编译。编译完成后,将在当前目录下生成可执行文件。
Host# source /home/tronlong/RK3562/environment
Host# make

https://file1.elecfans.com/web3/M00/4C/01/wKgZPGmebESAVM-PAACxzUZcjgE556.png
图34
3.1 led_flash案例3.1.1案例功能本案例通过向单板机用户可编程指示灯LED1设备节点反复交替写入1、0数值,实现LED1闪烁效果。LED1点亮与熄灭时间均为0.5s。
程序流程如下图所示。
https://file1.elecfans.com/web3/M00/4C/02/wKgZO2mebJmAadqpAAPQA5tUVJQ211.png
图35
LED设备节点为"/sys/class/leds/ledX/"目录下的brightness。
https://file1.elecfans.com/web3/M00/4C/01/wKgZPGmebKCAKI3MAAAinF0adqI352.png
图36
3.1.2操作说明将本案例bin目录下的可执行程序led_flash拷贝至单板机系统,并在可执行程序所在目录执行如下命令运行程序,即可看到单板机LED1以0.5s的时间间隔进行闪烁。同时,串口终端打印系统全部LED设备信息和程序当前控制的LED1设备信息。
Target# ./led_flash -help
Target# ./led_flash -n 1
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebLGAG8mkAAAteqelTi8677.png
图37
3.1.3关键代码(1)预定义LED数组。程序由此数组获取LED信息,数组信息必须为系统已有LED信息,否则程序运行报错。
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebLuAC7r9AAAidZNsywk657.png
图38
(2)LED亮灭操作和时间间隔。
https://file1.elecfans.com/web3/M00/4C/03/wKgZO2mebMSAb7z4AADco8kn6ts125.png
图39
3.2can_echo案例3.2.1案例功能本案例实现通过绑定一个CAN总线接口用于接收数据,当CAN端口接收到数据后,将数据重新发送到CAN总线接口。
备注:SBC-TL3562单板机主板未引出CAN接口,因此本案例仅支持SBC-TL3562-BU、SBC-TL3562-MU或SBC-TL3562-ME整机测试。
程序流程如下图所示。
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebM6AW-JqABJ5uMV-3lI588.png
图40
3.2.2操作说明本次以SBC-TL3562-BU整机的CAN功能为例进行演示。使用USB-CAN分析仪(型号:广成科技USBCAN-II FD)连接整机的CAN1或CAN2任一接口至PC机USB接口,硬件连接如下图所示。本次测试以CAN1接口(设备节点为:can0)进行演示。如需测试CAN2接口,请将设备节点修改为can1。
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebNqAbPqhAQsaZ2383NI956.png
图41
EX-TLBaseUART扩展板CAN1接口与USB-CAN分析仪的连接关系如下表所示。
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebOKAfLG-AAAPJrumAQg445.png
请参照《开发环境搭建》文档安装GCAN Tools调试软件。在PC端打开GCANTools软件,选择设备类型,然后点击“打开设备”。根据USB-CAN分析仪实际硬件连接,选择CAN1或CAN2。等待软件检测到设备后,设置波特率为"1000K",然后点击“确定”,如下图所示。
https://file1.elecfans.com/web3/M00/4C/03/wKgZO2mebOmAKrTLAABHR8QqMQc739.png
图42
进入GCAN Tools软件发送界面,取消"CAN FD"选项,USB-CAN分析仪连接成功后将会显示Connected状态,如下图所示。
https://file1.elecfans.com/web3/M00/4C/03/wKgZO2mebPGAUWUlAAEmx-hepAA801.png
图43
单板机启动进入系统,执行如下命令配置can0比特率为1Mbps,并启动。
Target# ip link set can0 down
Target# ip link set can0 type can bitrate 1000000
Target# ip link set can0 up
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebSKAIOHPAAAd9vpz8ZM979.png
图44
将本案例bin目录下的可执行程序can_echo拷贝至单板机系统,进入可执行程序所在目录,执行如下命令查看程序参数信息。
Target# ./can_echo --help
https://file1.elecfans.com/web3/M00/4C/03/wKgZO2mebSmAL_kbAAA2SiXdTco803.png
图45
执行如下命令绑定CAN0接口,并接收由GCAN Tools发出的数据,然后将接收到的数据重新发送出去。在GCAN Tools中输入数据并点击发送按钮,可看到有两帧数据,一帧是发送数据,另一帧是接收数据。
Target# ./can_echo -v can0
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebTmARcO2AAAL6x3r0p0906.png
图46
https://file1.elecfans.com/web3/M00/4C/03/wKgZO2mebVqAP7MqAAEofLnGPxg013.png
图47
https://file1.elecfans.com/web3/M00/4C/03/wKgZO2mebTmAdZpvAAAPxzNA-JM097.png
图48
https://file1.elecfans.com/web3/M00/4C/03/wKgZO2mebTmAGqirAAEyQIY3fA4653.png
图49
可按"Crtl + Z"暂停程序,并执行如下命令退出程序。
Target# killall -9 can_echo
https://file1.elecfans.com/web3/M00/4C/03/wKgZO2mebXqAIX3-AAAgPjnsbII541.png
图50
3.2.3关键代码(1)使用socket监听CAN接口。
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebZWAZpHeAABy_gBcmUQ395.png
图51
(2)将从CAN接口接收到的数据重新发送出去。
https://file1.elecfans.com/web3/M00/4C/03/wKgZO2mebZ6AKY3FAACWItVBMLo600.png
图52
3.3tcp_udp案例3.3.1案例功能本案例主要实现客户端(client)与服务端(server)的文本数据相互收发功能。本案例包含4个程序:
(1)tcp_server:TCP服务端测试程序。
(2)tcp_client:TCP客户端测试程序。
(3)udp_server:UDP服务端测试程序。
(4)udp_client:UDP客户端测试程序。
程序流程如下图所示。
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebamAE8YiABYNr3Ugsbs532.png
图53 TCP通信
https://file1.elecfans.com/web3/M00/4C/03/wKgZO2mebamAX3AtABX6zqgbq6Q420.png
图54 UDP通信
服务端和客户端程序均可在单板机、PC机Ubuntu系统上运行。本章节采用单板机本地回环测试,即服务端与客户端程序均在单板机上运行,通过127.0.0.1进行本地回环测试,无需经过路由器。案例bin目录下的4个文件均为ARM端可执行程序。
3.3.2操作说明将本案例bin目录下的4个可执行程序拷贝至单板机系统。
在Ubuntu中执行如下命令使用OpenSSH登录单板机系统,如下图所示。
Host# sudo ssh root@192.168.13.16 //192.168.13.16为单板机IP地址,请根据实际情况修改
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebbiAQaukAAC0Sr_44pU897.png
图55
(1)TCP通信测试
在可执行程序所在目录执行如下命令,分别在单板机运行TCP服务端和客户端程序。2233为服务端程序指定的端口号,客户端程序端口号参数需与服务端程序一致。
Target# ./tcp_server 2233 //TCP服务端命令
Host# ./tcp_client 127.0.0.12233 //TCP客户端命令
程序执行后,客户端将会连接服务端。在服务端(Target)输入字符串"Tronlong",按下回车键即可在客户端显示对应内容。在客户端(Host)输入字符串"Hello Tronlong",按下回车键即可在服务端显示对应内容,如下图所示。
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebc2AU-EZAAASN8l8GcA768.png
图56 TCP服务端

https://file1.elecfans.com/web3/M00/4C/03/wKgZO2mebd6AO4qzAAAmwyKRR4k955.png
图57 TCP客户端
(2)UDP通信测试
在可执行程序所在目录执行如下命令,分别在单板机运行UDP服务端和客户端程序。2233为服务端程序指定的端口号,客户端程序端口号参数需与服务端程序一致。
Target# ./udp_server 2233 //UDP服务端命令
Host# ./udp_client 127.0.0.12233 //UDP客户端命令
程序执行后,客户端将不会自动连接服务端。服务端在收到客户端信息前无法得知客户端的存在,因此需要客户端先向服务端发送信息。
在客户端(Host)输入字符串"Tronlong",按下回车键即可在服务端显示对应内容。在服务端(Target)输入字符串"Hello Tronlong",按下回车键即可在客户端显示对应内容,如下图所示。
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebe-AbB3xAAAk4zcekzI412.png
图58 UDP客户端
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebe-ALQxwAAAPW9vKWgY077.png
图59 UDP服务端
如需在PC机Ubuntu系统运行服务端或客户端程序,请将案例src源码目录拷贝至Ubuntu工作目录。进入源码目录后执行make命令,即可在当前目录下生成x86端可执行程序。在不同终端运行服务端或客户端程序的命令类似,但127.0.0.1需使用服务器IP地址替代。
Host# make
https://file1.elecfans.com/web3/M00/4C/02/wKgZPGmebf-Af6IyAAFZ789Ux7U937.png
图60

3.3.3关键代码以TCP通信程序为例。
(1)tcp_client.c
注意源码中的struct sockaddr_in、socket、connect、fgets、send、recv等数据结构和系统调用的使用。
(2)tcp_server.c
注意源码中的struct sockaddr_in、socket、connect、fgets、send、recv、bind、listen、accept等数据结构和系统调用的使用。

由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注Tronlong创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!


页: [1]
查看完整版本: RK3562 单板机 Linux 应用开发实战手册:LED/CAN/TCP/UART 案例与 Python 开发(二)