Xilinx Zynq 7000 安装Linux 系统

  • 介绍
  • 1 准备工作
  • 2 工具的安装
    • 2.1 支持库的安装
    • 2.2 PetaLinux的安装
  • 3 搭建硬件系统
    • 3.1 建立工程
    • 3.2 添加IP核
    • 3.3 综合
    • 3.4 生成bit文件
    • 3.5 生成.hdf
  • 4 使用PetaLinux生成Linux镜像
    • 4.1 使用source定位编译环境
    • 4.2 新建工程
    • 4.3 配置工程
    • 4.4 编译
  • 5 SD卡的准备
  • 6 制作根文件系统rootfs
    • 6.1 下载Ubuntu 16.04 LTS 根文件系统
    • 6.2 将根文件系统解压到SD中
    • 6.3 拷贝镜像文件
  • 7 系统启动测试
  • 8 遇到的小问题。
    • 8.1 定位编译环境出错
    • 8.2 内核无法启动

介绍

Xilinx Zynq 7000系列SoC集成了ARM Cortex A9,和Altera公司的Cyclone V类似,可以制作Linux系统镜像,并从SD卡启动。本文利用Xilinx官方提供的PetaLinux工具,编译Ubuntu系统镜像,并制作了根文件系统(rootfs)。

在实验过程中,遇到了不少问题,参考了许多文档,主要参考了官方文档ug1144-petalinux-tools-reference-guide和两篇文档1 , 2(其中一篇可能需要搭把梯子才好查看)。

1 准备工作

PC系统:Ubuntu 16.04
内存大小:8GB
硬盘大小:130GB
SD卡容量:16GB
开发板:Xilinx官方开发板ZC706

首先需要去Xilinx官网下载Vivado和PetaLinux工具以及相关的文档,下载地址
本文的实验所下载的是2018.2版本的Vivado和PetaLinux,其中Vivado这个软件很大,安装包大小20GB,安装完成之后占用了38GB的空间。安装Vivado需要Lisence,PetaLinux无需Lisence。

2 工具的安装

Vivado安装较为简单,PetaLinux安装稍微繁琐一点。PetaLinux所需对电脑的软硬件要求如下所示。

2.1 支持库的安装

在安装PetaLinux之前,需要先安装一系列支持库。查看Xilinx提供的PetaLinux的文档说明(ug1144-petalinux-tools-reference-guide),所需的支持库如下所示。



2.2 PetaLinux的安装

使用普通用户进行安装,例如我的安装包文件是petalinux-v2018.2-final-installer.run,安装在/home/str/petalinux目录下,执行如下命令进行安装

./petalinux-v2018.2-final-installer.run /home/str/petalinux

3 搭建硬件系统

在这一步中,将搭建最基本的硬件系统。

3.1 建立工程

打开Vivado,点击file --> project --> new
选择RTL project,除了根据实际情况选择器件,其余的选择默认即可。


由于本文的实验所使用的是官方开发板,所以直接选择在Boards中选择ZC706使用其默认配置。

3.2 添加IP核

在左边Flow Navigator的IP INTEGRATOR点击Create Block Design。
在Diagram 中点击“+”,输入zynq,双击“ZYNQ7 Processing System”

然后配置IP核,双击该IP核,然后添加各种外围设备。由于我使用的是ZC706官方开发板,所以直接点击Presets --> ZC706, 即可完成配置。如果是其他情况,需要按照实际需求进行配置,也可以参考ZC706的配置。

将FCLK_CLK0连接到M_AXI_GPO_ACLK上,然后点击Run Block Automation,完成配置。

在Sources中找到.bd文件,点击右键,选择Create HDL Wrapper,然后选择Let Vivado manage wrapper and auto-update。

3.3 综合

点击Run Synthesis进行综合,

3.4 生成bit文件

点击Generate Bitstream产生bit文件。

3.5 生成.hdf

点击File --> Export --> Export Hardware,并选择Include bitstream。生成的.hdf文件在工程目录下的后缀为.sdk的文件夹中。

以上的步骤可以在Windows或者Linux下的Vivado中完成,待生成.hdf文件后,需要拷贝到安装PetaLinux的系统上。

4 使用PetaLinux生成Linux镜像

4.1 使用source定位编译环境

source /home/str/petalinux/settings.sh

4.2 新建工程

使用petallinux创建一个新工程,随意命名,例如本文实验命名为test_zk,命令如下。

petalinux-create --type project --template zynq --name test_zk
cd test_zk

4.3 配置工程

输入以下命令,选择.hdf文件的路径(.hdf文件在步骤3.5中生成),例如本文实验的.hdf文件的路径为/home/str/vivado_18.2/Vivado/2018.2/project/project_2/project_2.sdk/。并对工程进行配置。

petalinux-config --get-hw-description=/home/str/vivado_18.2/Vivado/2018.2/project/project_2/project_2.sdk/
petalinux-config

等待进入gui,如下图所以

