Vitis下Linux应用程序开发流程

本文介绍了Vitis统一软件平台下的Linux应用程序开发流程,包括Vitis嵌入式应用开发步骤,如从Vivado导出xsa,创建Platform和Domain,以及如何在Vitis中创建Linux应用程序。此外,还提到了硬件平台与Linux镜像的创建,以及最终的测试步骤,通过创建hello_world应用程序验证流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vitis统一软件平台将Xilinx各种软件统一,即支持Vitis嵌入式软件开发流程,又支持Vitis应用软件加速开发流程。本文介绍Vitis嵌入式软件中的linux应用程序开发流程。

1 Vitis软件开发工作流程

嵌入式应用开发流程:

在这里插入图片描述

  • 从Vivado导出xsa
  • 将xsa导入vitis软件并创建platform
  • 创建domain
  • 在Vitis IDE调试应用
  • 系统级调试
  • 生成boot images

Vitis软件platform工作空间结构,有两种Project类型:

Platform Project和System project

Platform Project:提供硬件信息和软件运行环境。可通过导入XSA或存在的Platform建立。几个System project可以建立在同一个Platform Project 上,共享硬件和软件软件。

System project:将同时运行在器件上的应用进行组合。两个独立运行在同一个处理器上的应用不能在一个System
project里。一个workspace可以包含多个System
project。

在这里插入图片描述

Workspace:当打开Vitis软件平台时,创建workspace,用来存储工程数据。

Platform:是硬件部件(XSA)和软件部件(BSP,FSB等)的集合。

Application(Software Project):一个Software Project包含一个或多个源文件,和必要的头文件,编译和生成二进制输出文件(ELF)。System project可以包含多个application project。每一个software project必须有一个相应的domain。

XSA:包含硬件信息,例如处理器配置信息,外设连接信息和器件初始化代码。当创建Platform Project时需要提供XSA。

Domain:Domain时一个板级支持包(BSP)或者包含驱动的运行系统(OS),在这上面构建应用。创建好的软件镜像包含部分Xilinx库。可以在Domain中创建多个应用。Domain可以时一个处理器,也可以是多个。

Flow:软件开发与应用加速开发工作流程有一些差异。目前有三种设计流程:

  • 嵌入式
  • 嵌入式加速
  • 数据中心加速

Zynq Ultrascale+ MPSoC器件在Vitis开发:

在这里插入图片描述

Linux 应用可以通过Linux Domain的sysroot编译和链接库。

system projects 在MPSoC 芯片不同时间运行。在一个 system project上的应用运行在相同的时间。

2 使用Vitis创建Linux应用程序

在这里插入图片描述

2.1 硬件平台与Linux镜像

在使用Vitis创建Linux应用程序之前需要完成如下两步:

1、使用Vivado创建硬件平台;

2、使用Petalinux构建Linux镜像。

以上两部分请参考之前的文章基于ZYNQ MPSOC XCZU3CG的百度Edgeboard FZU3 构建linux系统在Ubuntu18.04上安装Vivado Vitis Petalinux 2020.1

本次设计依然是在Edgeboard FZU3上完成。

构建后Linux镜像后,进入到Petalinux工程下的images/linux文件夹,之下如下指令:

cd images/linux

petalinux-build - -sdk

petalinux-package - -sysroot

完成上述过程后,开始使用Vitis创建Linux应用程序。

2.2 Vitis创建Linux应用程序

完成上述过程后,开始使用Vitis创建Linux应用程序。在Vitis下创建Linux应用程序分三步:

1、使用XSA创建Platform
Project;

2、在Platform Project加入Linux Domain;

3、创建Linux Application Project。

使用XSA创建Platform
Project

新建文件夹fzu3_vitis,打开vitis软件将Workspace设置成fzu3_vitis。

在这里插入图片描述

新建Platform Project,点击Create Plateform
Project。

在这里插入图片描述

工程名输入fzu3,选择Create from hardware specification(XSA)

在这里插入图片描述
在这里插入图片描述

选择XSA文件路径,在Operating system中指定linux,点击finish完成Platform
Project创建。

在这里插入图片描述

在Platform Project加入Linux Domain

在加入Linux Domain之前,在fzu3_vitis文件夹中:

新建文件夹image,将Petalinux工程image/linux文件夹下的image.ub、boot.scr 和 rootfs.cpio.gz 拷贝到image。

新建文件夹boot,将system.bit、bl31.elf、uboot.elf、zynqmp_fsbl、pmufw.elf 文件复制到boot。

在boot中,新建文件linux.bif

the_ROM_image:
{
  [fsbl_config] a53_x64
  [bootloader] <zynqmp_fsbl.elf>
  [pmufw_image] <pmufw.elf>
  [destination_device=pl] <bitstream>
  [destination_cpu=a53-0,exception_level=el-3, trustzone] <bl31.elf>
  [destination_cpu=a53-0, exception_level=el-2]<u-boot.elf>
}

在vitis工程中进行如下设置:

在这里插入图片描述

如下设Sysroot Directory路径为Petalinux工程下aarch64-xilinx-linux文件夹。
在这里插入图片描述
设置完成后,Build Project编译工程。
在这里插入图片描述
创建Linux Application Project

在Vitis中点击New->Application Project,

在这里插入图片描述

点击next
在这里插入图片描述

选择刚新建的Platform fzu3
在这里插入图片描述
应用工程名设置成hello
在这里插入图片描述

Domain在Platform中已经设置好,直接next

在这里插入图片描述
选择Linux Hello World进行测试,完成Linux应用程序创建。

在这里插入图片描述

编译hello_system
在这里插入图片描述

在hello_system文件夹下Debug/sd_card文件夹中生成如下文件。

在这里插入图片描述

