栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Zynq 学习笔记(4)Linux FPGA Manager

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Zynq 学习笔记(4)Linux FPGA Manager

                Xilinx Zynq 是Arm 处理器(PS)和FPGA (PL) 相结合的混合SOC。如何通过程序下载PL的bit 文件,特别是下载局部重构分区的bit 文件是我关心的话题。不过涉及这方面的文档实在是太多,太复杂了。PCAP,ICAP 等概念一大堆。而网络上的文章大多是介绍操作流程,介绍背景知识的文章非常少。本文记录一些自己的读书笔记,目的是介绍一些“基本知识”和经过自己尝试的过程。

          其实在Zynq 的Linux环境下,PL 的bit文件下载变得非常简单,甚至于不需要编写程序,只要使用shell 命令就能轻松地完成。它有两种编程方式:

  • 通过FSBL(First Stage Boot-loader), U-Boot 在引导时写入
  • 通过Linux FPGA Manager 在系统引导后写入
  • Linux FPGA Manager

            FPGA 管理器是linux内核一部分(我也是第一次发现,被惊呆了),它导出一组函数,用于使用映像(image)对 FPGA进行编程。它们的API 与制造商无关。所有制造商的细节都隐藏在一个低级驱动程序中,该驱动程序向内核注册了一组操作。FPGA 图像数据本身是非常特定于制造商的,但对我们而言,它只是二进制数据。FPGA 管理器内核不会解析它。

    下图是Xilinx ZYNQ Linux FPGA Manager 的架构。

     

     

            从上图看,FPGA Manager Driver 的底层是XIlinx FPGA 的Driver。实际上,Linux FPGA Manager 也支持altera 的Arria-V/Cyclone-V/Stratix-V和Arria-10 FPGA 。只要安装了Altera 的相关驱动就可以。在这里,我们只讨论Xilinx Zynq Linux 的FPGA 管理。

    下载流程

    第一步:design_1_wrapper.bit 转换成为design_1_wrapper.bit.bin 文件

    vivado 中点击 Generate bitsstream。

    它将会在项目的….runsimpl_ 的目录下产生一个design_1_wrapper.bit文件。

    这个文件不能直接地下载到FPGA 中。需要将design_1_wrapper.bit 转换成为design_1_wrapper.bit.bin 文件。具体的步骤如下:

    1 在 C:UsersasusAppDataRoamingXilinxVivado 目录下构建Full_Bitstream.bif文件

    它的内容是:

    all:
    {
            F:workspacepetalinux_gpiopetalinux_gpio.runsimpl_1design_1_wrapper.bit 
    }
    

    我相信将Full_Bitsstream.bif 构建在impl_1 目录中,只要在下面的命令中使用绝对路径,也是OK的。

    2 在vivado 的Tsl Consol 下输入下列命令:

    bootgen -image Full_Bitstream.bif -arch zynq -process_bitstream bin

    vivado 的界面为:

    bootgen -image Full_Bitstream.bif -arch zynq -process_bitstream bin
    WARNING: [Common 17-259] Unknown Tcl command 'bootgen -image Full_Bitstream.bif -arch zynq -process_bitstream bin' sending command to the OS shell for execution. It is recommended to use 'exec' to send the command to the OS shell.
    
    
    ****** Xilinx Bootgen v2021.2
      **** Build date : Oct 19 2021-03:13:27
        ** Copyright 1986-2021 Xilinx, Inc. All Rights Reserved.
    
    
    [INFO]   : Bootimage generated successfully
    

           注意: 网络上也有人建议在vivado 的项目的setting 中 bitstream 中勾选 bit file 。但是我好像没有尝试成功。

    完成之后,会在F:workspacepetalinux_gpiopetalinux_gpio.runsimpl_1目录下产生一个design_1_wrapper.bit.bin 文件。

    3 将这个文件Copy 到 SDCard 上。

    4 将sdcard 插入开发板的sd card 卡座上,上电启动。进行下面的操作

    第二步:在ZYNQ 的Petalinux 命令行中完成下载

    全部Bits流的下载步骤

    Set flags for Full Bitstream

    echo 0 > /sys/class/fpga_manager/fpga0/flags

    加载SD 卡

    mount /dev/mmcblk0 /media/

    载入bitstream

    mkdir -p /lib/firmware

    cp /media/design_1_wrapper.bit.bin /lib/firmware/

    echo design_1_wrapper.bit.bin > /sys/class/fpga_manager/fpga0/firmware

    局部bits 流的编程步骤

    Set flags for Partial Bitstream

    echo 1 > /sys/class/fpga_manager/fpga0/flags

    Load the Bitstream Partial Bitstream

    mkdir -p /lib/firmware

    cp /media/partail_wrapper.bit.bin /lib/firmware/

    echo partail_wrapper.bit.bin  > /sys/class/fpga_manager/fpga0/firmware

    下面是我操作的记录

    root@petalinux_gpio:~# echo 0 > /sys/class/fpga_manager/fpga0/flags
    root@petalinux_gpio:~# mount /dev/mmcblk0 /media/
    root@petalinux_gpio:~# mkdir -p /lib/firmware
    root@petalinux_gpio:~# cp /media/design_1_wrapper.bit.bin /lib/firmware/design_1_
    _wrapper.bit.bin
    root@petalinux_gpio:~# echo design_1_wrapper.bit.bin > /sys/class/fpga_manager/fp
    pga0/firmware
    fpga_manager fpga0: writing design_1_wrapper.bit.bin to Xilinx Zynq FPGA Manager
    root@petalinux_gpio:~#

    注意:如果没有将design_1_wrapper.bit 转换成为design_1_wrapper.bit.bin 文件,上述流程会出错!

    root@petalinux_gpio:~# echo system_wrapper.bit > /sys/class/fpga_manager/fpga0/fi irmware
    fpga_manager fpga0: writing system_wrapper.bit to Xilinx Zynq FPGA Manager
    fpga_manager fpga0: Invalid bitstream, could not find a sync word. Bitstream must be a byte swapped .bin file
    fpga_manager fpga0: Error preparing FPGA for writing
    -sh: echo: write error: Invalid argument 
    

  • 转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/747300.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号