进行下述操作,进行系统级的配置。

  • Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> boot image settings -> image storage media -> primary sd
  • Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> u-boot env partition settings -> image storage media -> primary sd
  • Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> kernel image settings -> image storage media -> primary sd
  • Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> dtb image settings -> image storage media -> primary sd
  • u-boot Configuration -> u-boot config target -> zynq_zc706_config
  • Image Packaging Configurations -> Root filesystem type -> SD card

配置完成之后,保存退出。
然后输入如下命令进行内核配置和根文件系统配置,根据需求配置内核功能(大多数使用默认配置就行)。

petalinux-config -c kernel
petalinux-config -c rootfs

4.4 编译

编译此工程并产生boot文件,命令如下

petalinux-build

编译完成后, 再生成BOOT.BIN文件,命令如下。

petalinux-package --boot --force --format BIN --fsbl ./images/linux/zynq_fsbl.elf --fpga ./images/linux/download.bit --u-boot

5 SD卡的准备

前面的步骤如果能正常执行,系统镜像就已经做好了,接下来就需要在SD卡中制作根文件系统rootfs,并把镜像放到SD中去。

首先对于要对SD卡进行分区操作,SD卡的容量建议不小于8GB。本文使用gparted工具进行分区(其他分区工具也可以,例如DiskGenius也挺好)。

如果gparted没有安装,执行以下命令安装

sudo apt-get install gparted

使用超级权限启动gparted

sudo gparted

加载所需要的SD卡,删除之前的分区,以确保空间都未分配。分别创建两个分区,设置如下,其余操作默认即可,最后保存操作。

  • 第1个分区,之前空余空间 (MiB): 4, 新大小(MiB) : 512,文件系统 : FAT32, 卷标 : BOOT
  • 第2个分区,之前空余空间 (MiB): 0, 之后空余空间(MiB): 0, 文件系统: ext4, 卷标 : rootfs

6 制作根文件系统rootfs

6.1 下载Ubuntu 16.04 LTS 根文件系统

下载地址是:https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-16.04.2-minimal-armhf-2017-06-18.tar.xz
在linux下使用如下命令进行下载。

wget -c https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-16.04.2-minimal-armhf-2017-06-18.tar.xz

下载完成之后,进行验证

sha256sum ubuntu-16.04.2-minimal-armhf-2017-06-18.tar.xz

效果如下图所示

步骤5完成后,重新插卡,SD被挂载在了目录/media/str/之下。接下来的步骤就是分别把根文件系统解压到/media/str/rootfs之下并把镜像文件拷贝到/media/str/BOOT目录下。

6.2 将根文件系统解压到SD中

解压根文件系统包。

tar xf ubuntu-16.04.2-minimal-armhf-2017-06-18.tar.xz

将ubuntu的根文件系统解压拷贝到sd卡中的rootfs分区,命令如下。

sudo tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/str/rootfs

进行同步。

sync

再进行以下操作,修改权限。

sudo chown root:root /media/str/rootfs/
sudo chmod 755 /media/str/rootfs/

6.3 拷贝镜像文件

将./image/linux下的镜像文件拷贝到分区BOOT中,命令如下(其实并不需要把所有的文件都拷贝过去,只拷贝BOOT.BIN、image.ub、system.dtb和zImage这几个文件就行)。

