引言
在嵌入式系统设计与开发的广阔领域中,Xilinx Zynq平台以其独特的ARM处理器与FPGA可编程逻辑(PL)的结合,成为了众多创新项目的首选。然而,随着技术的不断进步,Zynq PL的编程方式也经历了从经典到现代的转变。今天,我们就来回顾一下,在2018.1版本之前与之后,Zynq PL编程解决方案的演变,从xdevcfg
到FPGA Manager
的跨越。
一、2018.1之前:zynq PL编程解决方案(With xdevcfg)
在2018.1版本之前,xilinx_devcfg.c
驱动是Zynq平台下进行PL编程的主流方式。这个驱动通过/dev/xdevcfg
设备文件,允许用户在Linux系统启动后,直接向FPGA的可配置逻辑(CL)写入bitstream文件。这种方法简单直接,但在新版本中被逐渐淘汰,以支持更加先进和灵活的管理机制。
二、2018.1之后:zynq PL编程解决方案(With FPGA Manager)
随着Xilinx在2018.1版本后引入FPGA Manager
,Zynq PL的编程方式迎来了重大变革。这一新的解决方案不仅提升了编程的灵活性和可靠性,还简化了开发流程。现在,我们来看看如何使用FPGA Manager来加载bitstream文件。
步骤1:从.bit文件生成.bin文件
首先,使用Bootgen工具将.bit
文件转换为.bin
格式,这是FPGA Manager所要求的。通过编写一个.bif
文件来描述bitstream文件,然后利用Bootgen进行转换。
Full_Bitstream.bif 文件应该包含如下内容:
all:
{
design_1_wrapper.bit /* Bitstream file name */
}
然后执行如下命令:
bootgen -image Full_Bitstream.bif -arch zynq -process_bitstream bin
步骤2:通过sysfs接口加载Bitstream
Linux系统启动后,可以通过sysfs接口来设置和加载bitstream。首先,设置相应的标志位,然后将.bin
文件复制到/lib/firmware
目录,并通过写入/sys/class/fpga_manager/fpga0/firmware
来加载bitstream。
1)Set flags for Full Bitstream.
echo 0 > /sys/class/fpga_manager/fpga0/flags
2) Loading Bitstream into PL.
mkdir -p /lib/firmware
cp /media/design_1_wrapper.bit.bin /lib/firmware/
echo design_1_wrapper.bit.bin > /sys/class/fpga_manager/fpga0/firmware
结语
从xdevcfg
到FPGA Manager
,Zynq PL编程解决方案的升级不仅体现了技术的进步,也为开发者提供了更加高效、灵活的工具。随着Zynq平台在更多领域的应用,我们有理由相信,未来的FPGA编程将更加智能化、自动化。让我们一同期待,并积极参与这一激动人心的变革吧!