本文介绍两种安装Ubuntu的方法
- 手动编译源文件,使得Zybo启动到shell(无图形输出,能联网)
- 利用现成编译好的文件进入Ubuntu系统(有图形输出,能联网,没声音)
我会先介绍第二种方法,比较简单,适合于伸手党。最后再介绍第一种方法。
这两种方法都搬运自国外教程(文末放原文链接)。
名称:Zybo:Zynq-7000 ARM, FPGA SoC训练板
主要参数如下:
名称 | 说明 |
---|---|
SOC | 667Mhz双核 Cortex A9 |
内存 | 512MB DDR3 |
USB-OTG | 2.0 |
接口 | 16bit VGA、HDMI、1G以太网RJ45、micro SD卡槽等 |
可直接参考这篇教程,基本是拿来即用了。
Installing Xillinux on Zybo
- 以下方法搬运国外朋友的教程
- 这份教程没有打包进显示驱动,所以是没有显示输出的,只有命令行
- 由于没有进行充分测试,只可保证可玩性。若要追求一些可用性,可参考法一。如果有异常情况欢迎在评论区提出,一起讨论解决~
在一个新的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
搜索zynq_zybo.h
,使用文本编辑器打开
在文本编辑器中搜索loadbootenv
,将红框处代码进行修改,并保存
修改前:
"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,我们希望能够加载根文件系统。
$ cd /Desktop/blog/u-boot-Digilent-Dev-master
$ make zynq_zybo_config
$ make
如果你在上一步编译失败,很可能是因为在第一步的环境变量中配置不对,导致无法找到编译工具。如果你编译成功,那么你会在u-boot的最上层目录找到一个名为`u-boot``的二进制文件。
我们在计算机中的适当位置新建一个名为sd_boot
的文件夹,用于存放最后所有生成的二进制文件。
将生成的u-boot
放入该文件夹中,并为其增加.elf
后缀
在刚才的shell窗口输入vivado
$ vivado
在vivado中打开工程文件,文件路径在zybo_base_system/source/vivado/hw/zybo_bsd/zybo_bsd.xpr
如果你是用的Vivado不是base_system工程创建时的版本,首先会提示你工程升级到用户所使用的当前版本,如果你使用的Vivado刚好是工程创建版本的话,可跳过以下设置工程升级的内容。
出现第一个提示,保持默认选项,然后选择ok
紧接着会出现第二个提示,选择ok
最后出现第三个提示,选择 Report IP Status
选择 Upgrade Selected进行更新
然后会跳出一个对话框,让你确认是否继续,选择ok
点击Generate
选择左下脚的Generate Bitstream
,在弹出的对话框中选择Yes
可以直接关闭
选择file ⇒ \Rightarrow ⇒ Export ⇒ \Rightarrow ⇒ Export Hardware
勾选nclude bitstream
,然后点击ok
导出位置可以自行选择
在之前的shell中输入xsdk打开Xilinx sdk
$ xsdk
创建名为fsbl的Application Project工程
单击new,将我们上一步导出的硬件信息加载进来。
加载完成后,按以下选择
Properties | Value |
---|---|
Hardware platform | system_wrapper_hw_platform_0 |
Processor | ps7_cortex9_0 |
然后点击下一步,选择Zynq FSBL
将zybo_base_system/source/vivado/SDK/fsbl\fbsl_hooks.c
复制进刚才创建好的工程中进行替换
然后对工程进行清理并重编译。
在Xilinx Tools
菜单中选择Create Boot Image
然后依次按顺序添加如下文件:
文件位置已在图中。
注:
- 可以把我的blog目录当作根目录,前面的可忽略
- 有
system_wrapper_hw_platform_1
的原因应该是我加载过两次system_wrapper.hdf
在之前的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-
找到zynq-zybo.dts
文件,用文本编辑器打开
大约在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时报错
在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
文件
将它拷贝进sd_boot文件夹中
- 磁盘格式化和文件系统部署同步可参考ZYBO入门指导(一)——Vivado.PDF附录二中相关内容
- Ubuntu系统可以从【入门必看】史上最全 Zybo-Z7 / Zybo 官方社区学习资料汇总贴(ZYNQ7000入门福音)中获取 找到
Zybo项目案例
下载即可,系统文件在Linaro文件系统
目录下