前言:
大家好,今天小编我又要来水一波了(linux大神们请绕道,勿喷,在此谢过大神们的不喷之恩)。本人是linux小白,但是渐渐地对ZYNQ的linux产生了及其浓厚的兴趣,因为脑子不好使,经常记不住东西,所以希望通过博客的形式记录一下,以后忘记了方便回过头来看看。前面都是废话,可以不用看。。。(回到正题)今天我们要水的就是ZYNQ 的uboot生成、编译;内核的下载,生成,编译;文件系统的制作。
准备:
首先我们搞linux必备的除了工具就是源码,我的工具就是一台装有Ubuntu14.04的PC机,一块矿机板卡(号:EBAZ4205)/(我暂时先用的z7035),一张TF卡(容量最好大于4G,因为我用的文件系统比较大)(我暂时用z7035的QSPI和EMMC),一个读卡器,一个USB转TTL,电源12V,上位机软件puTTY,当然最重要的还有源码(本人用的不是petalinux,不是petalinux,不是petalinux,重要的事情说3遍。用的Xilinx官方github的原生态:
uboot:https://github.com/Xilinx/u-boot-xlnx/tree/xilinx-v2018.3
内核kernel:https://github.com/Xilinx/linux-xlnx
设备树库devicetree:https://github.com/Xilinx/device-tree-xlnx/tree/xilinx-v2019.2
(文件系统制作源码)busybox:https://busybox.net/
(或者使用git下载busybox源码):git clone git://git.busybox.net/busybox
(由于最新的busybox不支持mkfs.ext4,所以需要下载文件系统制作工具的源码e2fsprogs)http://e2fsprogs.sourceforge.net/
开始:
1:下载,编译u-boot
(1)下载uboot源码(https://github.com/Xilinx/u-boot-xlnx/tree/xilinx-v2018.3)
修改uboot源码目录下的设备树,主要修改网络这块,我的是Marvell的88E1512,PHY地址是0,所以我把设备树下面
的PHY地址修改为0(因为我们要通过网络来加载内核kernel和文件系统ramdisk还有设备树)
$:cd u-boot-2018.3/u-boot-xlnx/arch/arm/dts
$:vim
$:cd u-boot-2018.3/
$:cd u-boot-xlnx/
$:export ARCH=arm
$:export CROSS_COMPILE=arm-linux-gnueabihf-
$:make zynq_zc7100_defconfig
$:make menuconfig
直接选择退出,暂时可以什么不用修改
$:make
uboot源码会编译出一个u-boot.elf文件,拷贝出来,结合vitis IDE,创建出BOOT.bin/BOOT.mcs文件即可。
使用vitis IDE直接将BOOT.mcs文件下载到QSPI FLASH中即可。
$:
$:
$:
$:
$:
$:
$:
$:
$:
$:
$:
$:
2:下载,编译内核kernel
3:下载busybox,制作文件系统(https://busybox.net/)
(1):在工作目录下创建rootfs文件夹
$:mkdir rootfs
$:tar -zxvf busybox-1.31.1.tar.bz2
(2):配置编译busybox
$:cd busybox-1.31.1
$:make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- defconfig
$:make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gn