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

相关文章

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节