當前位置:編程學習大全網 - 編程語言 - 有人用過zynq7000 的axi dma實現PS與PL的高速通信嗎

有人用過zynq7000 的axi dma實現PS與PL的高速通信嗎

在Zynq-7000上編程PL大致有3種方法:1.用FSBL,將bitstream集成到boot.bin中2.用U-BOOT命令3.在Linux下用xdevcfg驅動。步驟:1.去掉bitstream的文件頭用FSBL燒寫PLImages沒有什麽好說的,用XilinxSDK的CreateBootImage工具即可完成,不再贅述。用後兩種方法需要把bitstream文件的文件頭用bootgen工具去掉。壹個典型的bif文件如下所示:the_ROM_image:{[bootloader].elf.bit.elf}bif文件可以用文本編輯器寫,也可以用XilinxSDK的CreateBootImage工具生成。然後在命令行下用以下命令即可去掉bitstream文件的文件頭。bootgen-image.bif-splitbin-oiBOOT.BIN"-split”參數可以生成以下文件:.bit.bin2.在U-BOOT下燒寫PLImage命令”fpgaload”和”fpgaloadb”都可以。區別是前壹個命令接受去掉了文件頭的bitstream文件,後壹個命令接受含有文件頭的bitstream文件。在OSL2014.2上,缺省編譯就可以完整支持寫入PLImage的功能。但是在Petalinux2013.10下,盡管可以在U-BOOT下看到命令”fpga”,還需要在文件/subsystems/linux/configs/u-boot/platform-top.h中增加以下內容後重新編譯才可以支持具體的功能。/*EnablethePLtobedownloaded*/#defineCONFIG_FPGA#defineCONFIG_FPGA_XILINX#defineCONFIG_FPGA_ZYNQPL#defineCONFIG_CMD_FPGA#defineCONFIG_FPGA_LOADFS在OSL2014.2U-BOOT中,具體的功能是在zynqpl.c的zynq_load()中實現的。3.在Linux下燒寫PLImageOSLLinux2014.2.01中已經含有xdevcfg驅動了(之前就有,不過本文是在這個版本上驗證的),直接用以下命令就可以完成PLImage寫入。cat/.bit.bin>/dev/xdevcfgLinux驅動的源代碼在xilinx_devcfg.c中。因為驅動的編號是通過alloc_chrdev_region()動態分配的,所以不需要手工用mknod命令手動建立設備節點。在Linux驅動中,每次往DevCfg中寫入4096字節,直到全部寫完。4.在用戶程序中燒寫PLImage目前沒有現成的源碼來完成這個功能,不過可以用mmap()把DevCfg的寄存器映射到用戶程序的虛地址中,然後參考壹些現成的軟件代碼來完成這個功能:*FSBL中的pcap.c*U-BOOT中的zynqpl.c*Linux中的xilinx_devcfg.c*XilinxSDK中的例子。例子位於以下位置,隨SDK的版本會有變化。C:\Xilinx\SDK\2014.1\data\embeddedsw\XilinxProcessorIPLib\drivers\devcfg_v3_0\examples\index.html小結:DevCfg外設內部有自己的DMA,只需要簡單的配置PLImage的基地址和長度到DevCfg寄存器,就可以完成Zynq-7000PLImage的加載。Xilinx已經提供了靈活的解決方案,如果開發者要把這個功能集成在自己的應用程序中,也有很多的代碼可以參考,並不是很困難的任務。

  • 上一篇:做軟件,在唐山哪家公司比較好?
  • 下一篇:大唐面試經驗分享
  • copyright 2024編程學習大全網