petalinux-2021.1在zynq7020的flash上启动linux

news2024/11/17 9:39:20

一、 前言

  1. 在电脑上安装虚拟机或者找一个电脑安装linux,用于编译petalinux工程;
  2. 安装与vivado对应的petalinux-tool;
  3. 版本信息:
    1)linux:ubuntu16.04.06;
    2)vivado:v2021.1;
    3)petalinux:v2021.1;
    4)petalinux工程参考bsp:xilinx-zc702-v2021.1-final.bsp;
  4. vivado可以在linux中,也可在windows中;
  5. 离线编译包下载,在petalinux工具下载界面下面就有下载链接,如果是zynq需要下载sstate_arm_2021.1(5.5G),如果是zynqMP需要下载sstate_aarch64_2021.1(12.7G),另外还需要下载文件系统Downloads(42.7G);
  6. 感谢 https://www.freesion.com/article/25851500179/ 解决了我的关键性地址分配问题。

二、 设计流程

  1. 导出.xsa文件
    新建vivado工程,勾选zynq最小系统模块,此处官方建议最小系统需要有如下模块:
    在这里插入图片描述

本人使用之前的板卡做测试,由于板卡串口是连接在PL侧,所以本次验证还需要fpga的bit文件,如果所有的输出引脚都在PS侧,可以不用fpga的bit文件,blockdesign如下:
在这里插入图片描述

  1. 新建petalinux工程
    ubuntu中新建文件夹,依据官方提供的bsp包新建工程,命令如下:
    //导出petalinux工具的环境变量,注意source只对本终端有效
    source ~/tools/01_petalinux/v2021/settings.sh
    //依据bsp包新建工程
    petalinux-create –t project –s ./xilinx-zc702-v2021.1-final.bsp –n petalinux_from_bsp1
    //进入工程目录
    cd petalinux_from_bsp1
  2. 配置petalinux工程
    1)导入.xsa文件
    petalinux-config –get-hw-description …/cpu_wrapper_20230413.xsa
    回车,调出工程配置界面如下:(键盘上下左右键控制设置)
    在这里插入图片描述

2)进入“Subsystem AUTO Hardware Settings”
在这里插入图片描述

注意:此界面与v2019版及之前的版本不同,缺少了Advanced Bootable Images Storage Settings,问题不大,缺少有缺少的做法
在这里插入图片描述

进入Flash Settings,默认配置如下:
在这里插入图片描述

修改如下:
在这里插入图片描述

解释:
a) boot:大小设置为10MB,这个跟后面封装的fsbl、u-boot、bit文件大小有关,默认是5MB,有点小,本人测试时u-boot启动一直有问题,就是因为我的BOOT.bin是5.1MB,这里使用了默认配置,导致一直失败;
b) bootenv:这里没有用到,但是不能删掉,保留,但是大小设置成64KB(flash最小读写扇区);
c) kernel:这里指的是petalinux工程编译后生成的image.ub,对应于fit image,大小设置为21MB;
d) bootscr:这是v2020以后的petalinux版本才用到的,用于引导u-boot的,具体还不太懂,里面内容不多,大小设置为64KB即可;
3)进入“u-boot Configuration”–>“u-boot script configuration”–>“QSPI/OSPI image offsets”
在这里插入图片描述

将fit image offset设置为0xA10000,原因是flash中配置时boot+bootenv=0xA10000
将fit image size设置为0x1500000,与flash中的配置一致;
4)进入Yocto Settings,设置离线编译库文件路径
在这里插入图片描述

说明:
a) petalinux默认是在线编译,因为服务器在国外,首次编译时会比较慢,而且可能会失败,因此提前下载离线编译库文件使用离线编译效率比较高,但是提前下载的库文件较大,在petalinux工具下载界面下面就有下载链接,如果是zynq需要下载sstate_arm_2021.1(5.5G),如果是zynqMP需要下载sstate_aarch64_2021.1(12.7G),另外还需要下载文件系统Downloads(42.7G);
b) 进入“Add pre-mirror url”,输入downloads的路径,注意格式
file://~/tools/01_petalinux/v2021/downloads;
在这里插入图片描述

