如何在Zynq-7000上烧写PL Image
来源:互联网 发布:手机淘宝登录界面 编辑:程序博客网 时间:2024/06/06 18:46
在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文件,后一个命令接受含有文件
在OSL 2014.2上,缺省编译就可以完整支持写入PL Image的功能。但是在Petalinux 2013.10下,尽管可以在U-BOOT下看到命令”fpga”,还需要在文件
<PROJ>/subsystems/linux/configs/u-boot/platform-to
/* 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驱动了(之前就有,不过本文是在这个版本上验证的),直接用以
cat <path_to_storage_media>/<pl_bitstream_name>.bit.bin > /dev/xdevcfg
Linux驱动的源代码在xilinx_devcfg.c中。因为驱动的编号是通过alloc_chrde
在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\XilinxProcess
小结:
DevCfg外设内部有自己的DMA,只需要简单的配置PL Image的基地址和长度到DevCfg寄存器,就可以完成Zynq-7000 PL Image的加载。Xilinx已经提供了灵活的解决方案,如果开发者要把这个功能集成在自己的应用程序中
- 如何在Zynq-7000上烧写PL Image
- 如何在Zynq-7000上烧写PL Image
- Zynq-7000烧写FPGA逻辑单元PL Image
- xilinx zynq 7000 PS PL test
- 【ZYNQ-7000开发之九】使用VDMA在PL和PS之间传输视频流数据
- Zynq的PL-PS中断在设备树中的描述
- ZYNQ PL中断PS
- -如何在 Zynq SoC 上使用中断
- zynq中纯PL编程
- zynq ps/pl交互接口
- zynq IRQ_P2F ----ps中断pl
- 解说Zynq-7000 Uboot如何编译
- zynq的pl中断在linux下的配置及中断驱动
- zynq-7000系列基于zynq-zed的vivado初步设计之linux下控制PL扩展的UART
- zynq学习01 zynq 单独使用PL模块点亮led
- 【ZYNQ-7000开发之一】PL部分驱动VGA显示静态彩色图像
- 【ZYNQ-7000开发之五】PL和PS通过BRAM交互共享数据
- 【ZYNQ-7000开发之十二】中断:PS接收来自PL的中断
- webpack
- 洛谷P1341 无序字母对(欧拉回路)
- Xilinx zynq的资料获取总结
- 1048. 数字加密(20)
- POJ
- 如何在Zynq-7000上烧写PL Image
- Linux下的MP3播放程序
- npm、vue开发环境搭建及路由介绍
- 【数据库】4种 NoSQL数据库
- 剑指offer之找出字符串中第一个重复的字符
- PAT乙级1029
- web 基本概念辨异 —— URI 与 URL
- zynq学习笔记四:编译linux内核
- 如何创建maven项目就是1.7的环境