AR# 46913

Zynq-7000 示例设计:使用面向 DEVCFG 的 Linux 驱动程序对 PL 进行编程

描述

本示例设计显示了如何用以下 Linux 指令和原始二进制比特流对 PL 进行编程。

mknod /dev/xdevcfg c 259 0 > /dev/null
cat system.bit.bin > /dev/xdevcfg

注: 设计案例作为问题记录,对测试Zynq-7000.的特定功能提供技术提示。

提示可以是一片段代码、一个快照、一幅图,或是使用特定版本的赛灵思工具对整个设计的实现。

由用户 ''更新'' 这些技巧至未来 Xilinx 工具版本 ,并 ''修改'' 范例设计来满足需求。

Xilinx 对这些范例设计仅提供有限的支持。

实现详情
设计类型PS 和 PL
SW TypeBootgen / Linux
CPUs单个 CPU
PS 特性DEVCFG
PL Cores--
Boards/ToolsZC702
Xilinx 工具版本Vivado/SDK 2015.1
其它详情--

解决方案

说明:

要使用面向 devcfg 的 Linux 驱动程序对 PL 进行编程,比特流应转换为二进制。 

此操作可使用 BootGen 工具。

BootGen 工具使用“BIF”输入文件,它可描述引导映像的结构。  


.BIF 文件示例:

the_ROM_image:
{
[bootloader]<fsbl_name>.elf
<pl_bitstream_name>.bit
<u-boot_name>.elf
}


请注意,[bootloader]标签需要说明哪一个 ELF 二进制是设计的第一阶段引导加载程序。 

此外还要注意的是,如果引导进程不需要 PL 编程,那么 .BIT PL 比特流行是可选的。


打开命令行 shell(如在 Windows 打开 cmd.exe,或在 Linux 中采用 shell 终端)并获得 Xilinx 工具环境来源。

BootGen 通过以下方式执行:

bootgen -image <bootimage>.bif -split bin -o i BOOT.BIN

在以上范例中,.BIF 是指之前创建的文件。  

将 BootGen 和“-split”选项配合使用,可为 .BIF 的每个输入文件创建二进制版本,并全部输出为独立文件,而不是常见的整体引导映像文件。  

创建了以下文件:

<pl_bitstream_name>.bit.bin

二进制输出文件可通过 Linux 直接对 Zynq PL 进行编程。 

将 .BIT.BIN 放在 SD 卡上再启动进入 Linux。 


一旦启动 Linux,安装 SD 卡,并为 Zynq devcfg 块创建设备节点:

mknod /dev/xdevcfg c 259 0 > /dev/null 

下面用 Linux 的“cat”命令在 Zynq PL 中传输 PL 比特流:

cat <path_to_storage_media>/<pl_bitstream_name>.bit.bin > /dev/xdevcfg

现已对 PL 进行了编程。 

通过观察电路板上“DONE”LED 的灯亮或 DEVCFG.INT_STS(PCFG_DONE_INT) 寄存器的值,可确认这一点。


注 1:split 选项在 2013.2 版中已从 Bootgen 删除,并重新添加至2013.3版中。

要生成面向 DEVICECFG 的单独的比特交换二进制格式文件,可用 ISE 安装的 promgen 命令行。

Promgen -p bin -data_width 32 -b -u 0x0 <design_name>.bit


注 2: 从 2014.1 开始,Bootgen 有选项 "process_bitstream",它会生成 BIN 文件 - 可用于 PL,以通过 Devcfg 配置 PS。

Example:

bootgen -image all.bif -w -process_bitstream bin

BIF File:

all:

{

system.bit

}

输出:

文件system.bit.bin 生成于现有工作目录中。


注 3: Linux Kernel之后版本中, /dev/xdevcfg 可自动生成。

运行 "mknod /dev/xdevcfg c 259 0 > /dev/null" 命令后,收到"mknod: /dev/xdevcfg: File exists" 警告信息, 你可运行下一条命令。

链接问答记录

主要问答记录

Answer Number 问答标题 问题版本 已解决问题的版本
51779 Zynq-7000 SoC - Example Designs and Tech Tips N/A N/A

相关答复记录

Answer Number 问答标题 问题版本 已解决问题的版本
47002 Zynq-7000 Debug - How do you program a bitstream using Lauterbach? N/A N/A
AR# 46913
日期 05/18/2018
状态 Active
Type 综合文章
器件
Tools
Boards & Kits