Petalinux的使用——定制Linux系统

news2024/11/25 6:35:43

文章目录

  • 配置petalinux运行环境
  • petalinux设计流程

配置petalinux运行环境

Petalinux的安装在文章Ubuntu镜像源的更改及其Petalinux的安装中已经介绍,下面介绍petalinux运行环境的配置过程。
进入到petalinux的安装路径下,使用下面的命令对petalinux的运行环境进行配置。

source settings.sh

需要注意的是,这条命令只对当前终端有效,重新开一个终端后需要再执行该命令才可以,执行结果如下图所示。
在这里插入图片描述
如果每次打开终端都要使用petalinux,可以把source petalinux的绝对路径添加到家目录下的.bashrc脚本文件中,.bashrc脚本文件是每次打开终端自动执行的。比如,按照我的安装路径在.bashrc文件中添加下面的代码。

source /opt/pkg/petalinux/settings.sh

添加成功以后保存退出。
在这里插入图片描述
重新打开一个终端窗口,对petalinux的运行环境进行配置的语句一开始就执行了,不过每次启动终端都会花时间执行。
在这里插入图片描述


petalinux设计流程

petalinux设计流程大致为:搭建Vivado工程,导出硬件描述文件(.hdf文件);创建petalinux工程;将.hdf文件导入到petalinux工程;配置petalinux工程(包括内核、u-boot和根文件系统的配置);编译petalinux工程(得到u-boot镜像、内核镜像、rootfs、bitstream、fsbl镜像文件);启动开发板进行验证。
进入到petalinux的安装路径下,在命令行输入petalinux-,按下两次Tab键,就显示了下面6个petalinux命令。
在这里插入图片描述
可以通过–help的命令查看该命令的帮助信息,如下图所示。
在这里插入图片描述
下面提供了创建zynq工程的命令样例。
在这里插入图片描述

petalinux-create -t project -n project_name --template zynq

根据样例输入命令创建工程,如果不使用-p指定工程路径,工程默认创建在当前路径下,如下如所示。
在这里插入图片描述
准备好.hdf文件,该文件需要在Vivado软件中先生成比特流文件,然后导出到硬件,导出的时候需要勾选包括比特流选项。在这里插入图片描述
先进入到刚创建的工程文件夹下,然后使用下面的命令将.hdf文件导入到petalinux工程中。

petalinux-config --get-hw-description .hdf文件所在文件夹的绝对路径
petalinux-config --get-hw-description /home/ubuntu16/zynq/hdf #例子

其运行一会之后就打开了下面配置的图形化界面。
在这里插入图片描述
这里暂时使用默认配置,退出当前窗口,等待其配置完成,完成后打印的信息如下图所示。
在这里插入图片描述
如果关闭该窗口后还想打开该窗口进行补充设置,使用petalinux-config命令即可。
使用下面的命令就可以依次配置u-boot、kernel和rootfs,这里都暂时保持默认设置,不进行配置。

petalinux-config -c u-boot
petalinux-config -c kernel
petalinux-config -c rootfs

u-boot配置成功如下图所示。
在这里插入图片描述
内核配置成功如下图所示。
在这里插入图片描述
根文件系统配置成功。
在这里插入图片描述
以上配置完成后就可以进行编译了,编译的时候可以选择编译整个petalinux工程,也可以单独编译u-boot、kernel、rootfs。编译整个petalinux工程包括u-boot、kernel、rootfs、fsbl、bitstream、设备树等,编译使用的命令如下。

petalinux-build #编译整个petalinux工程
petalinux-build -c u-boot
petalinux-build -c kernel
petalinux-build -c rootfs

可以在虚拟机设置这里根据自己电脑的配置将处理器的数量调大,这样在编译的时候速度会快一些。
在这里插入图片描述
编译成功后打印的信息如下。
在这里插入图片描述
依次打开该工程下的/images/linux文件夹,里面就存放了刚才编译工程所生成的镜像文件,如下图所示。
在这里插入图片描述
在启动开发板之前要制作一个启动镜像文件BOOT.BIN,该文件是fsbl镜像文件、FPGA镜像文件和用户程序镜像文件整合而成的,其使用的命令如下。

petalinux-package --boot --fsbl fsbl_path --fpga fpga_path --u-boot uboot_path --force

其中,–boot表示要生成BOOT.BIN文件,–fsbl用于指定fsbl文件(上图中的zynq_fsbl.elf文件)的路径,–fpga用于指定fpga文件(上图中的system.bit文件)的路径,–u-boot用于指定u-boot文件(上图中的u-boot.elf文件)的路径。
如果进到上面所在的文件夹/images/linux下,使用下面的程序就可以打包。

petalinux-package --boot --fsbl ./zynq_fsbl.elf --fpga ./system.bit --u-boot ./u-boot.elf --force