sudo cp ./images/linux/*  /media/str/BOOT

到这里,sd卡已经制作完毕,可以插到开发板中进行测试。

7 系统启动测试

为了使系统能从SD卡启动,需要把开发板上的配置开关配置成下图所示的样子。

然后插上串口,使用终端软件查看启动信息(本文实验波特率为115200)。

8 遇到的小问题。

8.1 定位编译环境出错

在步骤4.1中执行source /home/str/petalinux/settings.sh时出现警告。

这是因为ubuntu默认使用了dash,而PetaLinux希望使用bash。可以使用如下命令查看/bin/sh是否链接到bash。

ls -l /bin/sh

如果/bin/sh 这个文件确实没有链接到bash,运行如下命令将其链接到bash即可。

cd /bin/
sudo rm sh
sudo ln -s bash sh

8.2 内核无法启动

第一次制作好镜像之后,启动到一半的时候卡住了,内核没能正常启动,并提示Unknown command ’booti‘ -try ’help‘。
如果按照提示运行一下help,会发现根本没有booti这个命令,也就是说系统不能用booti启动。查了一些资料,发现这可能是PetaLinux的一个bug。是因为系统默认的启动命令设置成了booti,可以在{PL_ROOT}/project-spec/meta-user/recipes-bsp/u-boot/目录下打开platform-top.h。并在后面加上如下代码,使用自定义的启动指令启动系统即可。可以参考这个网址获得更多信息。

#ifdef CONFIG_BOOTCOMMAND
#undef CONFIG_BOOTCOMMAND
#define CONFIG_BOOTCOMMAND  "run uenvboot; run cp_kernel2ram && run cp_dtb2ram && bootm ${netstart} - ${dtbnetstart}"
#endif

  1. https://medium.com/developments-and-implementations-on-zynq-7000-ap/install-ubuntu-16-04-lts-on-zynq-zc702-using-petalinux-2016-4-e1da902eaff7 ↩︎

  2. https://blog.csdn.net/long_fly/article/details/78643258?locationNum=8&fps=1 ↩︎

Xilinx Zynq 7000 安装Linux 系统相关推荐

  1. vm虚拟机下linux安装python_VM中安装linux系统,安装VS Code,搭建Python环境

    VM中安装linux系统 在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载安装包 2.在下载目录打开终端安装 sudo dpkg -i code_1.32.3 ...

  2. SystemImager自动化安装Linux系统(下)

    SystemImager"(下) 在<自动安装Linux系统之"SystemImager">中,我们已经完成镜像服务器和黄金客户端的安装并成功的制作了一份黄金 ...

  3. VMware Workstation下安装Linux系统

    虚拟化允许具有不同操作系统的多个虚拟机在同一物理机上独立并行运行.每个虚拟机都有自己的一套虚拟硬件(例如 RAM.CPU.网卡等),可以在这些硬件中加载操作系统和应用程序.无论实际采用了什么物理硬件组 ...

  4. 使用虚拟机安装Linux系统常见的错误以及解决方案

    使用虚拟机安装Linux系统常见的错误以及解决方案 参考文章: (1)使用虚拟机安装Linux系统常见的错误以及解决方案 (2)https://www.cnblogs.com/yanjiexiansh ...

  5. 虚拟机安装linux系统无法上网的解决方法

    虚拟机安装linux系统无法上网的解决方法 参考文章: (1)虚拟机安装linux系统无法上网的解决方法 (2)https://www.cnblogs.com/liuqiyun/p/9585643.h ...

  6. 安装linux 系统报错:No DEFAULT or UI configuration directive found 解决方法

    安装linux 系统报错:No DEFAULT or UI configuration directive found 解决方法 参考文章: (1)安装linux 系统报错:No DEFAULT or ...

  7. linux磁盘分配方案,安装Linux系统磁盘分配方案.doc

    安装Linux系统磁盘分配方案.doc 安装 Linux系统磁盘分配方案 2009-03-13 0825 Linux系统分区功能简介 / 根目录 /bin 存放必要的命令 /boot 存放内核以及启动 ...

  8. 请人安装linux系统,我想安装linux操作系统,请指导一下

    安装ubuntu7.04,适合初学linux系统的朋友使用,一款具有人性化的系统.而且在网上关于ubuntu安装以及安装的后的设置都很容易找到. 不知道楼主下载的是哪个版本的linux系统.你可以搜索 ...

  9. 一键装机linux_linux系统安装,怎样安装linux系统制作步骤

    如何安装linux系统图-6 安装步骤图-7 4,等待镜像制作完毕后,我们就能在系统里看到制作好的U盘,此时U盘的名称都变成了CentOS 7,如下图所示,我们把U盘拔下来,插到要安装Linux的电脑 ...

最新文章

  1. 对称非对称算法混合加密实战(DES和AES混合加密)
  2. draw.io二次开发(2)文件解读
  3. 组信箱共享及挂载介绍
  4. 单片机IO引脚驱动能力的提高
  5. 无人车火了 百度是如何做到的?
  6. Web开发中需要注意的地方
  7. 基于51单片机的数字频率计
  8. 计算机和移动终端在信息系统中的工作原理,粤教版(2019)信息技术 必修2 2.3 信息系统中的计算机和移动终端 课件(共30张PPT)...
  9. Object.defineProperty是Es5中无法shim的特性 shim是什么?
  10. inflate使用方法总结
  11. android 滑动标签框架,Android实现网易严选标签栏滑动效果
  12. kubernets eviction策略
  13. Adobe2022更新,打开photoshop总是提示需要访问钥匙串秘钥怎么解决?
  14. 1. Java POI 读取、写入Excel(包括样式)的工具类Utils
  15. ES module与commonjs的区别
  16. linux中uboot作用,uboot的作用和启动方式
  17. 《权力的游戏》剧情解析全靠它!
  18. 逆变器运用到的c语言算法,详解六种逆变电源的控制算法
  19. oracle 连续累加,Oracle 累加和实现
  20. VS+openCV之深入了解 cv::Mat

热门文章

  1. [SAP - HCM] 白话版SAP HR
  2. CSP认证 201609-2 火车购票
  3. 华为天才少年自制机械臂!能给葡萄缝针的那种,成本1万块,网友:能把脑子开源一下?...
  4. 高空布控系统_在消防实战中的应用
  5. Flutter 基础(三)布局
  6. CarSim仿真快速入门(二十六)-Euro NCAP VRU AEB 测试
  7. 5. 设计模式之对象思维:面向对象编程有哪些优势?
  8. CVE-2020-16838 Windows tcp/ip 远程代码执行漏洞复现
  9. 最新短信营销群发工具系统源码+盈利旗舰版
  10. 怪物猎人ol服务器维护,怪物猎人OL服务器互通计划是什么 什么时候可以跨服组队玩...