本示例设计显示了如何用以下 Linux 指令和原始二进制比特流对 PL 进行编程。
mknod /dev/xdevcfg c 259 0 > /dev/null
cat system.bit.bin > /dev/xdevcfg
注: 设计案例作为问题记录,对测试Zynq-7000.的特定功能提供技术提示。
提示可以是一片段代码、一个快照、一幅图,或是使用特定版本的赛灵思工具对整个设计的实现。
由用户 ''更新'' 这些技巧至未来 Xilinx 工具版本 ,并 ''修改'' 范例设计来满足需求。
Xilinx 对这些范例设计仅提供有限的支持。
实现详情 | |
---|---|
设计类型 | PS 和 PL |
SW Type | Bootgen / Linux |
CPUs | 单个 CPU |
PS 特性 | DEVCFG |
PL Cores | -- |
Boards/Tools | ZC702 |
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 |