解决方案
说明:
要使用面向 devcfg 的 Linux 驱动程序对 PL 进行编程,比特流应转换为二进制。
此操作可使用 BootGen 工具。
BootGen 工具使用“BIF”输入文件,它可描述引导映像的结构。
.BIF 文件示例:
the_ROM_image:
{
[bootloader].elf
.bit
.elf
}
请注意,[bootloader]标签需要说明哪一个 ELF 二进制是设计的第一阶段引导加载程序。
此外还要注意的是,如果引导进程不需要 PL 编程,那么 .BIT PL 比特流行是可选的。
打开命令行 shell(如在 Windows 打开 cmd.exe,或在 Linux 中采用 shell 终端)并获得 Xilinx 工具环境来源。
BootGen 通过以下方式执行:bootgen -image .bif -split bin -o i BOOT.BIN
在以上范例中,.BIF 是指之前创建的文件。
将 BootGen 和“-split”选项配合使用,可为 .BIF 的每个输入文件创建二进制版本,并全部输出为独立文件,而不是常见的整体引导映像文件。
创建了以下文件:.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 /.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 .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" 警告信息, 你可运行下一条命令。