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

相关文章

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总