跳转到主要内容

zcu102(9)hello_petalinux

demi 提交于

<font color="#FD8900">作者:bt(CSDN)</font>

<font color="red"><strong>一、安装PetaLinux</strong></font>

由于本人习惯在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)

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

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

<center><img src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center>
<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center>
<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center>
<center><img src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

6. 在Windows系统,进入<a href="https://www.xilinx.com/support/download/index.html/content/xilinx/en/do…;,选择2018.2版本与Vivado版本相匹配

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

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

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

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

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

<font color="red"><strong>二、硬件设计</strong></font>

在<a href="https://www.xilinx.com/support/download/index.html/content/xilinx/en/do…,在官方支持的开发板上可以方便地生成镜像文件

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

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

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

<font color="red"><strong>三、生成镜像</strong></font>

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

1. 配置PetaLinux环境:source &lt;petalinux安装路径&gt;/settings.sh

2. 进入工作路径,创建工程:petalinux-create -t project --template zynqMP -n &lt;工程名称&gt;

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

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

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

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

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

5. 由于在硬件设计中使用了axi_dma,编译PetaLinux工程时会由于bug导致失败,按照<a href="https://www.xilinx.com/support/answers/71136.html">Xilinux官网AR# 71136</a>的说明处理

&nbsp; - &nbsp;在上述页面下载补丁文件<a href="https://www.xilinx.com/Attachment/0001-Workaround-to-fix-the-dma-clock-…;,并考入&lt;工程文件夹&gt;/project-spec/meta-user/recipes-bsp/device-tree/files文件夹下

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

<pre>FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

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

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

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

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

④ 将&lt;工程文件夹&gt;/images/linux文件夹下的BOOT.BIN文件和image.ub文件考贝至SD卡

<font color="red"><strong>四、运行PetaLinux</strong></font>

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

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

在<a href="https://putty.org/">putty官网</a>下载putty

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center>
<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

点击Open打通迅界面

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

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>
<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

<font color="red"><strong>五、Linux程序</strong></font>

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

建立新工程

<center><img src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

选择Hello World模板

<center><img src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

<pre>#include &lt;stdio.h&gt;

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

return 0;
}</pre>

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

<img src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""><br>

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

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

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

其中mmcblk0p1设备即为当前SD卡

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

可以看到SD卡内的文件

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

功能正确,打印出Hello Petalinux

<center><img width="600" src="http://xilinx.eetrend.com/files/2019-10/%E5%8D%9A%E5%AE%A2/100045453-81…; alt=""></center><br>

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

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