命令执行成功后就在当前目录下生成了BOOT.BIN镜像文件。
在这里插入图片描述
不同于SDK实验中只拷贝BOOT.BIN文件就可以启动开发板,如下图所示,终端打印信息提示无法读取image.ub文件。
在这里插入图片描述
image.ub文件是kernel、设备树和rootfs整合而成的文件,该文件在编译之后也生成了,开发板启动也需要image.ub文件,将两个文件拷贝到SD卡,然后再启动开发板。
在这里插入图片描述
有了这两个文件,开发板就成功启动了,启动成功后的用户名和密码都是root。
在这里插入图片描述
需要说明的是,有些Vivado工程定制的镜像文件无法启动开发板,我使用helloworld的SDK工程创建的就无法启动,后面改用呼吸灯breath_led的工程定制的就可以启动,但是自己定制的这个Linux系统网络接口有点问题,和Ubuntu互相ping不通,所以直接使用了厂家提供的镜像文件。
在这里插入图片描述


下面是使用厂家提供的Vivado工程定制Linux系统的过程,该工程中的框图如下。
在这里插入图片描述
使用该工程SDK文件夹下的.hdf文件,将其先拷贝到Ubuntu中。
在这里插入图片描述
先设置petalinux环境变量,在该目录下创建工程。

source settings.sh
petalinux-create -t project -n zynq7020 --template zynq

创建成功后进到创建的工程目录下。
在这里插入图片描述
执行下面的命令从存放hdf的文件夹中获取文件进行相关配置。

petalinux-config --get-hw-description /home/ubuntu16/zynq/hdf

执行过程中弹出的图形配置窗口保持默认设置即可,执行过程如下图所示。
在这里插入图片描述
依次执行下面三条命令分别对u-boot、kernel和rootfs进行配置,配置过程中弹出的图形窗口仍然使用默认配置。

petalinux-config -c u-boot
petalinux-config -c kernel
petalinux-config -c rootfs

u-boot配置成功后接着配置kernel。
在这里插入图片描述
kernel配置成功之后再配置rootfs。
在这里插入图片描述rootfs配置成功后的结果如下图所示。
在这里插入图片描述
以上配置完成后执行下面的命令进行编译。

petalinux-build

编译成功之后打印的信息如下。
在这里插入图片描述
然后进到/images/linux目录下,执行下面的命令将三个文件合成一个BOOT.BIN文件。

petalinux-package --boot --fsbl ./zynq_fsbl.elf --fpga ./system.bit --u-boot ./u-boot.elf --force

然后就在该目录下生成了BOOT.BIN文件,如下图所示。
在这里插入图片描述
将BOOT.BIN文件和image.ub文件拷贝到SD卡中,成功启动了开发板,如下图所示。
在这里插入图片描述
开发板中的网口直接连接路由器,启动会快一些,但是如果和电脑相连,也能够启动成功,这样启动后也方便我们自己设置IP地址。
在这里插入图片描述
设置eth0的IP,使其和Ubuntu中的IP在同一网段内,这样就能够互相ping通了。
在这里插入图片描述
网络通了之后就可以通过nfs挂载或者使用网络传输文件到开发板进行测试了。
在这里插入图片描述
这里的elf文件在SDK中新建工程的时候,需要将操作系统的平台选择为linux,如下图所示。
在这里插入图片描述
否则在执行文件的时候会显示这是非法指令。
在这里插入图片描述


参考文章:
ZYNQ学习之路13.创建PetaLinux工程

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

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

相关文章

第十三章 计算机网络

