zybo上运行linux,Zybo全栈开发入门教程——连载二:移植Linux操作系统

这篇文章将向大家介绍向Zynq SoC移植Linux操作系统,具体划分为制作Boot.bin文件、设备树文件、内核镜像以及根文件系统。开始之前需要大家对u-boot、Linux内核以及Git工具具有一定的了解,这样下面的步骤才能够顺利的进行。

资源下载:

U-boot:与ZYBO板卡硬件设计相关

Linux 内核源码

根文件系统

注:相关资料可以在Digilent的GitHub账户上找到(即https://github.com/DigilentInc)

步骤一:编译生成u-boot.elf文件

7185a133e52d02fa28c4083ff3ebfe74.png

使用git clone命令从github上下载u-boot源码,注意使用主分支(master),使用tar命令对下载的压缩文件解压,tar zxvf u-boot-digilent-2012.04-digilent-13.01.tar.gz。 如果下载的是zip文件用unzip u-boot-digilent-2012.04-digilent-13.01.zip

7b0996ed630ac7061e2537732031cc19.png

编译u-boot之前我们要先设置好交叉编译环境变量,设置环境变量方法为source settings64.sh(见第一篇文章),然后根据上图编译u-boot,使用命令make CROSS_COMPILE= arm-xilinx-linux-gnueabi-

编译完成后会在u-boot-Digilent-Dev目录下生成u-boot文件,我们要给其加上‘.elf’,并且预先拷贝到sd_image目录下。

步骤二:制作FSBL文件

660ac2f5a0ce2981586571da0736dc42.png

a88dc8d130f9751d78ae2aec2c0fc6a0.png

首先打开vivado,点击File->Export->Export Hardware for SDK,选择第一篇文章建立好的硬件工程,注意Launch SDK选项要打勾。

59959f5cffe871aa5aabae98f5d4c1e6.png

c11e985be6b6cb91e0c3f4606049a8da.png

在新打开的SDK界面下选择File->New->Project新建工程

87f61cb316cda1b9a9f369c0c495e662.png

ebeb34f8c43952c4ed525863ea2eed8d.png

根据上图完成各项配置,将工程名字设置为FSBL,选择hw_platform_0,OS platform选择standalone。然后点击Next弹出下面对话框。

62764dd478d49a83c195bf9499bbd1ef.png

SDK为我们提供了Zynq FSBL应用模板,FSBL(first stage bootloader)即为第一阶段启动引导文件。SDK会自动编译生成FSBL.elf文件,位于目录zybo_base_system/source/vivado/hw/zybo_bsd.sdk/SDK/SDK_Export/FSBL/Debug/。

步骤三:生成boot.bin文件

2902b09feea7b30ec152fdc980bd0d5d.png

首先,我们需要在fsbl hook中设置mac地址。可以将FSBL project中的fsbl_hooks.c文件和source/vivado/SDK/fsbl目录下的fsbl_hooks.c互换。然后点击build重新编译。

e03f32697e5c49996d3df0621a0c6dc4.png

94641ef4ebb4a17c942360b23f8d312b.png

在SDK界面选择Xilinx Tools->Create Zynq Boot Image弹出上面对话框来生成boot文件。依次按顺序添加FSBL.elf、system.bit和u-boot.elf文件。System.bit在zybo_base_system/source/vivado/hw/zybo_bsd/zybo_bsd.sdk/SDK/SDK_Export/hw_platform_0/目录下, u-boot.elf在zybo_base_system/sd_image/目录下。最后制定输出目录生成BOOT.BIN文件。

步骤四:编译Linux内核

68321dfb7428eddae65ef0fe8b7f86c5.png

d2cdc1d38c5df2f559aee8efb20ac544.png

编译Linux内核首先我们也要先下载源码并解压,设置交叉编译环境,导入内核配置,然后编译(具体命令如上图所示)。

步骤五:制作uimage

经过步骤四编译后生成的文件为zImage,位于arch/arm/boot/目录下,这里我们需要制作未经压缩过的内核镜像uImage。

b2ea9e566a2778b90fbc09c90deec434.png

步骤六:制作根文件系统uramdisk.image.gz

这里我们要借助u-boot目录下的mkimage工具,首先从本文开头的连接下载ramdisk8M.image.gz文件,设置好文件路径根据上图命令生成uramdisk.image.gz文件。

ef07032ae16a0998fb0cd7e7b46dae27.png

步骤七:制作设备树文件

在下载的Linux内核源码目录下已经有预先设备号的设备树源文件zynq-zybo.dts,按照上图命令即可生成devicetree.dtb文件(注意生成文件名字不可修改)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值