技术编辑archive1 于 星期六, 06/28/2014 - 10:05 发表

作者:hqin, Xilinx处理器专家FAE

在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

  1. 在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()中实现的。

  1. 在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字节,直到全部写完。

  1. 在用户程序中烧写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. 用jlink在mini2440上烧写uboot

    首先,附上我安装jlink驱动: http://download.csdn.net/detail/zzmno1/3776716#comment 以及我使用的uboot.bin文件下载地址: http: ...

  2. esp32(M5STACK)程序烧写(Ubuntu)

    由于我们的开发环境在Ubuntu上,所以介绍一下如何在Ubuntu上烧写esp32的程序 首先下载esptools   pip install esptool           擦除 sudo es ...

  3. 烧写u_boot系统和linux系统

    今天下午准备烧写一下u_boot还有linux系统,因为是笔记本电脑,吐槽一下,笔记本电脑的usb转串口不是怎么稳定,dnw下对应的驱动也不怎么好用,导致在笔记本电脑上烧写系统的成功率比较低,本来三点 ...

  4. [Intel Edison开发板] 06、Edison开发在linux中烧写、配置、搭建开发环境

    1.前言 linux上烧写.配置.搭建Edison环境,千万不要用默认的setup tool for ubuntu!!! (即使,你用的就是ubuntu) 因为,其默认的工具会从一个坏链接下载配置文件 ...

  5. UBIFS分区制作及UBIFS烧写和启动

    参考 http://blog.csdn.net/chongzi865458/article/details/6799258 ubiattach version 1.0 - a tool to atta ...

  6. 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上

    博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813  本篇文章中用到的工具源码下载 : -- ok-6410A 附带的 A ...

  7. 记录在tiny6410平台上采用4GSD卡来启动uboot和烧写nand flash uboot

    下面这种方法是从网上转的 没有验证 环境:ubuntu 13.04一.首先制作sd启动盘: 插入SD卡    sudo dd iflag=dsync oflag=dsync if=tiny210v2- ...

  8. 二、先在SD卡上启动U-boot,再烧写新的U-boot进Nandflash

    1. 制作SD卡 先准备一张2G的SD卡(不能用8G的,2G的卡和8G的卡协议不一样),和烧写SD卡的工具write_sd以及需要烧写到SD卡中的u-boot-movi.bin.将SD卡格式化后连接到 ...

  9. BoneBlack am335x利用SD卡烧写板卡上的emmc

    参考ti论坛上面的一篇文章: 链接:https://pan.baidu.com/s/1SLSUbCRrIULJJf_BNI3sEQ 密码: hvem 自己稍微修改的debrick.sh 链接: htt ...

  10. TQ2440在Ubuntu16.04上如何搭建DNW烧写环境

    八月份国赛比完,原计划开始的嵌入式Linux学习一直拖到了现在:由于之前所有的开发全在Windows下进行的,对各种底层完全不清楚,刚好这段时间开始学习Linux,我就在想能不能把开发环境给迁移到Li ...

随机推荐

  1. aspnetcore两种上传图片(文件)的方式

    aspnetcore上传图片也就是上传文件有两种方式,一种是通过form-data,一种是binary. 先介绍第一种form-data: 该方式需要显示指定一个IFormFile类型,该组件会动态通 ...

  2. Google高精度的搜索技巧

    利用"关键字",完全匹配搜索(双引号精准搜索). 利用"关键字:档案类型",搜寻特定档案类型. 例如:"简历:doc"."钢铁侠: ...

  3. 【HarmonyOS】安装DevEco Studio后检查环境出现ohpm not set up

    按照官网的操作方式,下载完ohpm总是检测不到 打开cmd,发现我之前因为其他项目改过编码 输入 regedit 打开注册表编辑页 按路径[计算机\HKEY_LOCAL_MACHINE\SOFTWAR ...

  4. 【爬虫+数据清洗+可视化分析】Python舆情分析哔哩哔哩"狂飙"的评论

    目录 一.背景介绍 二.爬虫代码 2.1 展示爬取结果 2.2 爬虫代码讲解 三.可视化代码 3.1 读取数据 3.2 数据清洗 3.3 可视化 3.3.1 IP属地分析-柱形图 3.3.2 评论时间 ...

  5. Docker手工部署GO环境

    参考: (最新2020)Golang 使用Dockerfile 打包部署到 docker https://blog.csdn.net/weixin_44042863/article/details/1 ...

  6. fastposter v2.7.1 紧急发布 电商海报编辑器

    fastposter v2.7.1 紧急发布 电商海报编辑器 fastposter海报生成器,电商海报编辑器,电商海报设计器,fast快速生成海报 海报制作 海报开发.二维码海报,图片海报,分享海报, ...

  7. C#的关于窗体的类库方案 - 开源研究系列文章

    这次想到了以前编写的关于应用的那个类库,不过当时的只是定义了显示接口,然后调用窗体显示.现在想到要把这个关于窗体的类库进行集合,统一调用,于是就把原来的代码进行了修改完善,终于得到了这次这个例子. 这 ...

  8. C语言:如何删除在可视化网页中未可见的内容(网页txt)

    我这个代码仅仅限制于在chrome浏览器中下载china daliy的网页中实现删除可视化内容,因为每个网页的超链接或者文本主内容分布不一样,但是学会了删除一个网页类型的不可视化内容之后,修改其他网页 ...

  9. 怎么在线给pdf加盖电子公章

    1前言:由于电子印章在工作中的普及,其方便易用性,也得到大家的认可. 目前我们在公文流转过程中,到最后常常需要在pdf文档进行电子盖章. 2方法:此文,主要是使用一个方便易用的在线pdf印章工具,pa ...

  10. pyqt5 子线程如何操作主线程GUI

    一.简介 在使用pyqt5编写gui时遇到两个问题,会导致界面崩溃,今天就围绕这两个问题来简单说明和改进. 1.在主线程中使用while无限循环会导致界面崩溃 2.在子线程中操作主线程gui会导致界面 ...