基于TMS320C6678开发板的ZYNQ PS + PL异构多核案例开发手册(2)

本次测试板卡为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等接口。

emio_uart_demo案例

案例功能

案例功能:PS端通过EMIO方式使用UART0串口进行数据收发。

本案例默认将UART1作为PS端调试串口。

图 59

CON19(RS232)通过SP3232EEY串口电平转换芯片引出PL端串口(EMIO UART0),TX和RX引脚分别为K10、L10,电平为3.3V。

图 60

操作说明

基于裸机测试

请使用Micro USB线连接PC机和评估板PS端串口CON9(USB TO UART),使用USB转RS232公头串口线和RS232交叉串口母线连接评估板的PL端调试串口CON19和PC机。

图 61

打开设备管理器,确认评估板PS端和PL端串口对应的COM端口 。打开串口调试终端SecureCRT,选择对应的COM端口 ,设置波特率为115200,8N1,无校验位,并建立串口连接。

加载PS端裸机程序、PL端程序后,即可看到PS端串口调试终端打印如下信息。

图 62

PL端串口调试终端点击”View -> Command (Chat) Window”,选中并打开”Command (Chat) Window”窗口。在窗口中输入十个字符,再按回车键进行发送。PS端接收到PL端串口的字符后,会将字符通过PL端串口调试终端进行回显。

图 63

图 64

此时,PS端串口调试终端将会打印通过PL端串口接收到的字符。

图 65

基于Linux测试

将本案例的PL端.bin格式可执行文件复制到”/lib/firmware/”目录下,并将PL端可执行文件重命名为system_wrapper.bin,然后执行如下命令加载PL端可执行文件。

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

图 66

UART0对应的设备节点为”/dev/ttyPS1″。

图 67

将产品资料“4-软件资料DemoZYNQ_Demotl-linux-applicationbase-demostl_uart_rwbin”目录下的可执行程序tl_uart_rw复制到评估板文件系统。

在PS端串口调试终端执行如下命令,进行串口数据读操作。

Target# ./tl_uart_rw -d /dev/ttyPS1 -r -s 8

在PL端串口调试终端点击”View -> Command (Chat) Window”,选中并打开”Command (Chat) Window”窗口。在窗口中输入8个字符,再按回车键进行发送。

图 68

此时,PS端串口调试终端将会打印通过PL端串口接收到的字符。

图 69

在PS端串口调试终端执行如下命令,进行串口数据写操作,数据已在程序中定义。

Target# ./tl_uart_rw -d /dev/ttyPS1 -w -s 8

图 70

此时,PL端串口调试终端显示PS端向PL端串口发送的字符。

图 71

Vivado工程说明

进入BLOCK DESIGN开发界面,双击ZYNQ7 Processing System IP核框图,再点击”MIO Configuration”,在I/O Peripherals下可看到UART0已配置成EMIO模式。

图 72

axi_video_display_demo案例

案例功能

案例功能:

  1. 支持从PS端使用GStreamer或PL端使用Video Test Pattern Generator IP核产生图像到显示屏上显示。
  2. PL端主要负责产生分辨率为1080P60的时序、将视频流转换成为并行的行场视频信 输出到显示屏上显示。
  3. PS端实现FrameBuffer驱动与触摸功能。

操作说明

如需测试LCD显示屏,请将创龙科技的7英寸LCD显示屏TL070A通过FFC软排线连接至评估板CON21接口。如需测试LVDS显示屏,请将LVDS显示屏的屏幕接口连接至评估板的LVDS插针处,并将LVDS显示屏的背光接口连接至评估板的Backlight插针处,同时评估板J1跳线帽选择2.5V档位,以配置FMC IO的BANK电压为2.5V。

图 73

LCD显示屏测试

将本案例的动态设备树镜像文件
axi-video-display-480p.dtbo(显示功能)、touch-screen-ads7846.dtbo(触摸功能)和PL端.bin格式可执行文件复制到”/lib/firmware/”目录下,并将PL端可执行文件重命名为system_wrapper.bin,然后执行如下命令加载设备树文件
axi-video-display-480p.dtbo和PL端可执行文件。

Target# mount -t configfs configfs /configfs

Target# mkdir /configfs/device-tree/overlays/lcd

Target# echo axi-video-display-480p.dtbo > /configfs/device-tree/overlays/lcd/path

图 74

再执行如下命令,加载设备树文件touch-screen-ads7846.dtbo。

Target# mkdir /configfs/device-tree/overlays/touch-screen

Target# echo touch-screen-ads7846.dtbo > /configfs/device-tree/overlays/touch-screen/path

图 75

命令执行后,可看到设备节点”/dev/fb0″与”/dev/input/touchscreen0″设备节点。

图 76

图 77

执行如下命令进行显示测试,使用的工具为GStreamer的gst-launch,设置的分辨率为480P(800*480),输出为mode0测试图像。

Target# gst-launch-1.0 -v videotestsrc pattern=0 num-buffers=1 ! ‘video/x-raw, format=(string)BGRA, width=(int)800, height=(int)480’ ! filesink location=/dev/fb0

图 78

图 79

执行如下命令,使能环境变量并执行校准程序。

Target# source /etc/profile.d/tslib.sh

Target# ts_calibrate

