1 Linux常用开发案例
1.1 led flash案例
1.1.1案例功能
本案例通过向评估底板用户可编程指示灯LED设备节点反复交替写入1、0数值,实 现LED闪烁效果。LED点亮与熄灭时间均为0.5s。
程序流程如下图所示。
LED设备节点为"/sys/dass/leds/user-ledX/目录下的brightness。
1.1.2操作说明
将本案例bin目录下的可执行程序led_flash拷贝至评估板文件系统,并在可执行程序
所在目录执行如下命令运行程序,即可看到评估底板LED以0.5s的时间间隔进行闪烁。 同时,串口终端打印系统全部LED设备信息和程序当前控制的LED设备信息。
Target# ./led_flash-help
Target# ./led_flash-n2
1.1.3关键代码
(1)预定义LED数组。程序由此数组获取LED信息,数组信息必须为系统已有LED信 息,否则程序运行报错。
(2)LED亮灭操作和时间间隔。
1.2 key_demo案例
1.2.1案例功能
本案例通过监听用户输入按键USERO(KEY3)、USERI(KEY4)的状态,检测按键事件。 案例将获取按键事件后进行按键键值匹配,再进行事件处理,程序流程如下图所示。
1.2.2操作说明
本次测试以用户输入按键USERO(KEY3)示例进行测试,如需测试用户输入按键 USER1(KEY4),请修改对应的设备节点。
将本案例bin目录下的可执行程序key_demo拷贝至评估板文件系统,在可执行程序 所在日录执行如下命令运行程序,串口终端将打印提示信息。再按下评估板用户输入按 键USERO(KEY3),程序将检测到按键事件,并打印按键状态信息。
Target#./key_demo -help
Target# ./key_demo-d /dev/input/event3
1.2.3关键代码
(1)定义按键。
(2)监听按键事件。
(3)循环监听。
1.3 can_echo案例
1.3.1案例功能
本案例实现通过绑定一个CAN总线接口用于接收数据,当CAN端口接收到数据后, 将数据重新发送到CAN总线接口。
程序流程如下图所示。
1.3.2操作说明
请使用USB-CAN分析仪(型号:广成科技USBCAN-I FD)连接评估板CANO、CAN1 或CAN2任一接口至PC机USB接口,硬件连接如下图所示。本次测试以CANO接口(设 备节点为:canO)进行演示。如需测试CAN1接口,请将设备节点修改为can1,测试CAN2 接口,请将设备节点修改为can2。
评估板CANO接口与USB-CAN分析仪的连接关系如下表所示。
请参照《调试工具安装》文档安装GCAN Tools调试软件。在PC端打开GCANTools 软件,选择设备类型,然后点击“打开设备”。根据USB-CAN分析仪实际硬件连接,选 择CAN1或CAN2。等待软件检测到设备后,设置波特率为"1000K",然后点击“确定”, 如下图所示。
进入GCAN Toolbs软件发送界面,取消CAN FD"选项,USB-CAN分析仪连接成功后将 会显示Connected状态,如下图所示。
评估板启动进入评估板文件系统,执行如下命令配置can0比特率为1Mbps,并启动。
Target# ip linkset canO down Target# iplinkset canO type can bitrate 1000000 Target# iplinksetcan0 up
将本案例bin目录下的可执行程序can_echo拷贝至评估板文件系统,进入可执行程 序所在目录,执行如下命令查看程序参数信息
Target# /can_echo -help
执行如下命令绑定CANO接口,并接收由GCAN Tools发出的数据,然后将接收到的 数据重新发送出去。在GCANTools中输入数据并点击发送按钮,可看到有两帧数据,一 帧是发送数据,另一帧是接收数据。
Target# ./can_echo -vcan0
可按"Ctrl+Z"暂停程序,并执行如下命令退出程序
Target# killall-9can_echo
1.3.3关键代码
(1)使用socket监听CAN接口。
1.4 tcp_udp案例
1.4.1案例功能
本案例主要实现客户端(dient)与服务端(server)的文本数据相互收发功能。本案例包含 4个程序:
(1)tcp_server:TCP服务端测试程序
(2)tcp_dlient:TCP客户端测试程序。
(3)udp_server:UDP服务端测试程序。
(4)udp_cient:UDP客户端测试程序。
服务端和客户端程序均可在评估板、PC机Ubuntu系统上运行。本章节采用评估板本 地回环测试,即服务端与客户端程序均在评估板上运行,通过127.0.0.1进行本地回环测 试,无需经过路由器。案例bin目录下的4个文件均为ARM端可执行程序。
1.4.2操作说明
将本案例bin目录下的4个可执行程序拷贝至评估板文件系统。
在Ubuntu中执行如下命令使用OpenSSH登录评估板文件系统,如下图所示。 Host#sudo ssh root@192.168.13.73 //192.168.13.73为评估板IP地址,请根据实 际情况修改
(1)TCP通信测试
在可执行程序所在目录执行如下命令,分别在评估板运行TCP服务端和客户端程序。 2233为服务端程序指定的端口号,客户端程序端口号参数需与服务端程序一致。
Target# ./tcp_server 2233 //TCP服务端命令 Host#./tcp_client 127.0.0.12233 //TCP客户端命令
程序执行后,客户端将会连接服务端。在服务端(Target)输入字符串"Tronlong",按下 回车键即可在客户端显示对应内容。在客户端(Host)输入字符串"Hello Tronlong",按下回 车键即可在服务端显示对应内容,如下图所示。
(2)UDP通信测试
在可执行程序所在目录执行如下命令,分别在评估板运行UDP服务端和客户端程序。 2233为服务端程序指定的端口号,客户端程序端口号参数需与服务端程序一致。
Target# ./udp_server2233 //UDP服务端命令 Host#./udp_client 127.0.0.12233 //UDP客户端命令
程序执行后,客户端将不会自动连接服务端。服务端在收到客户端信息前无法得知客 户端的存在,因此需要客户端先向服务端发送信息。
在客户端(Host)输入字符串"Tronlong",按下回车键即可在服务端显示对应内容。在服 务端(Target)输入字符串"Hello Tronlong",按下回车键即可在客户端显示对应内容,如下 图所示。
如需在PC机Ubuntu系统运行服务端或客户端程序,请将案例src源码目录拷贝至 Ubuntu工作目录。进入源码目录后执行make命令,即可在当前目录下生成x86端可执 行程序。在不同终端运行服务端或客户端程序的命令类似,但127.0.0.1需使用服务器IP 地址替代。
Host#make
注意源码中的struct sockaddr_in、socket、connect、fgets、send、recv等数据结构和 1.4.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等数据结构和系统调用的使用
1.5 uart_rw案例
1.5.1案例功能
本案例实现评估板串口读写功能。
程序流程如下图所示。串口初始化时将设置波特率、模式、数据位、停止位等参数 通过设备文件描述符对串口进行读写操作。
本案例支持的串口以及串口对应设备节点,如下表所示。
1.5.2操作说明
(1)RS232 UARTO测试
请通过RS232交叉串口母母线、USB转RS232公头串口线,将评估板的RS232 UARTO 调试串口连接至PC机的USB接口,如下图所示。
将本案例bin目录下的可执行程序uart_rw拷贝至评估板文件系统,并在该可执行程 序所在目录执行如下命令,查看程序参数信息。
Target# ./uart_rw-h
a)评估板接收
打开设备管理器,本次测试中调试串口USB TO UART2端口号为COM9,RS232 UARTO 串口的端口号为COM6,如下图所示。
打开调试串口终端,COM9波特率设为1500000,8N1,无校验位。COM6波特率设
为115200,8N1,无校验位,并建立串口连接。评估板调试串口终端执行如下命令,评 估板等待接收上位机发送的数据
备注:评估板启动后首次执行程序uart_rw,会出现打印信息"of_dma_request_slave_cha nnel.",不影响正常使用,请忽略。
Target#
./uart_rw-d/dev/ttyS0 -r-s 8
在RS232 UARTO串口终端点击"View ->Command (Chat)Window",选中并打开"Co mmand (Chat)Window"窗口。
在窗口中输入数据,例如"Tronlong",再按回车键。
评估板调试串口终端将会打印接收到的数据。
b)评估板发送
执行如下命令,评估板通过RS232 UARTO串口发送数据至上位机,数据已在程序中定 义。
Target# ./uart_w -d/dev/ttys0-w-s8
RS232 UARTO串口终端将会打印接收到的数据,如下图所示。
(2)RS485串口测试
使用RS232转RS485模块、USB转RS232公头串口线,将评估板的RS485 UART7或 RS485UART8串口连接至PC机的USB接口,如下图所示。
RS232转RS485模块与评估板RS485串口连接方法及设备节点如下表所示。
本章节以RS485 UART7串口(设备节点为:ttyS7)为例进行演示。如需测试RS485 UART8 串口,请将设备节点修改为ttys8。
a)评估板接收
执行如下命令,将引脚配置成发送接收模式。如需测试RS485 UART8串口,请将命 令中123修改为122。
Target# echo123>/sys/dlass/gpio/export
Target# echo out>/sys/dlass/gpio/gpio123/direction Target# echo0>/sys/class/gpio/gpio123/value 执行如下命令,进行RS485 UART7串口数据读操作。RS485UART7串口测试步骤与现 象与RS232 UARTO类似,命令中的设备节点由ttyS0改成ttyS7即可。
Target# ./uart_rw -d /dev/ttyS7-f-s 8
/读操作
b)评估板发送
执行如下命令,将引脚配置成发送模式。如需测试RS485 UART8串口,请将命令中
123修改为122。
Target# echo out>/sys/dlass/gpio/gpio123/direction Target# echo1>/sys/dass/gpio/gpio123/value
执行如下命令,进行RS485 UART7串口数据写操作。RS485 UART7串口测试步骤与现 象与RS232 UART0类似,命令中的设备节点由tyS0改成ttyS7即可。
Target# ./uart_rw -d /dev/tys7 -W -s 8
1.5.3关键代码
(1)串口初始化函数。
2)串口读写函数。
(3)回环测试。
(4)相关逻辑。
1.6 Icd_demo案例
1.6.1案例功能
本案例基于Framebuffer,向显示设备写入对应数据,实现显示输出横向颜色带(黑、 红、紫、黄、绿、青、蓝、白),同时改变背光亮度。
程序流程如下图所示:
LCD设备节点为"/dev/fb0",背光控制设备节点为"/sys/class/backlght/backlight1",通 过向背光控制设备节点写入不同亮度值来控制其亮度。
1.6.2操作说明
案例支持LVDSLCD、TFTLCD、MIPI LCD和HDMIOUT显示,评估板系统默认支持HDMI OUT为主显示,LVDSLCD、MIPILCD为副显示。本次操作以LVDSLCD为例进行演示
请将10.4英寸LVDS显示屏(群创G104XCE-L01)与评估板的LVDSLCD(显示)、RES TS(触摸)、BACKLIGHT(背光)接口正确连接,硬件连接如下所示。 备注:系统基于FrameBuffer显示图像时,只支持单屏显示,不同显示屏需单独测试。
屏分辨率一致,设置完成可看到当前系统显示分辨率为1024x768。 (1) 由于系统默认的 Qt程序会影响本案例测试,因此需执行如下命令关闭系统默认 Qt程序。
Target# /etc/init.d/549weston stop
(2) 本案例测试需设置 FrameBuffer的分辨率为对应显示屏的分辨率才能正常显示图 像。请执行如下命令,设置当前系统FrameBuffer分辨率与测试所用的 LVDSLCD显示
Target# fbset -xres 1024 yres 768 Target# fbset
备注:显示屏分辨率可通过查阅产品资料“1-开箱必读产品规格书拓展模块规格书” 目录下的相关显示屏数据手册。
(3)将本案例bin目录下的可执行程序Ied_demo拷贝至评估板文件系统,并在该可 执行程序所在目录执行如下命令,查看程序参数信息。
Target# ./lcd_demo -h
(4)执行如下命令运行程序,即可看到LVDS显示屏显示横向颜色带,且循环翻转显 示,间隔为3s:同时LVDS屏背光亮度从100%、80%、60%、40%、20%、0%循环改 变,每级亮度保持时间为0.5s。
Target# ./lcd_demo-d/sys/class/backlight/backlight1/ 备注:如使用HDMI显示屏进行测试,则背光亮度不会发生变化。
可按下"Ctrl+C终止程序。
1.6.3关键代码
(1)背光亮度控制函数。
(2)颜色带显示函数。
(3)相关逻辑
2 Python开发案例
本章节以两个简单案例演示Python的使用方法。系统支持Python 38,相关库位于文 件系统"/usr/lib/python3.8/"目录下。
2.1 led_flash案例
2.1.1案例功能
本案例通过向评估底板用户可编程指示灯LED设备节点反复交替写入1、0数值,实 现LED闪烁效果。LED点亮与熄灭时间均为0.5s。
程序流程如下图所示。
LED设备节点为“/sys/class/leds/user-ledX/”目录下的brightness。
2.1.2操作说明
将案例目录下的led_flash.py脚本文件拷贝至评估板文件系统,并在脚本文件所在目 录执行如下命令查看程序参数信息。
Tar get# ./led_flash.py-h
执行如下命令运行脚本程序,即可看到评估底板上的LED进行闪烁。
Target# ./led_flash.py
可按下"Ctrl+C"终止程序。
2.1.3关键代码
(1)查找所有LED设备。
(2)控制LED亮灭。
2.2 key_demo案例
2.2.1案例功能
本案例通过监听用户输入按键USERO(KEY3)、USER1(KEY4)的状态,检测按键事件。 程序流程如下图所示。
2.2.2操作说明
将案例目录下的key_demo.py脚本文件拷贝至评估板文件系统,并在脚本文件所在目 录执行如下命令查看程序参数信息。
Target# ./key_demo.py-h
执行如下命令运行脚本程序,串口终端将打印提示信息。按下评估板用户输入按键 USERO(KEY3),程序将检测到按键事件,并打印按键状态信息。
备注:本次测试以用户输入按键USERO(KEY3)示例进行测试,如需测试用户输入按键 USER1(KEY4),请修改为对应的按键事件号。
Target# ./key_demo.py-d/dev/input/event3
可按下"Ctrl+C"终止程序。
2.2.3关键代码
(1)打开按键设备。
(2)监听按键事件。