c) 进入“Local sstate feeds settings”,设置sstate_arm路径
在这里插入图片描述

d) 使能离线编译(选中,按“y”),Enable Network sstate feeds可选可不选,如果下载的离线编译库不是最新的就选上,本地没有的可以自动从网上下载
在这里插入图片描述

5)保存,退出
6)petalinuxbsp.conf文件中声明离线编译路径
打开petalinux_from_bsp1/project-spec/meta-user/conf/petalinuxbsp.conf,新增如下变量
在这里插入图片描述

如果不在此声明的话会报错
在这里插入图片描述

7)修改boot.scr启动地址
在工程目录下,进入u-boot配置界面
petalinux-config –c u-boot
选择ARM architecture,并进入ARM architecture
在这里插入图片描述

找到Boot script offset,设置为0x1F10000,原因还是flash中的地址boot+bootenv+kernel=0x1F10000。
在这里插入图片描述

8)保存,退出
4. 编译petalinux工程
工程目录下,输入命令:petalinux-build
编译成功状态如下:
在这里插入图片描述

  1. bin文件打包
    工程目录下,输入命令:petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga ./images/linux/system.bit --u-boot,可生成BOOT.BIN
    使用如下命令对生成的boot.bin、boot.scr、image.ub做“0”填充,为了匹配flash中的区域大小配置,注意填充的大小,最后一个boot.scr直接将flash剩余的地址全部做了填充
    在这里插入图片描述

最后生成boot-all.bin,可直接下载到flash中,上电成功启动,本次测试flash大小为32MB。
在这里插入图片描述

但是网口驱动好像有问题,继续填坑……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

row_number 和 cte 使用实例:考场监考安排

row_number 和 cte 使用实例:考场监考安排 考场监考安排使用 cte 模拟两个表的原始数据使用 master..spt_values 进行数据填充优先安排时长较长的考试使用 cte 安排第一个需要安排的科目统计老师已有的监考时长尝试使用 cte 递归,进行下一场考试安排&…

网咯通信基础 - 数据交换方式

文章目录 1 概述2 分类2.1 电路交换2.2 报文交换2.3 分组交换 1 概述 2 分类 2.1 电路交换 图示:发送方和接收方用一系列链路直接连通数据传输划分:电路建立、数据传输 和 电路拆除 3 个过程原理:当交换机收到一个呼叫后就会在网络中寻找一…

机器学习之SVM分类器介绍——核函数、SVM分类器的使用

系类文章目录 机器学习算法——KD树算法介绍以及案例介绍 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 文章目录 一、SVM支持向量机介绍 1.1、SVM介绍 1.2、几种核函数简介 a、sigmoid核函数 b、非线性SVM与核函…

运行时内存数据区之堆(一)

堆(Heap) 堆的核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定…

“行泊舱”+出海全面发力,这家ADAS厂商跑出规模化“新速度”

进入2023年,智能汽车市场已经由纯技术驱动迈入了市场驱动的新周期,接下来的市场竞争比拼的重点将是真正的规模化普及。 《高工智能汽车研究院》认为,中国乘用车市场已经来到了L2普及、L2冲刺发力以及L3/L4小规模落地的并行发展周期。对于智能…

AI工具应该成为开发者的帮手

前言 作为一名大前端开发者来说,最看重的就是web3.0的进一步发展以及推广速度。说到web3.0就不得不说元宇宙,就拿今年的支付宝集五福活动,就用到了元宇宙的功能:福气乐园,这也是为什么元宇宙越来越成为触手可及的&…

Ubuntu 自带截图工具快捷键盘

PrtSc – 获取整个屏幕的截图并保存到 Pictures 目录。 Shift PrtSc – 获取屏幕的某个区域截图并保存到 Pictures 目录。 Alt PrtSc –获取当前窗口的截图并保存到 Pictures 目录。 Ctrl PrtSc – 获取整个屏幕的截图并存放到剪贴板。 Shift Ctrl PrtSc – 获取屏幕的某个…

嚣张|微软“光明正大”要数据,Access用户怎么办?WPS笑了

