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

相关文章

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Conda国内镜像源及配置过程

《Conda国内镜像源及配置过程》文章介绍Conda镜像源使用方法,涵盖临时指定单个/多个源、永久配置及恢复默认设置,同时说明main(官方稳定)、free(逐渐弃用)、conda-forge(社区更... 目录一、Conda国内镜像源二、Conda临时使用镜像源指定单个源临时指定多个源创建环境时临时指定源

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