Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zynq、Yocto Linux和自定义FPGA IP块工作流_Linux_Driver_Yocto_Fpga_Zynq - Fatal编程技术网

Zynq、Yocto Linux和自定义FPGA IP块工作流

Zynq、Yocto Linux和自定义FPGA IP块工作流,linux,driver,yocto,fpga,zynq,Linux,Driver,Yocto,Fpga,Zynq,我不熟悉Zynq设备,也不熟悉linux和Yocto项目。 我现在有一个项目,需要实现一个定制的FPGA IP块,并从yocto生成的linux发行版中使用它。 显然,我必须为这个定制IP编写linux驱动程序。但是我找不到一个清晰的解释来解释这样一个项目的工作流程 我找到了一些旧的教程,但我不确定它们是否仍然有效,所以一个最新的最佳实践工作流程将非常好 到目前为止我所做的: 我在Vivado中创建了一个测试项目,并通过Microzed+载波板中的FPGA块创建了一个小型led示例。 然后,我从

我不熟悉Zynq设备,也不熟悉linux和Yocto项目。 我现在有一个项目,需要实现一个定制的FPGA IP块,并从yocto生成的linux发行版中使用它。 显然,我必须为这个定制IP编写linux驱动程序。但是我找不到一个清晰的解释来解释这样一个项目的工作流程

我找到了一些旧的教程,但我不确定它们是否仍然有效,所以一个最新的最佳实践工作流程将非常好

到目前为止我所做的: 我在Vivado中创建了一个测试项目,并通过Microzed+载波板中的FPGA块创建了一个小型led示例。 然后,我从Vivado导出硬件,以获得一个BSP包,我在Vitis的裸机项目中进行了测试。 我安装了Yocto,并根据在线教程为我的microzed板构建了一个参考发行版,它只有一个串行接口。所有这些或多或少都是由Xilinx预先支持的

但现在我需要使用Yocto生成的linux发行版,并使其能够使用我的自定义(LED)IP。 我的问题是:

  • 在这种情况下,详细的工作流程是什么样的(在我的末尾) 需要可启动的SD卡吗
详情如下:

  • 如何将Vivado生成的mydevice_bsp引入Yocto发行版
  • 在哪种环境下(如何写它们,我会找到我自己)我要写 YoctoLinux的驱动程序,并将其引入发行版
  • Linux映像启动后,如何将比特流加载到FPGA结构中
不幸的是,我没有太多的时间让所有这些工作,所以它将是真正的酷找到一个从开始到结束的一步一步的教程。 提前感谢你的帮助

问候
马丁

我不确定是否有人为此写下了工作流程,但我可以告诉你我将如何处理

  • 将IP代码创建为硬件,并使用IP打包器打包代码。您还可以添加一些驱动程序代码,因此SDK可以使用这些代码自动生成驱动程序。因此,您可以使用Vitis中的常规工作流来编写软件

  • 或者跳过这一部分,直接在Linux中使用硬件。因此,您将创建一个IP核心,并在Vivado中将其添加到您的系统中。导出硬件以获取BSP文件。然后需要Xilinx设备树生成器来生成设备树。此工具使用IP核心的一些基本定义(如基本地址)为硬件生成设备树部分

  • 然后创建一个普通的位流和一组工具来创建引导加载程序、内核、设备树、位流文件等(所有这些都没有Yocto)。将所有文件复制到SD卡并启动设备。需要帮助时,您可以查看Linux项目和Wiki。现在,您可以开始为您的设备编写驱动程序,并在实际硬件上对其进行测试。最后,您可以使用
    KConfig
    创建一个Yocto配方,自动将驱动程序包含到内核中

    启动Linux后,您会发现一个设备
    /dev/devcfg
    ,可用于重新编程FPGA。请注意,更改FPGA会对处理系统产生影响(即,您向PS添加了一些接口),这会导致一些错误(该错误可能是在过去几年中消失的,但几年前我不得不解决这个问题)

    因此,根据您的LED示例,您必须执行以下步骤:

  • 创建IP核心
  • 创建基本处理系统并添加IP核心
  • 生成比特流
  • 将硬件导出到Vitis
  • 打开Vitis并创建新的FSBL项目
  • 将设备树生成器添加到Vitis存储库
  • 创建新的设备树项目
  • 构建
    BOOT.bin
    uImage
    devicetree.dtb
    ,并将它们复制到SD卡上
  • 启动你的设备
  • 检查设备的
    /proc/device tree/
  • 从驱动程序开发开始
  • 将驱动程序导出到
    Kconfig
    和Yocto(或将其用作可加载模块)
  • 你可以在我的文章中找到所有的步骤。请随便问我


    但请注意:本教程并不是那么新,不幸的是,我没有在该教程中添加自定义IP集成(也许我会很快添加),但它应该向您展示如何做到这一点。

    我没有完整的答案,但当您谈论Yocto时,是Petalinux[Xilinx]还是仅仅是Yocto本身?顺便问一下:哪一版本的Vivado?你好,vermaete,谢谢回答,这是Vivado v2020.1。这是一个严格的Yocto项目,使用meta-xilinx元数据。目前,Petalinux不是一个选项。好吧,我会关注你的问题。使用Petalinux,您将拥有一个工具来配置Vivado部分并从中生成一个元层。这可能对你的部分问题有所帮助。嗨,坎皮,非常感谢你的回答!我会尽快检查并试用