在Zynq-7000的方法

在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].elf
.bit
.elf
}
bif文件可以用文本编辑器写,也可以用xilinx sdk的create boot image工具生成。然后在命令行下用以下命令即可去掉bitstream文件的文件头。
bootgen -image .bif -split bin -o i boot.bin
-split”参数可以生成以下文件:
.bit.bin
2. 在u-boot下烧写pl image
命令”fpga load”和”fpga loadb”都可以。区别是前一个命令接受去掉了文件头的bitstream文件,后一个命令接受含有文件头的bitstream文件。
在osl 2014.2上,缺省编译就可以完整支持写入pl image的功能。但是在petalinux 2013.10下,尽管可以在u-boot下看到命令”fpga”,还需要在文件
/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 image
osl linux 2014.2.01中已经含有xdevcfg驱动了(之前就有,不过本文是在这个版本上验证的),直接用以下命令就可以完成pl image写入。
cat /.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中的例子。
小结:
devcfg外设内部有自己的dma,只需要简单的配置pl image的基地址和长度到devcfg寄存器,就可以完成zynq-7000 pl image的加载。xilinx已经提供了灵活的解决方案,如果开发者要把这个功能集成在自己的应用程序中,也有很多的代码可以参考,并不是很困难的任务。

华为卫星电话什么意思 卫星电话的优点和缺点
工信部表示希望和各国半导体企业密切合作 共求发展
胡歌+发蜡=荣耀9?论邀请函我只服荣耀
OPPO正式发布小布虚拟人
服装零售行业与智能结合
在Zynq-7000的方法
手机射频技术和手机射频模块构成简介
位移传感器的工作原理
关于机器学习的分析和介绍以及应用
第十三届中国国际“专交会”隆重举办,锐格新能源展示创新成果
工厂室内人员定位解决方案
国辰机器人入选浙江省新智造公共服务应用首批入库供应商
互联网+硬件+新零售铁人三项,助小米重回中国第一
使用蜂窝物联网卡,让物联网设备使用更方便!
将低于1GHz连接用于电网资产监控、保护和控制的优势
传LG将关闭或出售其手机业务
微波承载在5G网络时代的重要性
为超过80万架次航班提供服务保障的昔日“功臣”到底是个什么神器?
安科瑞ADW300无线计量仪表
佳能全画幅入门单反佳能6D2、半画幅入门单反佳能200D外观照曝光