在Xilinx Zybo上安装Ubuntu系统

文章目录

  • 前言
  • 本文所使用的开发板
  • 法一:利用预编译好的文件与系统点亮Zybo
  • 法二:手动编译启动文件
    • 准备
      • 软件环境
      • 步骤
        • Step1: 配置环境变量
        • Step2:为zybo配置U-Boot
        • Step3:编译U-Boot
        • Step4:为U-Boot增加Elf后缀
        • Step5:在Vivado 2016.1中更新IP
        • Step6:为SDK导出硬件信息 bitstream
        • Step7:SDK工程
        • Step8:生成Boot.bin
        • Step9:编译Linux内核
        • Step10:修改设备树
        • Setp 11 生成设备树
        • 部署
  • 参考资料

前言

本文介绍两种安装Ubuntu的方法

  • 手动编译源文件,使得Zybo启动到shell(无图形输出,能联网)
  • 利用现成编译好的文件进入Ubuntu系统(有图形输出,能联网,没声音)

我会先介绍第二种方法,比较简单,适合于伸手党。最后再介绍第一种方法。
这两种方法都搬运自国外教程(文末放原文链接)。

本文所使用的开发板

名称:Zybo:Zynq-7000 ARM, FPGA SoC训练板
在Xilinx Zybo上安装Ubuntu系统_第1张图片
主要参数如下:

名称 说明
SOC 667Mhz双核 Cortex A9
内存 512MB DDR3
USB-OTG 2.0
接口 16bit VGA、HDMI、1G以太网RJ45、micro SD卡槽等

法一:利用预编译好的文件与系统点亮Zybo

可直接参考这篇教程,基本是拿来即用了。
Installing Xillinux on Zybo

法二:手动编译启动文件

  • 以下方法搬运国外朋友的教程
  • 这份教程没有打包进显示驱动,所以是没有显示输出的,只有命令行
  • 由于没有进行充分测试,只可保证可玩性。若要追求一些可用性,可参考法一。如果有异常情况欢迎在评论区提出,一起讨论解决~

准备

软件环境

  • 系统:Ubuntu 14.04
  • 编程环境:
    • Vivado Design Suite 2016.1
    • u-boot-Digilent-Dev master 提取码:yker
    • zybo base system 提取码:wqxv
    • linux-Digilent-Dev-master提取码:c29k

步骤

Step1: 配置环境变量

在一个新的shell控制台运行以下语句,后面所有的命令行操作都在这个已经设置环境变量的shell中进行

$ export ARCH=arm
$ export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
# settings64.sh文件所在位置,如果没有改变Vivado开发套件的安装位置的话,默认在此位置
$ source /opt/Xilinx/Vivado/2016.1/settings64.sh
# u-boot-Digilent-Dev-master所在路径
$ export PATH=/home/martinhuang/Desktop/blog/u-boot-Digilent-Dev-master/tools/:$PATH

Step2:为zybo配置U-Boot

搜索zynq_zybo.h,使用文本编辑器打开
在Xilinx Zybo上安装Ubuntu系统_第2张图片
在文本编辑器中搜索loadbootenv,将红框处代码进行修改,并保存
修改前:
在Xilinx Zybo上安装Ubuntu系统_第3张图片

			"run uenvboot; " \
			"echo Copying Linux from SD to RAM... && " \
			"fatload mmc 0 0x3000000 ${kernel_image} && " \
			"fatload mmc 0 0x2A00000 ${devicetree_image} && " \
			"fatload mmc 0 0x2000000 ${ramdisk_image} && " \
			"bootm 0x3000000 0x2000000 0x2A00000; " \

修改后:

			"run uenvboot; " \
			"echo Copying Linux from SD to RAM... && " \
			"fatload mmc 0 0x3000000 ${kernel_image} && " \
			"fatload mmc 0 0x2000000 ${ramdisk_image} && " \
			"bootm 0x3000000 - 0x2A00000; " \

这么做的主要目的是防止板子在启动的时候加载ramdisk,我们希望能够加载根文件系统。

Step3:编译U-Boot

$ cd /Desktop/blog/u-boot-Digilent-Dev-master
$ make zynq_zybo_config
$ make

Step4:为U-Boot增加Elf后缀

