王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

如何利用Zynq-7000的PL和PS进行交互


如何利用Zynq-7000的PL和PS进行交互

在Zynq-7000上编程PL大致有3种方法:1. 用FSBL,将bitstream集成到boot.bin中2. 用U-BOOT命令3. 在Linux下用xdevcfg驱动。 步骤:1. 去掉bitstream的文件头 用FSBL烧写PL Images没有什么好说的,用Xilinx SDK的Create Boot Image工具即可完成,不再赘述。

用后两种方法需要把bitstream文件的文件头用bootgen工具去掉。

一个典型的bif文件如下所示:the_ROM_image:{[bootloader]<fsbl_name>.elf<pl_bitstream_name>.bit<u-boot_name>.elf}bif文件可以用文本编辑器写,也可以用Xilinx SDK的Create Boot Image工具生成。然后在命令行下用以下命令即可去掉bitstream文件的文件头。bootgen -image <bootimage>.bif -split bin -o i BOOT.BIN"-split”参数可以生成以下文件:<pl_bitstream_name>.bit.bin 2. 在U-BOOT下烧写PL Image命令”fpga load”和”fpga loadb”都可以。区别是前一个命令接受去掉了文件头的bitstream文件,后一个命令接受含有文件头的bitstream文件。

在OSL 2014.2上,缺省编译就可以完整支持写入PL Image的功能。但是在Petalinux 2013.10下,尽管可以在U-BOOT下看到命令”fpga”,还需要在文件<PROJ>/subsystems/linux/configs/u-boot/platform-top.h 中增加以下内容后重新编译才可以支持具体的功能。 /* Enable the PL to be downloaded */#define CONFIG_FPGA#define CONFIG_FPGA_XILINX#define CONFIG_FPGA_ZYNQPL#define CONFIG_CMD_FPGA#define CONFIG_FPGA_LOADFS 在OSL 2014.2 U-BOOT中,具体的功能是在zynqpl.c的zynq_load()中实现的。

3. 在Linux下烧写PL ImageOSL Linux 2014.2.01中已经含有xdevcfg驱动了(之前就有,不过本文是在这个版本上验证的),直接用以下命令就可以完成PL Image写入。cat <path_to_storage_media>/<pl_bitstream_name>.bit.bin > /dev/xdevcfg Linux驱动的源代码在xilinx_devcfg.c中。因为驱动的编号是通过alloc_chrdev_region()动态分配的,所以不需要手工用mknod命令手动建立设备节点。

在Linux驱动中,每次往DevCfg中写入4096字节,直到全部写完。 4. 在用户程序中烧写PL Image 目前没有现成的源码来完成这个功能,不过可以用mmap()把DevCfg的寄存器映射到用户程序的虚地址中,然后参考一些现成的软件代码来完成这个功能: * FSBL中的pcap.c * U-BOOT中的zynqpl.c * Linux中的xilinx_devcfg.c * Xilinx SDK中的例子。例子位于以下位置,随SDK的版本会有变化。

C:\Xilinx\SDK\2014.1\data\embeddedsw\XilinxProcessorIPLib\drivers\devcfg_v3_0\examples\index.html 小结:DevCfg外设内部有自己的DMA,只需要简单的配置PL Image的基地址和长度到DevCfg寄存器,就可以完成Zynq-7000 PL Image的加载。Xilinx已经提供了灵活的解决方案,如果开发者要把这个功能集成在自己的应用程序中,也有很多的代码可以参考,并不是很困难的任务。

很多人都说PS还有什么PL是什么意思

你应该是搞fpga的吧,PS: 处理系统 (Processing System) ,  就是与FPGA无关的ARM的SOC的部分。PL: 可编程逻辑 (Progarmmable Logic), 就是FPGA部分。

之所以叫PL,而不是叫FPGA,原因可能是考虑到让搞软件不要看了以后望而生畏。

对于ZYNQ,往大里说,就是两大功能块,PS 部分和 PL部分, 说白了,就是ARM的SOC部分,和FPGA部分。

很多人都说PS还有什么PL是什么意思?

PS是PHOTOSHOP,PL/SQL是一种高级数据库程序设计语言,PL/SQL语言在将SQL语言的灵活性及功能与第三代语言的可配置能力相结合方面是独一无二的。该语言集成了面向过程语言的过程结构和强大的数据库操作,为设计复杂的数据库应用提供了功能强大、健壮可靠的程序设计语言。

该语言专门用于在各种环境下对Oracle数据库进行访问。

由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理。

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。