0、说明

        之前通过使用petalinux构建ZYNQ Linux系统,依赖于对petalinux的理解,本节通过最原始的方法编译ZYNQ系统。即获取源码,然后对源码独立编译,打包后烧录。

1、环境

1.1 硬件环境

  • Xilinx ZCU104开发板

1.2 软件环境

  • VM ubuntu 18.04
  • windows 10

1.3 资源下载准备

      https://china.xilinx.com/support/download.html

  • 内核源码

        通过petalinux完成配置内核后,在工程的build/downloads目录下有git2_github.com.Xilinx.linux-xlnx.git.tar.gz,且完成编译后,在./build/tmp/work-shared/zynqmp-generic/kernel-source目录下有解压后的内核源码,这里使用后者作为源码。通用编译后可以找到uboot 源码。

  • 工具链

        下载poky-glibc-x86_64-meta-toolchain-aarch64-toolchain-2.3.3.sh,并设置环境变量。也可以使用官方的工具链aarch64-linux-gnu-。

        https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842547/Install+Xilinx+Tools

2、编译uboot

源码位置:

zynqMP:build/tmp/work/zynqmp_generic-xilinx-linux/u-boot-xlnx/v2021.01-xilinx-v2021.1+gitAUTOINC+41fc08b3fe-r0/git

ZYNQ:build/tmp/work/zynq_generic-xilinx-linux-gnueabi/u-boot-xlnx/v2021.01-xilinx-v2021.1+gitAUTOINC+41fc08b3fe-r0/git

也可以从官网下载git2_github.com.Xilinx.u-boot-xlnx.git.tar.gz。

版本信息:

ZYNQMP:
yangf@ubuntu:~/src/xilinx/uboot$ git branch
  master
* xlnx_rebase_v2021.01
yangf@ubuntu:~/src/xilinx/uboot$ git log
commit 41fc08b3fe2d78b00fa2ad4438a39e9164fde3bb (HEAD -> xlnx_rebase_v2021.01, origin/xlnx_rebase_v2021.01)
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Tue Jan 26 15:59:59 2021 +0100

    arm64: versal: zynqmp: Add support for VPXA2785

ZYNQ:
yangf@ubuntu:~/src/yangf/xxzh_zynq_uboot$ git branch 
  master
* xlnx_rebase_v2021.01
yangf@ubuntu:~/src/yangf/xxzh_zynq_uboot$ git log
commit 41fc08b3fe2d78b00fa2ad4438a39e9164fde3bb (HEAD -> xlnx_rebase_v2021.01, tag: xlnx_rebase_v2021.01_2021.1)
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Tue Jan 26 15:59:59 2021 +0100

    arm64: versal: zynqmp: Add support for VPXA2785

2.1 配置config

zynqMP:/home/yangf/src/xilinx/zcu104/xilinx-zcu104-2021.1/build/tmp/work/zynqmp_generic-xilinx-linux/u-boot-xlnx/v2021.01-xilinx-v2021.1+gitAUTOINC+41fc08b3fe-r0/build下存在.config,拷贝到工程目录configs/zynqmp_zcu104_defconfig

ZYNQ:~/src/xilinx/zcu104/xilinx-zcu104-2021.1/build/tmp/work/zynqmp_generic-xilinx-linux/u-boot-xlnx/v2021.01-xilinx-v2021.1+gitAUTOINC+41fc08b3fe-r0/build

make ARCH=arm64 CROSS_COMPILE=aarch64-poky-linux-  zynqmp_zcu104_defconfig

2.2 编译

make CROSS_COMPILE=aarch64-poky-linux-

2.3 输出文件

uboot :./u-boot.elf

2.4 打包BOOT.BIN

目前通过petalinux工具打包出BOOT.BIN,后面找到通用方法再补充。

petalinux-package --boot --u-boot=/home/yangf/src/xilinx/uboot/u-boot.elf --format BIN

打包日志如下:

yangf@ubuntu:~/src/xilinx/zcu104/xilinx-zcu104-2021.1$ petalinux-package --boot --u-boot=/home/yangf/src/xilinx/uboot/u-boot.elf --format BIN --force
[INFO] Sourcing buildtools
INFO: Getting system flash information...
INFO: File in BOOT BIN: "/home/yangf/src/xilinx/zcu104/xilinx-zcu104-2021.1/images/linux/zynqmp_fsbl.elf"
INFO: File in BOOT BIN: "/home/yangf/src/xilinx/zcu104/xilinx-zcu104-2021.1/images/linux/pmufw.elf"
INFO: File in BOOT BIN: "/home/yangf/src/xilinx/zcu104/xilinx-zcu104-2021.1/project-spec/hw-description/project_1.bit"
INFO: File in BOOT BIN: "/home/yangf/src/xilinx/zcu104/xilinx-zcu104-2021.1/images/linux/bl31.elf"
INFO: File in BOOT BIN: "/home/yangf/src/xilinx/zcu104/xilinx-zcu104-2021.1/images/linux/system.dtb"
INFO: File in BOOT BIN: "/home/yangf/src/xilinx/uboot/u-boot.elf"
INFO: Generating zynqmp binary package BOOT.BIN...


****** Xilinx Bootgen v2021.1
  **** Build date : May 28 2021-21:36:22
    ** Copyright 1986-2021 Xilinx, Inc. All Rights Reserved.


[INFO]   : Bootimage generated successfully

INFO: Binary is ready.

3、编译内核

源码位置:

./build/tmp/work-shared/zynqmp-generic/kernel-source

也可以从官网下载:git2_github.com.Xilinx.linux-xlnx.git.tar.gz

版本信息:

yangf@ubuntu:~/src/xilinx/kernel$ git branch
  xlnx_rebase_v4.14
  xlnx_rebase_v4.19
  xlnx_rebase_v4.9
* xlnx_rebase_v5.10
  xlnx_rebase_v5.4
  zynq/cleanup
  zynq/clk
  zynq/defconfig
  zynq/dt
  zynq/fixes
  zynq/soc
  zynqmp/dt
  zynqmp/soc
  zynqmp/soc-next
yangf@ubuntu:~/src/xilinx/kernel$ 
yangf@ubuntu:~/src/xilinx/kernel$ git log
commit 5d988a115dd3800e1d4e271a62a06538cfe5d4b8 (HEAD -> xlnx_rebase_v5.10)
Author: invalid_git config <unknown@unknown>
Date:   Sun Jul 4 12:02:55 2021 +0000

    Disable tree-loop-distribute-patterns CFLAG

3.1 配置config

使用kernel下的./arch/arm64/configs/xilinx_zynqmp_defconfig配置(内核自带)

make ARCH=arm64 CROSS_COMPILE=aarch64-poky-linux-  xilinx_zynqmp_defconfig

3.2 编译

make ARCH=arm64 CROSS_COMPILE=aarch64-poky-linux-  -j4

3.3 输出文件

        内核:arch/arm64/boot/Image(ZYNQ ARM32使用zImage)

        DTS:arch/arm64/boot/dts/xilinx/zynqmp-zcu104-revA.dtb

3.4 打包内核

        petalinux时将BOOT.BIN、image.ub、 boot.scr放置到了SD卡的第一个启动分区中。image.ub中包含内核。那么image.ub如何制作呢?打包方法见文章:mkimage与dumpimage使用

        使用mkimage工具,通过its文件,打包。

mkimage -f o.its image.ub

Logo

更多推荐