如果你在上一步编译失败,很可能是因为在第一步的环境变量中配置不对,导致无法找到编译工具。如果你编译成功,那么你会在u-boot的最上层目录找到一个名为`u-boot``的二进制文件。
在Xilinx Zybo上安装Ubuntu系统_第4张图片

我们在计算机中的适当位置新建一个名为sd_boot的文件夹,用于存放最后所有生成的二进制文件。
将生成的u-boot放入该文件夹中,并为其增加.elf 后缀
在Xilinx Zybo上安装Ubuntu系统_第5张图片

Step5:在Vivado 2016.1中更新IP

在刚才的shell窗口输入vivado

$ vivado

在vivado中打开工程文件,文件路径在zybo_base_system/source/vivado/hw/zybo_bsd/zybo_bsd.xpr
在Xilinx Zybo上安装Ubuntu系统_第6张图片
如果你是用的Vivado不是base_system工程创建时的版本,首先会提示你工程升级到用户所使用的当前版本,如果你使用的Vivado刚好是工程创建版本的话,可跳过以下设置工程升级的内容


出现第一个提示,保持默认选项,然后选择ok
在Xilinx Zybo上安装Ubuntu系统_第7张图片
紧接着会出现第二个提示,选择ok
在Xilinx Zybo上安装Ubuntu系统_第8张图片
最后出现第三个提示,选择 Report IP Status
在Xilinx Zybo上安装Ubuntu系统_第9张图片

选择 Upgrade Selected进行更新
然后会跳出一个对话框,让你确认是否继续,选择ok
在Xilinx Zybo上安装Ubuntu系统_第10张图片
点击Generate
在Xilinx Zybo上安装Ubuntu系统_第11张图片


Step6:为SDK导出硬件信息 bitstream

选择左下脚的Generate Bitstream,在弹出的对话框中选择Yes
在Xilinx Zybo上安装Ubuntu系统_第12张图片
可以直接关闭
在Xilinx Zybo上安装Ubuntu系统_第13张图片
选择file ⇒ \Rightarrow Export ⇒ \Rightarrow Export Hardware
在Xilinx Zybo上安装Ubuntu系统_第14张图片
勾选nclude bitstream,然后点击ok
导出位置可以自行选择
在Xilinx Zybo上安装Ubuntu系统_第15张图片

Step7:SDK工程

在之前的shell中输入xsdk打开Xilinx sdk

$ xsdk

创建名为fsbl的Application Project工程

在Xilinx Zybo上安装Ubuntu系统_第16张图片
单击new,将我们上一步导出的硬件信息加载进来。
在Xilinx Zybo上安装Ubuntu系统_第17张图片
加载完成后,按以下选择

Properties Value
Hardware platform system_wrapper_hw_platform_0
Processor ps7_cortex9_0

然后点击下一步,选择Zynq FSBL
在Xilinx Zybo上安装Ubuntu系统_第18张图片
zybo_base_system/source/vivado/SDK/fsbl\fbsl_hooks.c复制进刚才创建好的工程中进行替换
在Xilinx Zybo上安装Ubuntu系统_第19张图片
在Xilinx Zybo上安装Ubuntu系统_第20张图片
然后对工程进行清理并重编译。

Step8:生成Boot.bin

Xilinx Tools菜单中选择Create Boot Image
在Xilinx Zybo上安装Ubuntu系统_第21张图片
然后依次按顺序添加如下文件:
文件位置已在图中。

注:

  • 可以把我的blog目录当作根目录,前面的可忽略
  • system_wrapper_hw_platform_1的原因应该是我加载过两次system_wrapper.hdf

在Xilinx Zybo上安装Ubuntu系统_第22张图片
然后点击生成镜像即可。

Step9:编译Linux内核

在之前的shell中进入linux-Digilent-Dev-master目录
运行

$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- xilinx_zynq_defconfig
$ ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- 

Step10:修改设备树

找到zynq-zybo.dts文件,用文本编辑器打开
在Xilinx Zybo上安装Ubuntu系统_第23张图片
大约在45行
修改前

cpus {
		#address-cells = <1>;
		#size-cells = <0>;
		ps7_cortexa9_0: cpu@0 {
			bus-handle = <&ps7_axi_interconnect_0>;
			clock-latency = <1000>;
			clocks = <&clkc 3>;
			compatible = "arm,cortex-a9";
			device_type = "cpu";
			interrupt-handle = <&ps7_scugic_0>;
			operating-points = <666667 1000000 333334 1000000 222223 1000000>;
			reg = <0x0>;
		} ;
		ps7_cortexa9_1: cpu@1 {
			bus-handle = <&ps7_axi_interconnect_0>;
			clocks = <&clkc 3>;
			compatible = "arm,cortex-a9";
			device_type = "cpu";
			interrupt-handle = <&ps7_scugic_0>;
			reg = <0x1>;
		} ;
	} ;

修改后

cpus {
		#address-cells = <1>;
		#size-cells = <0>;
		ps7_cortexa9_0: cpu@0 {
			bus-handle = <&ps7_axi_interconnect_0>;
			clock-latency = <1000>;
			clocks = <&clkc 2>;
			compatible = "arm,cortex-a9";
			device_type = "cpu";
			interrupt-handle = <&ps7_scugic_0>;
			operating-points = <666667 1000000 333334 1000000 222223 1000000>;
			reg = <0x0>;
		} ;
		ps7_cortexa9_1: cpu@1 {
			bus-handle = <&ps7_axi_interconnect_0>;
			clocks = <&clkc 2>;
			compatible = "arm,cortex-a9";
			device_type = "cpu";
			interrupt-handle = <&ps7_scugic_0>;
			reg = <0x1>;
		} ;
	} ;

主要修改CPU时钟,目的是防止进入root shell时报错

Setp 11 生成设备树

linux-Digilent-Dev-master目录下运行

martinhuang@ubuntu:~/Desktop/blog/linux-Digilent-Dev-master$ ./scripts/dtc/dtc -I dts -O dtb -o ./devicetree.dtb arch/arm/boot/dts/zynq-zybo.dts

然后通过搜索即可找到devicetree.dtb文件
在Xilinx Zybo上安装Ubuntu系统_第24张图片
将它拷贝进sd_boot文件夹中

部署

  • 磁盘格式化和文件系统部署同步可参考ZYBO入门指导(一)——Vivado.PDF附录二中相关内容
  • Ubuntu系统可以从【入门必看】史上最全 Zybo-Z7 / Zybo 官方社区学习资料汇总贴(ZYNQ7000入门福音)中获取 找到Zybo项目案例下载即可,系统文件在Linaro文件系统目录下

参考资料

  • Error compiling linux kernel - unrecognized --silentoldconfig option
  • Booting Linux on the ZYBO

你可能感兴趣的:(环境配置篇)