SDSoC+ DVFS on ZC702

作者:lulugay

该项目用2018.2版Vivado, SDSoC, Petalinux搭建,只适用于2018.2版本!
搭建环境:
Windows10: Vivado2018.2, SDSoC2018.2(也可以在Ubuntu16.04完成)
Ubuntu16.04: Petalinux2018.2
PYNQ-Z1/Z2, v2.1 img

SDSoC Hardware Platform —— 搭建Vivado工程

  • 将overlays/PYNQ文件夹复制到PC的Vivado\2018.2\data\boards\board_files路径下,PYNQ_DYNCLK文件夹复制到SDx\2018.2\platforms路径下
  • 新建一个Vivado工程命名为PYNQ_DYNCLK,板卡选择PYNQ-Z2
  • source /PYNQ_DYNCLK.tcl生成Block Diagram
  • source /PYNQ_DYNCLK_pfm.tcl定义SDSoC Platform的属性
  • Create HDL wrapper
  • Generate Bitstream
  • write_dsa -force /PYNQ_DYNCLK.dsa //打包dsa文件
  • validate_dsa /PYNQ_DYNCLK.dsa //验证dsa文件
  • Export Hardware得到PYNQ_DYNCLK_wrapper.hdf
  • SDSoC Software Platform —— 创建Petalinux工程

    新建petalinux工程

    $ petalinux-create --type project --template zynq --name PYNQ_DYNCLK

    将PYNQ_DYNCLK.dsa复制到PYNQ_DYNCLK/路径下

    $ cd PYNQ_DYNCLK/
    $ petalinux-config --get-hw-description ./

    将Linux的rootfs改成SD卡

    DTG Settings->Kernel Bootargs->user set kernel bootargs 输入

    console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait

    Image Packaging Configurations->Root filesystem type->SD card

    配置kernel,添加SDSoC需要的驱动(如xlnk, cma)

    $ petalinux-config -c kernel

    Device Drivers->Generic Driver Options->Size in Mega Bytes(256)

    Device Drivers->Staging drivers (ON)->Xilinx APF Accelerator driver (ON)->Xilinx APF DMA engines support (ON)

    这一步会在project-spec/meta-user/recipes-kernel/linux/linux-xlnx/路径下生成kernel.cfg文件, 也可以直接将下面这段的复制过去

    CONFIG_CMA_SIZE_MBYTES=256
    CONFIG_STAGING=y

    CONFIG_XILINX_APF=y
    CONFIG_XILINX_DMA_APF=y

    修改设备树, 添加xlnk

    打开/project-spec/meta-user/recipes-bsp/device-tree/files/下的system-user.dtsi添加如下内容

    /{
    xlnk {
    compatible = "xlnx,xlnk-1.0";
    };
    };

    编译内核

    $ petalinux-build

    在/images/linux/下找到zynq_fsbl.elf, u-boot.elf, image.ub这些是之后创建SDSoC Platform要用到的东西

    创建SDSoC Platform
    参照UG1236将之前准备好的image.ub, zynq_fsbl, uboot打包成一个SDSoC的Platform, 也可以直接用SDSoC/PYNQ_DYNCLK。
    将SDSoC Platform后复制到/Xilinx/SDx/2018.2/platforms路径下

    创建SDSoC应用

  • 新建SDSoC Application命名为mmult,选择PYNQ_DYNCLK为Platform
  • 将SDSoC/src/mmult下的代码复制到SDSoC工程下的src文件夹/li>
  • 将mmult设置为Hardware Function并指定频率为120.1MHz/li>
  • 将DateMotionNetwork的频率设置为120.2MHz/li>
  • 编译工程得到三个文件, BOOT.bin, image.ub以及mmult.elf/li>

    PYNQ

  • 使用Win32DiskImager将PYNQ-Z1/Z2-v2.1.img烧写进SD卡
  • 删除SD卡的FAT32分区的所有文件,将BOOT.bin, image.ub, mmult.elf复制到SD卡fat32分区下, 然后插入板卡上电。
  • 编译DYNCLK的驱动
  • $ git clone https://github.com/jiangwx/DYNCLK.git
    $ cd DYNCLK
    $ cd drivers
    $ gcc DYNCLK.c -o DYNCLK
    $ sudo cp DYNCLK /mnt

    本文转载自: https://blog.csdn.net/lulugay/article/details/83892932

    推荐阅读