在 linux 中加载启动 zynq PL 程序

目录

  • 环境
  • 使用
    • BIN 文件生成

在 zynq 使用系统时,可在 uboot 与 linux 中加载启动 PL 程序,一直以来用的都是在 uboot 中加载启动,本次试了试在 linux 中启动,发现不好使,于是有了这篇文章。

环境

vidado 2017.4
Linux zynq 4.14.0-xilinx
zynq 7020

使用

在早期的 xilinx 官方文章写道使用命令(https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841750/Solution+Zynq+PL+Programming)

$cat bitstream.bit > /dev/xdevcfg

然而不能用。应该时后期驱动发生了变化。

此处 讨论中发现相关的解决办法,而后转到了官方最新的说明(https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841645/Solution+Zynq+PL+Programming+With+FPGA+Manager)
在 linux 中加载启动 zynq PL 程序_第1张图片
需要在 /lib 下 新建文件夹 firmware,将生成的 bin 文件放到 /lib/firmware/ 文件夹下,使用命令:

$echo out1.bin > /sys/class/fpga_manager/fpga0/firmware

在这里插入图片描述

BIN 文件生成

  • 关于如何生成 bin 文件,上述官方最新的说明网址中有说明:在 linux 中加载启动 zynq PL 程序_第2张图片
    在Vivado 软件 Tcl Console中,使用命令:
bootgen -image Full_Bitstream.bif -arch zynq -process_bitstream bin

即可生成 bin 文件,此命令生成文件名一般为 XX.bit.bin

  • 还有一种方式(https),看了此处的讨论。
    在 linux 中加载启动 zynq PL 程序_第3张图片

在Vivado 软件 Tcl Console中,使用命令:

write_cfgmem -disablebitswap -force -format BIN -size 256 -interface SMAPx32 -loadbit "up 0x0 system_wrapper.bit" -verbose out.bin

注:在 Vivado 设置中添加 bin 文件生成,生成的文件是无法使用的,对比二进制文件,发现命令生成的数据进行了大小端的转换。
在 linux 中加载启动 zynq PL 程序_第4张图片

uboot 中加载启动 PL 程序,直接使用生成的 bit 文件即可。

  • 从 qspi flash 加载
sf probe 0 0 0 && echo  FPGA bitstream is loading ... ... && sf read ${bitstream_load_address} ${loadbit_addr} ${loadbit_size} && fpga loadb 0 ${bitstream_load_address} ${loadbit_size} 
  • 从 SD 卡加载
 load mmc 0 ${bitstream_load_address}  ${bitstream_image} &&  fpga loadb 0 ${bitstream_load_address} ${loadbit_size} 

你可能感兴趣的:(arm,linux,zynq,linux,zynq,PL)