在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 Image

OSL 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已经提供了灵活的解决方案,如果开发者要把这个功能集成在自己的应用程序中,也有很多的代码可以参考,并不是很困难的任务。

如何在Zynq-7000上烧写PL Image相关推荐

  1. 嵌入式:利用TF卡给4412开发板的emmc上烧写安卓系统

    系统: 主机:64位windows10主机,vmware player15虚拟机,64位debian9.8宿主机. 开发板: 迅为4412开发板,核心板是scp 1G的. 步骤: 1,有一个TF卡,至 ...

  2. linux/windows上STM32固件烧写工具的开发demo

    1.主要实现功能:完成对HEX和DFU文件的烧写,显示烧写的进度等功能 2.开发工具:Qt creator4.9.0 3.开发系统平台:windows系统和linux系统两套平台 4.具体开发步骤: ...

  3. ZYNQ 7000 PS和PL 信号、接口、管脚分布

    1.ZYNQ 7000 PS端和PL端都有自己独立的电源引脚(Power Pin) 2.PS端接口和信号: PS_CLK(System reference clock) POR_RST_N(Power ...

  4. 嵌入式linux/鸿蒙开发板(IMX6ULL)开发流程(六)烧写整个系统或更新部分系统

    文章目录 1.烧写整个系统或更新部分系统 1.1 100ASK_IMX6ULL启动开关 1.2 在Windows使用USB烧写工具 1.2.1 烧写工具目录详解 1.2.2 连接USB OTG线 1. ...

  5. Hi3520烧写flash失败问题分析

    背景 CPU芯片型号:Hi3520 DRQCV300 CP3091820 1820-CHINA flash型号:MX25L12835FM2I-10G [spi nor flash] 工厂生产的样板回来 ...

  6. 嵌入式系统 - Nand Flash 烧写问题排查

    问题背景 板卡:SOM-TL437x-A1 事件:生产了 410 PCS 需要测试.烧写系统,部分板卡烧写出货系统异常. 现象:其中 78 PCS 由于 BTB 问题未测试.332 PCS 功能测试后 ...

  7. 烧写整个系统或更新部分系统到STM32MP157开发板

    在线课堂:https://www.100ask.net/index(课程观看) 论  坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taoba ...

  8. micropython8266ota_[Micropython]TPYBoardV102 Dfu固件烧写教程

    TPYBoardv10x固件烧写一直是大家比较关心的问题,上次教大家用SWD接口烧写TPYBoard的固件,这次教大家用另一种方式烧写我们TPYBoardv10x的固件,直接用dfu模式烧写固件. 用 ...

  9. ZYNQ开发系列——把PS和PL程序烧写到FLASH中

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--把PS和PL程序烧写到FLASH中 生成 fsbl.elf 生成 BOOT.bin 下载 BOOT.bin 文件到 ...

最新文章

  1. 颠覆性技术的兴起及其影响
  2. java 二叉树_二叉树实现java
  3. boost::sort模块实现跨并行线程的整数排序速度基准的测试程序
  4. maven构建scala工程并最终运行的所有细节(scala maven helloworld)
  5. Leetcode--994. 腐烂的橘子(java)
  6. 【英语学习】【WOTD】minion 释义/词源/示例
  7. 合众朱光林:借O2O模式反馈企业才有价值
  8. UEditor(四)——表情包
  9. 中控考勤机Java二次开发(附Demo)
  10. 部署新浪云静态页面和服务器步骤
  11. 君莫笑系列视频学习(2)
  12. Maye v1.3.4.0 类似Rolan简洁小巧易用的快速启动工具
  13. subplots用法详解
  14. 天问: 量子力学中的波函数到底表示什么?
  15. windows更换壁纸cmd命令,window修改注册表更换壁纸,已设壁纸缓存地址
  16. 分享两个靠谱的微信跳转浏览器打开网页/下载app的接口
  17. 慧眼舆情热词分析架构简述
  18. Pandas库离线安装总结
  19. Google电面狂出难题,春招比秋招难多了……
  20. 根据汉字获得它的拼音

热门文章

  1. 第十六届智能车竞赛 | 单车拉力组浅析
  2. Review: Maximum Energy Efficiency Tracking for Wireless Power Transfer Systems
  3. 双轴机械臂串口控制命令开发与测试:STM32F103控制板,简易调试命令集合
  4. installshield 安装文件属性的原始文件名 如何修改_iPhone修改微信提示音,iOS12可用,无需越狱详细教程...
  5. 轻量级web api_10个很棒的JavaScript库,提升Web开发效率
  6. python实现数据库连接池_Python实现Mysql数据库连接池
  7. 影响生产计划制定的因素_石料生产线选砂石原骨料时的技巧及影响破碎的因素...
  8. Hyperbola(双曲线)
  9. 【 C 】初识函数指针
  10. 解决Adobe Reader安装错误150120