微软“光明正大”要数据 继微软“数据门”事件之后,微软又开始出“幺蛾子”了。 最近,电脑是windows11会提示:你的数据将在所在国家或地区之外进行处理。 最让用户感到霸道的是,竟然没有“跳过”按钮。只能点击继续,…

MyBatis学习总结(五)逆向工程

MyBatis学习总结(五)逆向工程 一、MyBatis的逆向工程 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。 Hibernate是支持正向工 程的。逆向工程:先创建数据库表,由框架负责根据数据库表&am…

操作系统(四)——文件管理

文章目录 第四章 文件管理[4.1.1] 初识文件管理(一)文件的属性(二)文件内部的数据应该怎样组织起来(三)文件之间应该怎样组织起来(四)操作系统应该向上提供哪些功能(五&a…

geoserver发布矢量切片服务

以前切片服务只支持栅格切片,后来技术更新发展,也支持矢量切片了,好处是不失真,而且很快,geoserver本身也不支持这种服务,但是他提供了一个插件,去官网下载下来,放到lib文件夹里&…

2023/4/16周报

目录 摘要 论文阅读 1、标题和现存问题 2、模型构建 3、方法实现 4、实验结果 5、扩展实验 深度学习 1、GNN特点 2、原理 3、GNN数据处理 总结 摘要 本周在论文阅读上,阅读了一篇基于图神经网络的技术识别链接预测方研究论文。通过融合了时间特征的专利…

镭速Raysync v6.6.8.0版本发布

最近镭速发布了v6.6.8.0版本,已经发布上线了。主要更新内容有服务器下发任务支持指定客户端,客户端增加日志清理和日志压缩,自动删除源文件保持源目录结构,支持将文件投递给其他成员等功能,详细的更新内容如下&#xf…

ELK日志收集告警

elastic stack elastic search 日志持久化filebeats 日志收集kibana 日志展示elaticalert 日志告警 elastalert官网Elastic Observability APM 指标监控 java-agent 基于logback根据level进行日志的切分聚合宿主机上安装filebeats 配置inputs插件配置采集路径配置多行匹配规则…

第五天 CUDA Runtime API

图中可以看到,Runtime API 是基于 Driver API 之上开发的一套 APIDriver API 基本都是 cu 开头的,而Runtime API 基本都是以 cuda 开头的 Runtime API 概述 CUDA Runtime是封装了CUDA Driver的高级别更友好的APIcudaruntime需要引入cudart这个so文件上下…

系统分析师案例题【系统设计篇(Web开发)】

目录 1、Web综合知识考察 2、单台机器到数据库与Web服务器分离 3、应用服务器集群 3.1 负载均衡 3.2 Session 共享机制 3.3 有状态和无状态 4、持久化技术 5、数据库读写分离化 6、缓存技术 7、Redis 7.1 Redis集群切片与分片 7.2 Redis分布式存储 7.3 Redis数据类…

Windows使用ngrok实现本地程序外网域名访问-详细教程

需求分析 同事要求在外网以域名的方式,访问我本地的程序,故需要将localhost:8080映射到外网,让同事可以通过:域名/接口 的形式访问到本地程序的功能接口 安装 进入官网:https://ngrok.com/ 点击顶部Download&#x…

十三、市场活动:全部导出

功能需求:批量导出市场活动 用户在市场活动主页面,点击"批量导出"按钮,把所有市场活动生成一个excel文件,弹出文件下载的对话框; 用户选择要保存的目录,完成导出市场活动的功能. *导出成功之后,页面不刷新 功能分析:导出市场活动 1.给批量…

打卡Android学习—Compose 布局 和 修饰符

我们将通过解释 布局 和 修饰符 的基础知识 来开始我们的旅程。我们将介绍他们是如何协同工作的,Compose 提供了什么开箱即用的API,以及如何漂亮地设计您的UI 布局——因为 Compose 中的几乎所有内容都是布局 布局是Compose UI的核心组件,使…

( “树” 之 BST) 669. 修剪二叉搜索树 ——【Leetcode每日一题】

二叉查找树(BST):根节点大于等于左子树所有节点,小于等于右子树所有节点。 二叉查找树中序遍历有序。 669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&…