命令执行命令后,LCD将会弹出校准界面。请依次点击校准准星,在连续点击五次之后,将会在评估板文件系统”/etc/”目录下生成触摸屏校准文件pointercal,校准后的信息记录在pointercal文件中。

图 80

图 81

LCD屏幕的背光支持8级变化,亮度级数为1~8,关闭为0,最亮为8。

执行如下命令,查看当前亮度。

Target# cat /sys/class/backlight/backlight/brightness

执行如下命令,调整背光亮度。

Target# echo 5 > /sys/class/backlight/backlight/brightness

执行如下命令,查看最高亮度级数。

Target# cat /sys/class/backlight/backlight/max_brightness

图 82

LVDS显示屏测试

将本案例的动态设备树镜像文件
axi-video-display-1080p.dtbo(显示功能)和PL端.bin格式可执行文件复制到”/lib/firmware/”目录下,并将PL端可执行文件重命名为system_wrapper.bin,然后执行如下命令加载设备树文件
axi-video-display-1080p.dtbo和PL端可执行文件。

Target# mount -t configfs configfs /configfs

Target# mkdir /configfs/device-tree/overlays/lvds

Target# echo axi-video-display-1080p.dtbo > /configfs/device-tree/overlays/lvds/path

图 83

加载完成后,文件系统将会生成”/dev/fb0″设备节点。

图 84

执行如下命令进行显示测试,使用的工具为GStreamer的gst-launch,本次测试使用友达光电的15.6英寸LVDS显示屏G156HTN02.0,设置的分辨率为1080P(1920*1080),输出为mode0测试图像。

Target# gst-launch-1.0 -v videotestsrc pattern=0 num-buffers=1 ! ‘video/x-raw, format=(string)BGRA, width=(int)1920, height=(int)1080’ ! filesink location=/dev/fb0

图 85

图 86

Vivado工程说明

VTC IP核默认产生分辨率为1080P60的时序,Video Test Pattern Generator IP核用于产生测试视频,AXI VDMA IP核用于搬运Video Test Pattern Generator IP核产生的或用户的视频数据,AXI-Stream to video out IP核将Video Timing Controller和AXI VDMA IP核输出的视频流转换成为并行的行场视频信 ,行场视频信 通过LCD接口输出到显示屏。

SPI总线通过EMIO方式与显示屏的触摸芯片进行连接,PS端TTC定时器通过EMIO方式输出显示屏的背光PWM。

图 87

点击BLOCK DESIGN开发界面下的”Address Editor”选项,可查看IP核分配的地址,PS端可通过对应地址对IP核进行控制。

图 88

模块/IP核配置

Video Test Pattern Generator IP核

本案例使用Video Test Pattern Generator IP核产生测试视频。

Video Test Pattern Generator IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg103-v-tpg.pdf》。根据文档,通过寄存器control可使能IP核;通过寄存器active_height可设置视频信 高度;通过寄存器active_width可设置视频信 位宽;通过寄存器background_pattern_id可选择输出的背景图像。

图 89

图 90

VTC IP核

VTC IP核用于产生分辨率为1080P60的时序。

VTC(Video Timing Controller) IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg016_v_tc.pdf》,具体配置如下。

图 91

AXI-Stream to Video Out IP核

本案例使用AXI-Stream to video out IP核将视频流转换成为并行的行场视频信 。

AXI-Stream to Video Out IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg044_v_axis_vid_out.pdf》。AXI-Stream to Video Out IP核配置Video Format为RGB、Pixels Per Clock为1,数据位宽为24bit。

图 92

AXI VDMA IP核

本案例使用AXI VDMA IP核进行视频数据缓存。

AXI VDMA(AXI Video Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg020_axi_vdma.pdf》。AXI VDMA IP核中的S2MM将视频传到DDR中,MM2S从DDR中获取视频。本案例IP核使用3个Frame Buffers,Stream数据位宽为32bit,Memory Map数据位宽为64bit。

图 93

配置VDMA为读写跟随模式。

图 94

Clocking Wizard IP核

Clocking Wizard IP核使能输出时钟频率动态配置功能。

Clocking Wizard IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg065_clk_wiz.pdf》,具体配置如下。

图 95

clk_out配置默认输出频率为148.5MHz,可通过设备树进行动态修改。

图 96

AXI4 Subset Converter IP核

本案例使用AXI4 Subset Converter IP核将32bit ARGB视频格式数据转换为24bit RGB,并输出给v_axi4s_vid_out IP核。

AXI4 Subset Converter IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《
pg085-axi4stream-infrastructure.pdf》,具体配置如下。

图 97

lvds_n_x_1to7_sdr_tx模块

本案例使用lvds_n_x_1to7_sdr_tx模块将并行数据转化成差分数据,使用SDR模式,在时钟的单边沿传输数据。

lvds_n_x_1to7_sdr_tx模块开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《
xapp585-lvds-source-synch-serdes-clock-multiplication.pdf》,具体配置如下。

图 98

lvds_n_x_1to7_sdr_tx模块配置为双通道,每个通道的数据差分对数量为4。

图 99

关键代码解释

定义模块接口。

图 100

调用时钟生成模块,生成74.25MHz的LVDS发送时钟。1/74.25MHz≈13.468ns,CLKIN_PERI

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年6月22日
下一篇 2022年6月22日

相关推荐