这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层:中继器,集线器(多路中继器) 数据链路层:网桥,交换机(多端口…

【微磁学3D绘图工具探索】Excalibur

文章目录 概要调查报告技术名词解释主要特点 技术和算法实现他能够画出怎样酷炫的图 小结 概要 微磁学中的磁学结构同时包括二维和三维,想要绘制得好看,结果清晰,那么就需要一些自己写的绘图代码之外的额外渲染功能,尤其是对于三…

JS hook cookie

JS hook cookie cookie 的值是V,v是动态变化的 可以看到D中生成了cookie的值n 尝试使用RPC定位到cookie。 替换内容,下断点。 将写好的RPC代码直接插入 加入代码,file.virjar.com/sekiro_web_client.js?_123 这个地址是在前端创建客户端…

python使用mongo操作

目前有个需求,就是把所有sql转为mongo管道查询 知识点 在 MongoDB 中,allowDiskUse 选项应该作为聚合命令的一个选项,而不是聚合管道的一个阶段。allowDiskUse 选项用于允许聚合操作使用磁盘空间来临时存储数据(当聚合操作的数据…

Amazon Bedrock的进化:更多选择与新特性,助力生成式AI应用更快落地

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

YoloV9改进策略:Block改进|改进HCF-Net的PPA模块|附结构图|(独家改进,全网首发)

摘要 HCF-Net是一种用于红外小物体检测的深度学习网络。它主要包括三个模块:并行化斑块感知注意力(PPA)模块、维度感知选择性整合(DASI)模块和多稀释通道细化器(MDCR)模块。 PPA模块采用多分支特征提取策略,用于捕捉不同尺度和层次的特征信息。DASI模块可实现自适应信…

安卓使用Fiddler抓包 2024

简介 最近试了一下安卓使用fiddler 抓包,发现https包基本都会丢失。原因是Anandroid 7版本针对ssl安全性做了加强,不认可用户的证书。我们要做的就是把fiddler导出的证书进过处理后放置到系统证书目录下面,这样才能抓包https请求。 这里使用…

323_C++_QT_QProcess执行cmd解压、压缩、删除tar.gz等等其他压缩包文件到指定目录,不需要外部库,QT自带API的就行

// decompressPath : 解压到此目录 // fileName : 解压的tar.gz文件名executeCommand(decompressPath , QString::fromStdString(fileName));// 开始解压 void executeCommand

k8s ReplicaSet

ReplicaSet 是替代 ReplicationController 的,ReplicaSet 的行为与 ReplicationController 完全相同, 但pod 选择器的表达能力更强。 ReplicaSet 和 ReplicationController 的区别: ReplicationController 的标签选择器只允许包含某个标签的…

【Leetcode 42】 接雨水-单调栈解法

基础思路: 维持栈单调递减,一旦出现元素大于栈顶元素,就可以计算雨水量,同时填坑(弹出栈顶元素) 需要注意: 单调栈通常保存的是下标,用于计算距离 public static int trap2(int[…

YOLO系列笔记(十二)——csv文件转成text文件

csv文件转成text文件 前言方法概述实现代码说明结果 结论 前言 在上一篇文章中,我们探讨了如何将CSV格式的数据集转换为XML格式。然而,某些神经网络进行数据处理时,可能需要将数据直接以纯文本格式(TXT)提供。这种需求…

流畅的python-学习笔记_设计模式+装饰器+闭包

策略模式 类继承abc.ABC即实现抽象类,方法可用abc.abstractmethod装饰,表明为抽象方法 装饰器基础 装饰器实际是语法糖,被装饰的函数实际是装饰器内部返回函数的引用 缺点:装饰器函数覆盖了被装饰函数的__name__和__doc__属性…

Chatbot 在教育中的应用

Chatbot 在教育中的应用 基本信息 ​ 这篇博客主要介绍几篇Chatbot在教育领域中应用的文章,根据文章的侧重点不同,分为介绍教育理论,与介绍系统设计两类。从问题定义、技术方法、教育学理论、实验设计、结论证据几个方面概括各篇文章。 博…

html实现网页插入音频

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要介绍html中 如何插入音乐和视频 视频插入 标签:<video></video> 兼容格式:mp4,因为别的浏览器都有不兼容的格式&#xff0c;唯一对mp4全都兼容。所以尽量使用mp4格式。 属性: 属性属性值…

基于PSO优化的PV光伏发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于PSO优化的PV光伏发电系统simulink建模与仿真。其中PSO采用matlab编程实现&#xff0c;通过simulink的函数嵌入模块&#xff0c;将matlab调用进simulink中。 2.系统仿真结…

【统计推断】-01 抽样原理之(六):三个示例

目录 一、说明二、处理有限的、大尺度的母体抽样三、非参数的估计四、连续母体抽样技巧--分箱 一、说明 对于抽样问题&#xff0c;前几期文章都是理论探讨。本篇给出若干示例&#xff0c;展现具体的情况下&#xff0c;面对数据&#xff0c;如何给出处理策略。 二、处理有限的…

4步快速配置Java和MySQL环境

每次入职一家新公司或者用一台其他的临时电脑或者新电脑时都要重新配置Java开发环境&#xff0c;很麻烦&#xff0c;因此我在这里记录一下快速配置环境的方式&#xff0c;四步搞定&#xff01;此处以win为操作系统进行讲解。 第一步&#xff1a;下载链接 下载链接&#xff1a…

CMakeLists.txt语法规则:foreach循环的关键字

一. 简介 前一篇文章学习了 CMakeLists.txt语法中 foreach循环的基本用法。文章如下&#xff1a; CMakeLists.txt语法规则&#xff1a;foreach 循环基本用法-CSDN博客 本文继续 CMakeLists.txt语法中 foreach循环语句&#xff0c;主要学习 foreach循环中的关键字。 二. CM…

代码随想录打卡第14天第18天

二叉树 1 二叉树部分的一些新知 &#xff08;1&#xff09;二叉树的定义&#xff0c;C方法一定要知道&#xff0c;相对于链表而言&#xff0c;二叉树就是多了两个指针&#xff0c;即左右子节点 struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : …

C#上位机源程序 下位机单片机实现控制电机

基于C#的上位机编程程序&#xff0c;通过上位机控制下位机实现电脑操作控制步进电机的转动 程序 #include<reg52.h>#define uchar unsigned char#define uint unsigned int#include "2401.h"#include "delay.h"#include "ds18b20.h"sbit I…