前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「干货」基于TMS320C6678开发板,ZYNQ Linux应用案例开发手册分享

「干货」基于TMS320C6678开发板,ZYNQ Linux应用案例开发手册分享

原创
作者头像
创龙科技Tronlong
发布2022-07-25 13:54:35
9060
发布2022-07-25 13:54:35
举报
文章被收录于专栏:FPGA/ARM/DSP技术专栏

本篇文章与大家分享基于TMS320C6678开发板的ZYNQ Linux应用案例开发测试分享,内容包含有开发案例基础说明、Linux常用开发案例和Python开发案例,后续还将分享更多ZYNQ端、DSP端、DSP+ZYNQ端的通信开发测试案例等,欢迎大家多多关注。

本次测试板卡为TMS320C6678开发板,它是一款基于TI KeyStone架构C6000系列TMS320C6678八核C66x定点/浮点DSP,以及Xilinx Zynq-7000系列XC7Z045/XC7Z100 SoC处理器设计的高端异构多核评估板,TMS320C6678开发板每核心主频可高达1.25GHz,XC7Z045/XC7Z100集成PS端双核ARM Cortex-A9 + PL端Kintex-7架构28nm可编程逻辑资源,引出双路CameraLink、双路SFP+光口、四路千兆网口、双路SATA、双路PCIe、四路USB、双路CAN、双路CAMERA、HDMI IN/OUT、LVDS、LCD、RS485、RS232、Micro SD、HPC FMC等接口。

开发案例说明

base-demos目录存放Linux常用开发案例,案例bin目录存放可执行文件,案例src目录存放源码。python-demos目录存放Python开发案例,案例脚本文件无需编译,可直接运行。

如需重新编译Linux常用开发案例,请将对应案例src目录复制到Ubuntu工作目录下,进入src目录执行如下命令加载PetaLinux环境变量,并执行make命令进行案例编译。编译完成后,将在当前目录下生成可执行文件。

Host# source /home/tronlong/PetaLinux/setting.sh

Host# make CC=arm-linux-gnueabihf-gcc

图 1
图 1

Linux常用开发案例

tl_led_flash案例

案例功能

本案例通过向评估底板用户指示灯LED设备节点反复交替写入1、0数值,实现LED闪烁效果。LED点亮与熄灭时间均为0.5s。

程序流程如下图所示:

图 2
图 2

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

图 3
图 3

操作说明

将本案例bin目录下的可执行程序tl_led_flash复制到评估板文件系统,并在可执行程序所在目录执行如下命令运行程序,即可看到评估底板LED4以0.5s的时间间隔进行闪烁。同时,串口终端打印系统全部LED设备信息和程序当前控制的LED设备信息。

Target# ./tl_led_flash -help

Target# ./tl_led_flash -n 1

图 4
图 4

关键代码

  1. 预定义LED数组。程序由此数组获取LED信息,数组信息必须为系统已有LED信息,否则程序运行报错。
图 5
图 5

LED亮灭操作和时间间隔。

图 6
图 6

tl_key_test案例

案例功能

本案例通过监听用户按键设备节点状态,检测按键事件。

程序流程如下图所示。

图 7
图 7

用户按键设备节点为"/dev/input/event0"。获取按键事件后进行按键键值匹配,再进行事件处理。

操作说明

将本案例bin目录下的可执行程序tl_key_test复制到评估板文件系统,在可执行程序所在目录执行如下命令运行程序,串口终端将打印提示信息。再按下评估板用户按键ZYNQ KEY1,程序将检测到按键事件,并打印按键状态信息。

Target# ./tl_key_test -help

Target# ./tl_key_test -d /dev/input/event0

图 8
图 8

关键代码

定义按键。

图 9
图 9

监听按键事件。

图 10
图 10

循环监听。

图 11
图 11

tl_can_echo案例

案例功能

本案例使用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/canutils/。

程序流程如下图所示。

图 12
图 12

操作说明

使用USB转CAN模块连接评估板CAN1接口和PC机USB接口,如下图所示。软件中的CAN0对应硬件CAN1接口。

图 13
图 13

参照调试工具安装文档安装USB转CAN驱动和ECAN Tools调试软件,双击打开ECAN Tools软件,选择设备类型,然后点击“打开设备”。

图 14
图 14

打开ECAN Tools,界面如下图所示。

图 15
图 15

将本案例bin目录下的PL端.bin格式可执行文件复制到评估板文件系统"/lib/firmware/"目录下,XC7Z045对应的PL端可执行文件为emio_can_demo_xc7z045.bin,XC7Z100对应的PL端可执行文件为emio_can_demo_xc7z100.bin。将PL端可执行文件重命名为system_wrapper.bin,然后执行如下命令进行加载。

此处的PL端可执行文件起到将PL端IO通过EMIO的方式路由到PS端CAN控制器的作用。

Target# echo system_wrapper.bin > /sys/class/fpga_manager/fpga0/firmware

图 16
图 16

进入评估板文件系统,使用文件系统自带的canconfig工具设置波特率,并启动CAN接口。

Target# canconfig can0 stop

Target# canconfig can0 bitrate 125000

Target# canconfig can0 start

图 17
图 17

将本案例bin目录下的可执行程序tl_can_echo复制到评估板文件系统,进入可执行程序所在目录,执行如下命令查看程序参数信息。

Target# ./tl_can_echo -help

图 18
图 18

执行如下命令绑定CAN接口,并接收由ECAN Tools发出的数据,然后将接收到的数据重新发送出去。在ECAN Tools中输入数据并点击“发送”按钮,可看到有两帧数据,一帧是发送数据,另一帧是接收数据。

Target# ./tl_can_echo can0 -v

