|
3 Linux常用开发案例 我司提供的Linux常用开发案例位于产品资料“4-软件资料\Demo\”路径下的base-demos目录下。案例bin目录存放可执行文件,src目录存放源码。 如需重新编译Linux常用开发案例,请将对应案例src目录拷贝至Ubuntu工作目录下,进入src目录执行如下命令配置交叉编译工具链,并执行make命令进行案例编译。编译完成后,将在当前目录下生成可执行文件。
Host# source /home/tronlong/RK3576/environment Host# make
3.1 led_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 can_perf案例3.2.1案例功能本案例基于SocketCAN实现CAN/CAN-FD总线通信,包含数据收发测试及误码率统计。程序原理如下。 备注:SBC-TL3576单板机主板未引出CAN FD接口,因此本案例仅支持使用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 1000000 dbitrate 5000000 fd 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.3 uart_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创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
|