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

3.1led_flash案例
3.1.1案例功能
本案例通过向单板机用户可编程指示灯LED1设备节点反复交替写入1、0数值,实现LED1闪烁效果。LED1点亮与熄灭时间均为0.5s。
程序流程如下图所示。

LED设备节点为"/sys/class/leds/ledX/"目录下的brightness。

3.1.2操作说明
将本案例bin目录下的可执行程序led_flash拷贝至单板机系统,并在可执行程序所在目录执行如下命令运行程序,即可看到单板机LED1以0.5s的时间间隔进行闪烁。同时,串口终端打印系统全部LED设备信息和程序当前控制的LED1设备信息。
Target# ./led_flash -help
Target# ./led_flash -n 1

3.1.3关键代码
(1)预定义LED数组。程序由此数组获取LED信息,数组信息必须为系统已有LED信息,否则程序运行报错。

(2)LED亮灭操作和时间间隔。

3.2.1案例功能
本案例基于SocketCAN实现CAN/CAN-FD总线通信,包含数据收发测试及误码率统计。程序原理如下。
备注:SBC-TL3576单板机主板未引出CANFD接口,因此本案例仅支持使用SBC-TL3576-BU、SBC-TL3576-MU或SBC-TL3576-ME整机测试。
发送端:
(1)发送指定数量帧;
(2)帧的数据长度由参数指定;
(3)发送从0至255的递增数;
(4)每一帧的发送间隔由参数指定。
接收端:
(1)接收CAN总线上的数据包;
(2)提取数据包数据进行校验;
(3)每接收到1000个数据帧打印一次帧数;
(4)打印误码率,总接收帧数信息。
程序流程如下图。

3.2.2操作说明
本次测试以SBC-TL3576-BU整机的CAN FD(G1、L1、H1)接口(设备节点为:can0)为例进行演示,如需测试CAN FD(G2、L2、H2)接口,请将设备节点修改为can1。
请准备两个SBC-TL3576-BU整机,使用杜邦线将两个SBC-TL3576-BU整机的CAN FD接口H1端子、L1端子和G1端子进行直连。
单板机接口的连接关系如下表所示。


单板机上电启动,将本案例bin目录下的可执行程序can_perf分别拷贝至两个单板机的文件系统,进入可执行程序所在目录,执行如下命令查看程序参数信息。
Target# ./can_perf -h

参数解析:
-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 1000000dbitrate5000000fd on
Target# ip link set can0 up

在单板机1的终端执行如下命令,设置单板机1的CAN0总线等待接收数据。
Target# ./can_perf -d can0 -r -f 50000

在单板机2的终端窗口下,设置单板机2的CAN0总线以1000us的时间间隔发送50000帧数据至单板机1的CAN0总线。
备注:当执行的命令未设置-i参数时,默认发送数据帧间隔时长为0us,由于数据发送过快,可能导致系统资源(如缓冲区)迅速耗尽,从而触发"No buffer space available"错误,并造成数据帧丢失。
Target# ./can_perf -d can0 -w -f 50000 -i 1000


从打印信息可以得知,接收端单板机1成功接收50000帧数据,误码率为0.00%,每帧耗时为0.139s。
3.2.3关键代码
(1)解析传递参数。

(2)初始化CAN接口。

(3)发送端。

(4)接收端。

(5)校验接收到的数据信息。

(6)打印接收到的数据信息。

3.3uart_rw案例
3.3.1案例功能
本案例实现单板机串口读写功能。
备注:SBC-TL3576单板机主板未引出RS-485/RS-232接口,因此本案例仅支持使用SBC-TL3576-BU、SBC-TL3576-MU或SBC-TL3576-ME整机测试。
程序流程如下图所示。串口初始化时将设置波特率、模式、数据位、停止位等参数。通过设备文件描述符对串口进行读写操作。

本案例测试的串口对应设备节点如下表所示。