图 19
图 19
图 20
图 20

可按"Ctrl+Z"暂停程序,并执行如下命令退出程序。

Target# killall -9 tl_can_echo

图 21
图 21

关键代码

使用socket监听CAN接口。

图 22
图 22

将从CAN接口接收到的数据重新发送出去。

图 23
图 23

tcp_udp_demos案例

案例功能

本案例主要实现客户端(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通信
图 24 TCP通信
图 25 UDP通信
图 25 UDP通信

服务端和客户端程序均可在评估板、PC机Ubuntu系统上运行。当服务端与客户端程序均在评估板上运行时,可通过127.0.0.1进行本地回环测试,无需经过路由器。为方便测试,本章节采用评估板本地回环测试,bin目录下的4个文件均为PS端可执行程序。

操作说明

将本案例bin目录下的4个可执行程序复制到评估板文件系统。

在Ubuntu中执行如下命令使用OpenSSH登陆评估板文件系统,如下图所示。

Host# sudo ssh root@192.168.1.158 //192.168.1.158为评估板IP地址,请根据实际情况修改

图 26
图 26

TCP通信测试

在可执行程序所在目录执行如下命令运行TCP服务端和客户端程序。2233为服务端程序指定的端口号,客户端程序端口号参数需与服务端程序一致。

Target# ./tl_tcp_server 2233 //TCP服务端命令

Host# ./tl_tcp_client 127.0.0.1 2233 //TCP客户端命令

程序执行后,客户端将会连接服务端。在服务端输入字符串"Tronlong",按下回车键即可在客户端显示对应内容。在客户端输入字符串"Hello Tronlong",按下回车键即可在服务端显示对应内容,如下图所示。

图 27 TCP服务端
图 27 TCP服务端
图 28 TCP客户端
图 28 TCP客户端

UDP通信测试

在可执行程序所在目录执行如下命令运行UDP服务端和客户端程序。2233为服务端程序指定的端口号,客户端程序端口号参数需与服务端程序一致。

Target# ./tl_udp_server 2233 //UDP服务端命令

Host# ./tl_udp_client 127.0.0.1 2233 //UDP客户端命令

程序执行后,客户端将不会连接服务端。服务端在收到客户端信息前无法得知客户端的存在,因此需要客户端先向服务端发送信息。

在客户端输入字符串"Tronlong",按下回车键即可在服务端显示对应内容。在服务端输入字符串"Hello Tronlong",按下回车键即可在客户端显示对应内容,如下图所示。

图 29 UDP客户端
图 29 UDP客户端
图 30 UDP服务端
图 30 UDP服务端

如需在PC端Ubuntu系统运行服务端或客户端程序,请将案例src源码目录拷贝到Ubuntu工作目录。进入源码目录后执行make命令,即可在当前目录下生成x86端可执行程序。在不同终端运行服务端或客户端程序的命令类似,但127.0.0.1需使用服务器IP地址替代。

Host# make

图 31
图 31

关键代码

以TCP通信程序为例。

tl_tcp_client.c

注意源码中的struct sockaddr_in、socket、connect、fgets、send、recv等数据结构和系统调用的使用。

tl_tcp_server.c

注意源码中的struct sockaddr_in、socket、connect、fgets、send、recv、bind、listen、accept等数据结构和系统调用的使用。

Python开发案例

本章节以两个简单案例演示Python的使用方法。

评估板ZYNQ端文件系统已支持Python2.7和Python3.5,相关库分别位于文件系统"/usr/lib/python2.7/"和"/usr/lib/python3.5/"目录下。

图 32
图 32

tl_led_flash

案例功能

本案例通过向评估底板用户指示灯LED设备节点反复交替写入1、0数值,实现LED闪烁效果。LED点亮与熄灭时间均为0.5s。

程序流程如下图所示。

图 33
图 33

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

图 34
图 34

操作说明

将案例目录下的tl_led_flash.py脚本文件拷贝到评估板文件系统,并在脚本文件所在目录执行如下命令查看程序参数信息。

Target# ./tl_led_flash.py -h

图 35
图 35

执行如下命令运行脚本程序,即可看到评估底板上的LED4进行闪烁。

Target# ./tl_led_flash.py

图 36
图 36

可按下"Ctrl+C"终止程序。

关键代码

查找所有LED设备。

图 37
图 37

控制LED亮灭。

图 38
图 38

tl_key_test

案例功能

本案例通过监听用户按键设备节点状态,检测按键事件。

程序流程如下图所示。

图 39
图 39

操作说明

将案例目录下的tl_key_test.py脚本文件拷贝到评估板文件系统,并在脚本文件所在目录执行如下命令查看程序参数信息。

Target# ./tl_key_test.py -h

图 40
图 40

执行如下命令运行脚本程序,串口终端将打印提示信息。再按下评估板用户输入按键ZYNQ KEY1,程序将检测到按键事件,并打印按键状态信息。

Target# ./tl_key_test.py -d /dev/input/event0

图 41
图 41

可按下"Ctrl+C"终止程序。

关键代码

打开按键设备。

图 42
图 42

监听按键事件。

图 43
图 43

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发案例说明
  • Linux常用开发案例
  • tl_led_flash案例
  • 案例功能
  • 操作说明
  • 关键代码
  • tl_key_test案例
  • 案例功能
  • 操作说明
  • 关键代码
  • tl_can_echo案例
  • 案例功能
  • 操作说明
  • 关键代码
  • tcp_udp_demos案例
  • 案例功能
  • 操作说明
  • 关键代码
  • Python开发案例
  • tl_led_flash
  • 案例功能
  • 操作说明
  • 关键代码
  • tl_key_test
  • 案例功能
  • 操作说明
  • 关键代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档