1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
目 录 1 开发案例说明 4 2 Linux 常用开发案例 4 2.1 tl_led_flash 案例 4 2.2 tl_key_test 案例 7 2.3 tl_can_echo 案例 11 2.4 tcp_udp_demos 案例 17 3 Python 开发案例 21 3.1 tl_led_flash 22 3.2 tl_key_test 26 1 开发案例说明 本文档涉及的开发案例位于产品资料“4-软件资料Demo l-linux-application”路径下 的 base-demos 和 python-demos 目录。 base-demos 目录存放 Linux 常用开发案例,案例 bin 目录存放可执行文件,案例 src目录存放源码。 python-demos 目录存放 Python 开发案例, 案例脚本文件无需编译, 可直接运行。 测试板卡是基于创龙科技Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC工业级核心板。 如需重新编译 Linux 常用开发案例,请将对应案例 src 目录复制到 Ubuntu 工作目录 下,进入 src 目录执行如下命令加载 PetaLinux 环境变量,并执行 make 命令进行案例编译。编译完成后,将在当前目录下生成可执行文件。 Host# source /home/tronlong/PetaLinux/setting.sh Host# make CC=arm-linux-gnueabihf-gcc 图 1 2 Linux 常用开发案例 2.1 tl_led_flash 案例 2.1.1 案例功能 本案例通过向评估底板用户指示灯 LED 设备节点反复交替写入 1 、0 数值,实现 LED闪烁效果。 LED 点亮与熄灭时间均为 0.5s。 程序流程如下图所示: 图 2 LED 设备节点为“/sys/class/leds/user-ledX/”目录下的 brightness 。 图 3 2.1.2 操作说明 将本案例 bin 目录下的可执行程序 tl_led_flash 复制到评估板文件系统,并在可执行 程序所在目录执行如下命令运行程序,即可看到评估底板 LED1 以 0.5s 的时间间隔进行 闪烁。同时,串口终端打印系统全部 LED 设备信息和程序当前控制的 LED 设备信息。 Target# Target# ./tl_led_flash -help ./tl_led_flash -n 1 图 4 2.1.3 关键代码 (1) 预定义 LED 数组。程序由此数组获取 LED 信息,数组信息必须为系统已有 LED 信 息,否则程序运行报错。 图 5 (2) LED 亮灭操作和时间间隔。 图 6 2.2 tl_key_test 案例 2.2.1 案例功能 本案例通过监听用户按键设备节点状态, 检测按键事件。 程序流程如下图所示。 图 7 用户按键设备节点为“/dev/input/event0”。获取按键事件后进行按键键值匹配,再进 行事件处理。 2.2.2 操作说明 将本案例 bin 目录下的可执行程序 tl_key_test 复制到评估板文件系统, 在可执行程序 所在目录执行如下命令运行程序,串口终端将打印提示信息。再按下评估板用户按键 KEY1, 程序将检测到按键事件,并打印按键状态信息。 Target# Target# ./tl_key_test -help ./tl_key_test -d /dev/input/event0 图 8 2.2.3 关键代码 (1) 定义按键。 图 9 (2) 监听按键事件。 图 10 (3) 循环监听。 图 11 2.3 tl_can_echo 案例 2.3.1 案例功能 本案例使用 canutils 工具包的canecho 程序,实现 CAN 接口数据接收并重发功能。 canutils 工具包内含 5 个独立的程序, 分别为 canconfig、candump、canecho、cansend、 cansequence 。各程序功能简述如下: (1) canconfig:用于配置 CAN 接口参数,比如波特率、模式等。 (2) candump:从 CAN 接口接收数据并以十六进制形式打印到标准输出, 亦可输出到 指定文件。 (3) canecho:从 CAN 接口接收数据,并将接收到的数据对外发送。 (4) cansend:向指定 CAN 接口发送数据。 (5) cansequence:向指定 CAN 接口发送自动重复递增数字,或指定接收模式并校验 接收的递增数字。 本案例仅使用 canecho 功能, 如需实现其他功能, 可自行下载 canutils 工具包并从中 获取对应功能程序源码。下载链接:https://public.pengutronix.de/software/socket-can/ca nutils/。 程序流程如下图所示。 图 12 2.3.2 操作说明 使用 USB 转 CAN 模块连接评估板 CAN 接口和 PC 机 USB 接口,如下图所示。 图 13 参照调试工具安装文档安装 USB 转 CAN 驱动和 ECAN Tools 调试软件,双击打开 ECAN Tools 软件,选择设备类型,然后点击“打开设备”。 图 14 打开 ECAN Tools,界面如下图所示。 图 15 将本案例 bin 目录下的 PL 端.bin 格式可执行文件复制到评估板文件系统"/lib/firmwar e/"目录下,xc7z020 对应的 PL 端可执行文件为 emio_can_demo_xc7z020.bin ,xc7z010 对 应的 PL 端可执行文件为 emio_can_demo_xc7z010.bin 。将 PL 端可执行文件重命名为 syst em_wrapper.bin,然后执行如下命令加载 PL 端可执行文件。 此处的 PL 端可执行文件起到将 PL 端 IO 通过 EMIO 的方式路由到 PS 端 CAN 控制器的 作用。 Target# echo system_wrapper.bin > /sys/class/FPGA_manager/fpga0/firmware 图 16 进入评估板文件系统, 使用文件系统自带的 canconfig 工具设置波特率,并启动 CAN 接口。 Target# Target# Target# canconfig canconfig canconfig can0 stop can0 bitrate 125000 can0 start 图 17 将本案例 bin 目录下的可执行程序 tl_can_echo 复制到评估板文件系统,进入可执行 程序所在目录,执行如下命令查看程序参数信息。 Target# ./tl_can_echo -help 图 18 执行如下命令绑定 CAN 接口,并接收由 ECAN Tools 发出的数据,然后将接收到的数 据重新发送出去。在 ECAN Tools 中输入数据并点击“发送”按钮,可看到有两帧数据, 一帧是发送数据,另一帧是接收数据。 Target# ./tl_can_echo can0 -v 图 19 图 20 可按"Ctrl + Z"暂停程序,并执行如下命令退出程序。 Target# killall -9 tl_can_echo 图 21 2.3.3 关键代码 (1) 使用 socket 监听 CAN 接口。 图 22 (2)将从 CAN 接口接收到的数据重新发送出去。 图 23 2.4 tcp_udp_demos 案例 2.4.1 案例功能 本案例主要实现客户端(client)与服务端(server)的文本数据相互收发功能。本案例包含 4 个程序: (1) tl_tcp_server:TCP 服务端测试程序。 (2) tl_tcp_client :TCP 客户端测试程序。 (3) tl_udp_server:UDP 服务端测试程序。 (4) tl_udp_client :UDP 客户端测试程序。 程序流程如下图所示: 图 24 TCP 通信 图 25 UDP 通信 服务端和客户端程序均可在评估板、 PC 机 Ubuntu 系统上运行。当服务端与客户端程 序均在评估板上运行时, 可通过 127.0.0.1 进行本地回环测试, 无需经过路由器。为方便 测试,本章节采用评估板本地回环测试, bin 目录下的 4 个文件均为 ARM 端可执行程序。 2.4.2 操作说明 将本案例 bin 目录下的 4 个可执行程序复制到评估板文件系统。 在 Ubuntu 中执行如下命令使用OpenSSH 登陆评估板文件系统,如下图所示。 Host# sudo sshroot@192.168.1.158 //192.168.1.158 为评估板 IP,请根据实际情况修 改 图 26 (1) TCP 通信测试 在可执行程序所在目录执行如下命令运行 TCP 服务端和客户端程序。 2233 为服务端 程序指定的端口号,客户端程序端口号参数需与服务端程序一致。 Target# Target# ./tl_tcp_server 2233 //TCP 服务端命令 ./tl_tcp_client 127.0.0.1 2233 //TCP 客户端命令 程序执行后,客户端将会连接服务端。在服务端输入字符串"Tronlong" ,按下回车键 即可在客户端显示对应内容。在客户端输入字符串"Hello Tronlong",按下回车键即可在服 务端显示对应内容,如下图所示。 图 27 TCP 服务端 图 28 TCP 客户端 (2) UDP 通信测试 在可执行程序所在目录执行如下命令运行 UDP 服务端和客户端程序。 2233 为服务端 程序指定的端口号,客户端程序端口号参数需与服务端程序一致。 Target# Target# ./tl_udp_server 2233 //UDP 服务端命令 ./tl_udp_client 127.0.0.1 2233 //UDP 客户端命令 程序执行后, 客户端将不会连接服务端。服务端在收到客户端信息前无法得知客户端 的存在,因此需要客户端先向服务端发送信息。 在客户端输入字符串"Tronlong",按下回车键即可在服务端显示对应内容。在服务端 输入字符串"HelloTronlong",按下回车键即可在客户端显示对应内容,如下图所示。 图 29 UDP 客户端 图 30 UDP 服务端 如需在 PC 端 Ubuntu 系统运行服务端或客户端程序,请将案例 src 源码目录拷贝到 Ubuntu 工作目录。进入源码目录后执行 make 命令,即可在当前目录下生成 x86 端可执 行程序。在不同终端运行服务端或客户端程序的命令类似, 但 127.0.0.1 需使用服务器 IP 地址替代。 Host# make 图 31 2.4.3 关键代码 以 TCP 通信程序为例。 (1) tl_tcp_client.c 注意源码中的 struct sockaddr_in 、socket 、connect 、fgets 、send 、recv 等数据结构和 系统调用的使用。 (2) tl_tcp_server.c 注意源码中的 struct sockaddr_in、socket、connect、fgets、send 、recv 、bind 、listen、 accept 等数据结构和系统调用的使用。 3 Python 开发案例 本章节以两个简单案例演示 Python 的使用方法。 系统已支持 Python2.7 和 Python3.5,相关库分别位于文件系统“/usr/lib/python2.7/”和 “/usr/lib/python3.5/”目录下。 图 32 3.1 tl_led_flash 3.1.1 案例功能 本案例通过向评估底板用户指示灯 LED 设备节点反复交替写入 1 、0 数值,实现 LED 闪烁效果。 LED 点亮与熄灭时间均为 0.5s。 程序流程如下图所示。 图 33 LED 设备节点为“/sys/class/leds/user-ledX/”目录下的 brightness 。 图 34 3.1.2 操作说明 将案例目录下的 tl_led_flash.py 脚本文件拷贝到评估板文件系统,并在脚本文件所在 目录执行如下命令查看程序参数信息。 Target# ./tl_led_flash.py -h 图 35 执行如下命令运行脚本程序,即可看到评估底板上的 LED1 进行闪烁。 Target# ./tl_led_flash.py 图 36 可按下"Ctrl + C"终止程序。 3.1.3 关键代码 (1) 查找所有 LED 设备。 图 37 (2) 控制 LED 亮灭。 图 38 3.2 tl_key_test 3.2.1 案例功能 本案例通过监听用户按键设备节点状态, 检测按键事件。 程序流程如下图所示。 图 39 3.2.2 操作说明 将案例目录下的 tl_key_test.py 脚本文件拷贝到评估板文件系统,并在脚本文件所在 目录执行如下命令查看程序参数信息。 Target# ./tl_key_test.py -h 图 40 执行如下命令运行脚本程序, 串口终端将打印提示信息。再按下评估板用户按键 KEY1, 程序将检测到按键事件,并打印按键状态信息。 Target# ./tl_key_test.py -d /dev/input/event0 图 41 可按下"Ctrl + C"终止程序。 3.2.3 关键代码 (1) 打开按键设备。 图 42 (2) 监听按键事件。 图 43 |
|
相关推荐
|
|
378 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程介绍之烧写所需镜像
511 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写方法
542 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
773 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核源代码的目录结构和文件说明
694 浏览 0 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 12:46 , Processed in 0.418876 second(s), Total 33, Slave 26 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号