本文转载自: 硬码农二毛哥微信公众号
Vitis统一软件平台将Xilinx各种软件统一,即支持Vitis嵌入式软件开发流程,又支持Vitis应用软件加速开发流程。本文介绍Vitis嵌入式软件中的linux应用程序开发流程。
1. Vitis软件开发工作流程
嵌入式应用开发流程:
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。
1、使用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创建。
2、在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编译工程。
3、创建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。