3.3.2操作说明
(1)RS-232串口测试
我司整机默认配置RS-485/RS-232接口为RS-485功能。请联系我司销售或技术服务人员,将EX-TLBaseUART扩展板的拨码开关SW7拨至RS-232档位,配置为RS-232功能。
本次以SBC-TL3576-BU整机的RS-232功能为例进行演示,请通过USB转RS-232公头串口线和杜邦线,将整机的RS-232(G1、R1、T1)串口连接至PC机的USB接口,硬件连接如下图所示。

将本案例bin目录下的可执行程序uart_rw拷贝至单板机系统,并在该可执行程序所在目录执行如下命令,查看程序参数信息。
Target# ./uart_rw -h

1.单板机接收
打开设备管理器,本次测试中调试串口DEBUG端口号为COM16,RS-232串口的端口号为COM18,如下图所示。

打开调试串口终端,COM16波特率设为115200,8N1,无校验位。COM18波特率设为115200,8N1,无校验位,并建立串口连接。单板机调试串口终端执行如下命令,单板机等待接收上位机发送的数据。
备注:单板机启动后首次执行程序uart_rw,会出现打印信息"of_dma_request_slave_channel…",不影响正常使用,请忽略。
Target# ./uart_rw -d /dev/ttyS1-r -s 8

在RS-232串口终端点击"View->Command (Chat) Window",选中并打开"Command (Chat) Window"窗口。

在窗口中输入数据,例如"Tronlong",再按回车键。

单板机调试串口终端将会打印接收到的数据。

2.单板机发送
执行如下命令,单板机通过RS-232串口发送数据至上位机,数据已在程序中定义。
Target# ./uart_rw -d /dev/ttyS1-w -s 8

RS-232串口终端将会打印接收到的数据,如下图所示。

(2)RS-485串口测试
本次以SBC-TL3576-BU整机的RS-485(G1、B1、A1)串口为例进行演示,其他RS-485(Gx、Bx、Ax)串口测试同理。请使用RS-232转RS-485模块、USB转RS-232公头串口线,将整机的RS-485串口连接至PC机的USB接口,硬件连接如下图所示。

执行如下命令,进行RS-485串口数据读写操作。RS-485串口测试步骤与现象与RS-232类似,命令中的设备节点请根据实际情况修改即可。
Target# ./uart_rw -d /dev/ttyS1-r-s 8 //读操作
Target# ./uart_rw -d /dev/ttyS1-w -s 8 //写操作
3.3.3关键代码
(1)串口初始化函数。


(2)串口读写函数。





(3)回环测试。


(4)相关逻辑。

由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注Tronlong创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
审核编辑 黄宇
-
单板机
+关注
关注
1文章
57浏览量
18947 -
MQTT
+关注
关注
5文章
748浏览量
25387 -
rk3576
+关注
关注
1文章
326浏览量
1760
发布评论请先 登录
基于RK3576单板机的Modbus数据采集开发指南
RK3576单板机Docker镜像构建与容器运行手册
RK3576单板机玩转ROS2:通信测试+编译部署全流程详解
RK3576 单板机 NPU 边缘 AI 开发手册
RK3576 单板机高清视频图像处理开发实战手册(三)
RK3576 单板机高清视频图像处理开发实战手册(二)
RK3576 单板机高清视频图像处理开发实战手册(一)
RK3576 单板机嵌入式 Qt 界面与多屏异显开发手册(三)
RK3576 单板机嵌入式 Qt 界面与多屏异显开发手册(二)
RK3576 单板机 LinuxSDK 开发与系统定制手册(二)
RK3576 单板机 LinuxSDK 开发与系统定制手册(一)
RK3576 单板机系统使用手册:配置、升级与组件安装指南(三)
RK3576 单板机系统使用手册:配置、升级与组件安装指南(二)
RK3576 单板机系统使用手册:配置、升级与组件安装指南(一)
RK3576 单板机 C/Python/MQTT 应用开发手册(二)
评论