ZCU102上PYNQ镜像系统的移植

2023-11-02 13:20
文章标签 镜像 系统 移植 pynq zcu102

本文主要是介绍ZCU102上PYNQ镜像系统的移植,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文仅简单记录笔者镜像PYNQ系统的过程,其中会给出当时参考的相关文章或博客!

NOTE1:核心要点,按照网上大多教程,最后仅制作了boot.bin以及image.up两个启动文件,并没有挂载相应的跟文件系统,或者是挂载了一个空的跟文件系统,板子启动后也没啥用!鉴于不少教程中给出的PYNQ镜像系统的移植过程较为复杂,笔者算是“投机取巧”地使用了一种取巧的方法,即使用Petalinux工具制作上述的两个启动文件,然后直接将别人制作好的PYNQ镜像中的跟文件系统即rootfs移动到SD卡的相应分区中,此即完成了快速移植!

NOTE2:关于SD卡的分区见笔者的另一篇博客,前人制作好的PYNQ镜像也可在我的博客中找到(或许你可以直接用该镜像系统成果启动SD卡哦!)

 

过程正文如下:

首先是安装了Ubuntu16.04LTS,然后在该虚拟机上安装petalinux工具链,这一块的内容可参考以下博客:

https://blog.csdn.net/Zheng_r_w/article/details/106733867

https://article.itxueyuan.com/0e4q7b

安装完之后根据这两个博客中的内容,其实就可以镜像出一个没有挂载东西的linux镜像系统,这里面需要注意几点:

1、有些博客中还需要下载vivado到Ubuntu中,当然我也下载安装了,但是后面并没有用上,如果windows上已经安装了整个vivado的套件,其实就不需要这个了!

2、建立自己的镜像过程中使用的都是官方提供的文件,即对应于zcu102的BSP文件(需要自己去官网下载),即板级支持包,里面包含了一个模板工程的.hdf文件以及.bit文件之类的。所以有些博客中没使用这个官方给出的,而是自己搭建工程,然后将相关的文件导出来,对于初学者,笔者更推荐使用这个官方给的BSP!

3、以下参考的博客似乎就是在制作PYNQ镜像,笔者参考了一部分,最后还是用取巧的方法实现了(见上文NOTE)!

https://www.wuquantai.com/post/%E7%BC%96%E8%AF%91pynq-%E5%9C%A8zcu102%E4%B8%8A%E7%9A%84%E9%95%9C%E5%83%8F/

https://blog.csdn.net/qq_35712169/article/details/108478904

https://blog.csdn.net/vacajk/article/details/84728062

http://bbs.eeworld.com.cn/thread-1159506-1-1.html

https://blog.csdn.net/botao_li/article/details/86645442?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242

 

4、注意镜像过程中使用的一些petalinux的指令,几条常规的如上述博客中所示,然后就是需要注意在petalinux-build之后,需要进行打包处理,使用如下指令:

petalinux-package --boot --format BIN --fsbl images/linux/zynqmp_fsbl.elf --u-boot images/linux/u-boot.elf --pmufw images/linux/pmufw.elf --fpga images/linux/system.bit --force

在完成上述工作后,一个简单的镜像系统就出来了!这时候需要有一张制作好的SD卡,关于SD卡的制作见本笔者的另一篇博客。

分别将BOOT.bin以及image.up移植到第一分区,将rootfs解压到第二分区中(莫急)!

然后将SD卡弹出,插入zcu102中,启动,通过串口可以看到,确实启动了,然后通过ssh方式远程控制该cpu,可以看到他的跟文件系统下面啥也没有,所以这个系统目前是什么也做不了的!

 

至此,本打算重做,即采用3中几个博客里的方法来制作镜像,但是不死心的我又尝试了一下!

即将前面提及的完整镜像再次烧录进去,然后将SD卡连接上虚拟机,然后在虚拟机中将第一分区中的文件删掉,即将boot.bin以及image.up删掉,然后将前面刚刚自己制作的这两个文件copy到这个第一分区中,然后弹出SD卡,再次插入zcu102,启动。

可以看到,确实是跑起来了,然后运行一个.py文件的时候发现不行,提示的问题是

ERROR:unable to open xlnk!

解决方法参考博客:

https://blog.csdn.net/qq_40547016/article/details/102756269

采用博客中的方法,首先在配置界面进行修改,如下图所示:

然后是第二步,在设备树那块进行修改,其原文档内容如下(注意所给出的修改位置,笔者第一次就是弄做了,然后又重新制作了一次):

/include/ "system-conf.dtsi"
/{
};        //在这里添加上述博客中说的内容!&i2c1 {/* FIXME PL i2c via PCA9306 - u45 *//* FIXME MSP430 - u41 - not detected */i2c-mux@74 { /* u34 */i2c@0 { /* i2c mw 74 0 1 *//** IIC_EEPROM 1kB memory which uses 256B blocks* where every block has different address.*    0 - 256B address 0x54* 256B - 512B address 0x55* 512B - 768B address 0x56* 768B - 1024B address 0x57*/eeprom: eeprom@54 { /* u23 */compatible = "atmel,24c08";reg = <0x54>;};};};
};

至此,修改完成,再次build并且package后,再将两个启动文件放入第一分区中。

此时的SD卡中的镜像系统已经可以正常运行.py .c .cpp等文件了。

 

NOTE3:此方法仅作为一种取巧之法,以畅PYNQ系列FPGA入门者的学习进阶之路!

这篇关于ZCU102上PYNQ镜像系统的移植的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330857

相关文章

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.