3 测试

将sd_card中的文件拷贝到SD卡,单板启动,运行./hello.elf,输出Hello_World。

在这里插入图片描述

欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉

<think>好的,我现在需要帮助用户了解如何在PetaLinux中集成由Vitis生成的应用程序。首先,我需要回忆一下PetaLinuxVitis的基本概念以及它们之间的关系。 根据用户提供的引用内容,Vitis是用于开发Linux应用的软件,可以方便工程管理,避免自己编写Makefile[^1]。而PetaLinux是用于构建Linux镜像的工具,用户可以通过创建工程、导入硬件描述文件(XSA)、编译系统镜像等步骤来生成启动文件[^2][^3]。用户的问题是如何将Vitis生成的应用程序集成到PetaLinux中,这可能涉及到将应用程序打包到PetaLinux构建的根文件系统中,或者在PetaLinux工程中添加应用程序的源码进行编译。 接下来,我需要结合引用中的信息,梳理出具体的步骤。例如,引用[2]提到在Vitis中创建Linux应用项目,并生成可执行文件。然后,在PetaLinux工程中可能需要将这些可执行文件添加到rootfs中,或者通过修改recipes来包含应用程序。引用[3]中提到了使用petalinux-create命令创建工程,以及编译生成系统镜像的步骤。引用[4]提到环境配置,如Python版本和Shell设置,这可能影响整个流程的顺利进行。 可能的步骤包括:首先在Vitis中生成应用程序的可执行文件或源码,然后将这些文件添加到PetaLinux工程的适当位置,修改配置文件(如recipes或bb文件),最后重新编译PetaLinux工程以生成包含应用程序的系统镜像。需要确保应用程序被正确包含在根文件系统中,例如通过预构建目录或自定义的recipe。 还需要考虑用户是否需要将应用程序作为预编译的二进制文件集成,还是作为源码在PetaLinux编译过程中构建。前者可能需要将文件放入prebuilt目录,后者则需要创建自定义的recipe,处理依赖和编译步骤。引用[2]中提到了将bitstream放入prebuilt目录,类似的方法可能适用于应用程序的可执行文件。 另外,需要注意环境配置问题,如Python版本和Shell设置,确保编译过程不会因为环境问题而失败,如引用[4]所提到的。 最后,用户可能需要了解如何启动和测试集成的应用程序,例如通过SD卡或JTAG启动系统,并验证应用程序是否正常运行。引用[3]提到了不同的启动方式,这可能也是用户需要的信息。 总结一下,解决方案的步骤可能包括:创建Vitis应用程序项目,生成可执行文件;在PetaLinux工程中创建或修改recipe以包含应用程序;配置根文件系统;编译PetaLinux镜像;部署和测试。需要确保每个步骤都正确无误,并参考用户提供的引用内容中的具体命令和流程。</think>在PetaLinux中集成Vitis生成的应用程序,需遵循以下步骤: --- ### 步骤1:生成Vitis应用程序可执行文件 1. 在Vitis中创建**Linux Application Project**,选择已创建的Platform Project(需基于XSA文件生成)[^2]。 2. 编写代码并编译,生成可执行文件(如`app.elf`)。默认输出路径为`<project>/Debug`或`<project>/Release`。 --- ### 步骤2:将应用程序添加到PetaLinux工程 #### 方法一:直接集成预编译文件 1. 将可执行文件复制到PetaLinux工程的预编译目录: ```bash cp app.elf <petalinux-project>/project-spec/meta-user/recipes-apps/app/files/ ``` 2. 创建或修改Recipe文件(`.bb`): - 在`<petalinux-project>/project-spec/meta-user/recipes-apps/app`下创建`app.bb`,内容如下: ```bitbake SUMMARY = "Custom Application" LICENSE = "CLOSED" SRC_URI = "file://app.elf" INSANE_SKIP_${PN} = "arch" do_install() { install -d ${D}${bindir} install -m 0755 ${S}/app.elf ${D}${bindir}/app } ``` #### 方法二:源码集成(推荐) 1. 将应用程序源码(C/C++文件)放入PetaLinux工程的`recipes-apps`目录: ```bash mkdir -p <petalinux-project>/project-spec/meta-user/recipes-apps/app/files cp src/* <petalinux-project>/project-spec/meta-user/recipes-apps/app/files/ ``` 2. 编写Recipe文件`app.bb`,指定编译规则和依赖: ```bitbake SUMMARY = "Custom Application" LICENSE = "MIT" SRC_URI = "file://*.c file://Makefile" S = "${WORKDIR}" do_compile() { oe_runmake } do_install() { install -d ${D}${bindir} install -m 0755 app ${D}${bindir}/ } ``` --- ### 步骤3:配置PetaLinux根文件系统 1. 启用应用程序的Recipe: ```bash petalinux-config -c rootfs ``` - 进入`User packages` → 选中自定义的应用程序。 --- ### 步骤4:编译PetaLinux镜像 1. 执行完整编译: ```bash petalinux-build ``` 2. 生成启动镜像(BOOT.BIN和image.ub): ```bash petalinux-package --boot --fsbl <fsbl.elf> --fpga <bitstream.bit> --u-boot ``` --- ### 步骤5:部署与验证 1. 将生成的`BOOT.BIN`、`image.ub`及根文件系统写入SD卡。 2. 启动开发板,通过串口登录后执行: ```bash app ``` 验证应用程序是否正常运行。 --- ### 注意事项 - **环境兼容性**:确保Vitis和PetaLinux版本匹配(如2021.1需统一工具链)。 - **文件权限**:可执行文件需具有`0755`权限。 - **依赖库**:若应用程序依赖动态库,需在PetaLinux中同步添加对应库的Recipe。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬码农二毛哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值