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编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销: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.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目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)=