Vitis下Linux应用程序开发流程

本文转载自: 硬码农二毛哥微信公众号

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。

    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。

    最新文章

    最新文章