zcu102(9)hello_petalinux

作者:bt(CSDN)

一、安装PetaLinux

由于本人习惯在Windows环境下做FPGA开发,因此将PetaLinux安装在Linux虚拟机中

开发环境如下:
Windows 10
Vivado 2018.2.1
VMware Workstation 14 Pro
Ubuntu 16.04.5 desktop amd64
Petalinux 2018.2

安装过程主要参考ug1144,注意Ubuntu系统全程接入互联网

1. 在Windows 10系统内安装VMware Workstation虚拟机软件

2. 在VMware中按照ug1144的要求建立虚拟机并安装Ubuntu系统(虚拟机硬盘空间至少分配128GB)


3. 根据VMware提示,安装VMware Tools

4. 进入Ubuntu系统,打开系统设置,进入软件和更新,切换至国内的安装源(阿里、华为或者清华)





5. 进入Ubuntu系统中,打开终端(快捷键:Ctrl+Alt+T),运行以下指令更新系统组件
sudo apt-get update
sudo apt-get upgrade

6. 在Windows系统,进入Xilinx官网下载PetaLinux,选择2018.2版本与Vivado版本相匹配


7. 将下载完成后的安装包petalinux-v2018.2-final-installer.run导入Ubuntu系统中

8. 根据ug1144的Installation Requirements,在Ubuntu系统终端安装必须的系统组件(以tofrodos为例)
  --   安装:sudo apt-get install tofrodos
  --   查找:apt-cache search tofrodos*
  --   注意zlib1g安装需要使用:sudo apt-get install zlib1g:i386 zlib1g-dev

9. 在终端进入安装包所在路径,修改安装包权限
  --   sudo chmod 777 petalinux-v2018.2-final-installer.run

10. 在主文件夹建立petalinux安装目标文件夹(在ug1144中示例使用的是/opt路径,由于Ubuntu权限控制,安装及使用都不方便),/home/bt/petalinux

11. 在终端进入安装包所在路径,安装PetaLinux
  --   ./petalinux-v2018.2-final-installer.run /home/bt/petalinux
  --   根据文字提示完成安装

二、硬件设计

下载PetaLinux的页面同样可以下载PetaLinux的板级支持包,在官方支持的开发板上可以方便地生成镜像文件

但是实际开发过程中,无论是否使用指定的开发板,建议还是使用自定义硬件生成镜像文件

为了方便达成ug1144要求的硬件配置(Creating Hardware Platform with Vivado),在Block Design使用Run Block Automation


仿照zcu102_8文档中的DMA设计,建立PL通过axi_dma向PS发送数据的硬件工程


参考之前的设计流程,生成Bitstream文件,并且Export Hardware

三、生成镜像

进入Ubuntu虚拟系统,打开终端

1. 配置PetaLinux环境:source <petalinux安装路径>/settings.sh

2. 进入工作路径,创建工程:petalinux-create -t project --template zynqMP -n <工程名称>

  -  查看命令帮助:petalinux-create --help
  -  在当前工作路径下会建立以工程名称命名的工程文件夹

3. 将硬件工程文件夹内.sdk文件夹下的hdf文件导入Ubuntu内的工程文件夹下

4. 进入PetaLinux建立的工程文件夹,打开PetaLinux配置:petalinux-config --get-hw-description=./

–get-hw-description用于指示hdf硬件设计文件所在的文件夹,./表示当前文件夹
在配置界面选择Save后,Exit退出


5. 由于在硬件设计中使用了axi_dma,编译PetaLinux工程时会由于bug导致失败,按照Xilinux官网AR# 71136的说明处理

  -  在上述页面下载补丁文件0001-Workaround-to-fix-the-dma-clock-issue.patch,并考入<工程文件夹>/project-spec/meta-user/recipes-bsp/device-tree/files文件夹下

  -  用文本编辑器打开<工程文件夹>/project-spec/meta-user/recipes-bsp/device-tree/device-tree.bbappend文件,并且用以下内容替换后保存

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

SRC_URI +="\
    file://system-user.dtsi \
    file://0001-Workaround-to-fix-the-dma-clock-issue.patch \
"

① 终端内进入当前工程文件夹,编译PetaLinux:petalinux-build

② 完成编译后,进入<工程文件夹>/images/linux文件夹,打包镜像文件,完成后在该文件夹下生成BOOT.BIN文件
petalinux-package --boot --fsbl <工程文件夹>/images/linux/zynqmp_fsbl.elf --fpga <工程文件夹>/images/linux/system.bit --u-boot <工程文件夹>/images/linux/u-boot.elf

③ 将SD卡插入PC主机,格式化为FAT32格式

④ 将<工程文件夹>/images/linux文件夹下的BOOT.BIN文件和image.ub文件考贝至SD卡

四、运行PetaLinux

将SD卡插入zcu102板卡,并且将板卡加载方式改为SD卡加载


putty官网下载putty



启动putty,并且如下图配置,为方便多次使用选择Save保存


点击Open打通迅界面

zcu102板卡上电,在putty界面显示启动信息


输入用户名root,密码root,进入Linux系统


由于在硬件设计中使能了PS模块的DP输出,可以连接zcu102板的DP输出接口至显示器,可以看到与putty界面相同的内容




但是由于没有输入接口,putty实现的串口交互在显示器上并不显示

五、Linux程序

在Vivado硬件工程中,由File菜单Lauch SDK

建立新工程


选择Hello World模板


在src文件夹下打开helloworld.c文件,并且改为以下代码:

#include <stdio.h>

int main()
{
    printf("Hello Petalinux\n");

    return 0;
}

编译完成后在Debug目录下生成了可执行文件hello_petalinux.elf


将elf文件考入前文所述的SD卡中

将SD卡插入zcu102板卡,重新上电启动PetaLinux系统

登入root账号后,进入/dev查看SD卡设备
  •  cd /dev
  •  ls

其中mmcblk0p1设备即为当前SD卡


将SD卡挂载至/mnt目录,进入/mnt目录并打开
  •  mount /dev/mmcblk0p1 /mnt
  •  cd /mnt
  •  ls

可以看到SD卡内的文件


在命令行输入以下命令,则执行elf文件
  •  ./hello_petalinux.elf

功能正确,打印出Hello Petalinux


本文配套原码工程及编译生成的镜像文件已上传至https://download.csdn.net/download/botao_li/10938035

版权声明:本文为CSDN博主「bt_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/botao_li/article/details/86645442

推荐阅读