查看: 1612|回复: 1

创龙TLZ7x-EasyEVM评估板试用6:FSBL、U-Boot和Linux内核的编译

[复制链接]
  • TA的每日心情
    开心
    2022-8-6 16:18
  • 签到天数: 72 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2020-6-8 10:04:02 | 显示全部楼层 |阅读模式
    分享到:
    创龙TLZ7x-EasyEVM评估板试用6:FSBL、U-Boot和Linux内核的编译

    前面我们已经安装了Zynq Linux开发环境,主要是安装了Ubuntu 14.04.3版本的Linux操作系统和XILINX的PetaLinux 2017.4版本工具,下面就使用PetaLinux工具进行FSBL、U-Boot和Linux内核的编译过程进行学习,首先简要了解下Zynq-7000的启动配置过程,通常分为3个阶段:

    (1)、阶段0:称为BootROM阶段,系统上电复位或者热复位后执行厂家固化在芯片BootROM中的程序,系统在此阶段采集模式引脚的状态,该段代码为用户不可以修改的代码。

    (2)、阶段1:称为FSBL阶段,即第一级启动引导程序(First Stage Boot Loader),它可以是如何用户控制的代码。

    (3)、阶段2:称为SSBL阶段,即第二级启动引导程序(Second Stage Boot Loader), Linux开发下此阶段通常为U-Boot代码,如果是裸机应用也可以是用户实际编写的程序。U-Boot启动后就可以引导启动Linux内核了。

    以上阶段0执行的是厂家固化代码,我们不需要编译下载过程,阶段1和阶段2是用户代码,需要有修改编译和下载过程,下面为具体实验步骤:

    1、FSBL编译:打开Ubuntu系统的命令终端,输入下面命令创建一个FSBL安装目录:

    mkdir -p /home/tronlong/Zynq/Linux-system/FSBL

    再把创龙科技提供的第一张光盘的“Linux-system\FSBL\src”目录下FSBL源码embeddedsw-gdea7f98-v1.1.tar.gz文件拷贝导虚拟机共享目录,然后输入下面命令将其复制到Linux-system目录:

    cp -a /mnt/hgfs/share/embeddedsw-gdea7f98-v1.1.tar.gz/home/tronlong/Zynq/Linux-system/

    再输入下面命令进入到源码目录并解压文件:

    cd /home/tronlong/Zynq/Linux-system/

    tar -xvf embeddedsw-gdea7f98-v1.1.tar.gz -C FSBL/

    输入下面命令使能PetaLinux安装目录下的环境变量配置文件:

    source /home/tronlong/Zynq/PetaLinux/settings.sh

    输入下面命令进入“FSBL/lib/sw_apps/zynq_fsbl/src”目录,执行FSBL清理命令:

    cd/home/tronlong/Zynq/Linux-system/FSBL/lib/sw_apps/zynq_fsbl/src/

    make clean

    再输入以下命令进行FSBL编译:

    make "BOARD=zc702" "CFLAGS=-DFSBL_DEBUG"

    编译完成后会在当前路径下生成fsbl.elf文件,输入下面命令将编译出来的fsbl.elf制作生成BOOT.BIN文件在当前路径下:

    /home/tronlong/Zynq/PetaLinux/tools/hsm/bin/bootgen-image bootgen.bif -o BOOT.BIN

    2、U-Boot编译:先输入下面命令创建U-Boot安装目录:

    mkdir -p /home/tronlong/Zynq/Linux-system/U-Boot-2017.01

    再把第一张光盘的“Linux-system\U-Boot\U-Boot-2017.01\src\”目录下U-Boot源码u-boot-xlnx-gf812dfb-v1.0.tar.gz文件拷贝导虚拟机共享目录,然后输入下面命令将其复制到Linux-system目录:

    cp -a /mnt/hgfs/share/u-boot-xlnx-gf812dfb-v1.0.tar.gz/home/tronlong/Zynq/Linux-system/

    再输入下面命令进入到源码目录并解压文件:

    cd /home/tronlong/Zynq/Linux-system

    tar -zxvf u-boot-xlnx-gf812dfb-v1.0.tar.gz -CU-Boot-2017.01

    输入下面命令进入U-Boot源码安装目录并执行U-Boot清理命令:

    cd U-Boot-2017.01/

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-distclean

    再输入如下命令配置U-Boot:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-zynq_zc702_defconfig

    输入以下命令进行U-Boot编译:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j 16
    编译完成后用ls命令可以查看到在U-Boot源码的顶层目录生成的u-boot.bin文件,如下图所示:
    61.jpg

    3、Linux内核编译:先输入下面命令创建Linux内核源码安装目录:

    mkdir -p /home/tronlong/Zynq/Linux-system/kernel

    再把第一张光盘的“Linux-system\kernel\src\”目录下Linux内核源码linux-xlnx-gee6f0c1-v1.2.tar.gz文件拷贝导虚拟机共享目录,然后输入下面命令将其复制到Linux-system目录:

    cp -a /mnt/hgfs/share/linux-xlnx-gee6f0c1-v1.2.tar.gz/home/tronlong/Zynq/Linux-system/

    再输入下面命令进入到源码目录并解压文件:

    cd /home/tronlong/Zynq/Linux-system

    tar -zxvf linux-xlnx-gee6f0c1-v1.2.tar.gz -C kernel/

    进入Linux内核源码安装目录,输入下面Linux内核清理命令:

    cd /home/tronlong/Zynq/Linux-system/kernel

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-distclean

    再输入如下命令配置Linux内核:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-xilinx_zynq_defconfig

    编译Linux内核镜像uImage文件需要依赖u-boot-tools工具包,先输入如下指令安装:

    sudo apt-get install u-boot-tools
    需要输入root用户密码后安装,如下图示:
    62.jpg

    输入以下命令进行Linux内核编译,指令中的“0x02080000”为内核镜像文件uImage的内存加载地址:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-UIMAGE_LOADADDR=0x02080000 uImage -j 16
    编译完成后,在Linux内核源码安装目录的“arch/arm/boot”路径下可以看到生成内核镜像文件uImage,可用ls arch/arm/boot命令查看,如下图示:
    63.jpg

    最后需将内核镜像文件复制到SD系统启动卡文件系统rootfs分区boot目录。

    4、设备树编译:创龙科技提供的dts设备树源文件位于Linux内核源码"arch/arm/boot/dts/"目录下,包括了基础设备树文件和动态设备树文件,系统上电启动后自动加载基础设备树文件,动态设备树文件需要在文件系统下进行加载,创龙TLZ7x-EasyEVM开发板仅提供了基础设备树文件方式,在Linux 内核源码安装目录下,输入下面命令编译生成dtb设备树文件:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-zynq-zc702.dtb
    编译完成后,在Linux内核源码安装目录的“arch/arm/boot/dts/”路径下会生成由zynq-zc702.dts设备树源文件编译生成的dtb文件,将其复制到SD卡文件系统rootfs分区的boot目录供U-Boot上电后自动加载。以上过程看文字可能比较抽象,这里提供一个操作视频供大家参考,中间要等待的时间有跳过:

    以上步骤是参考创龙科技提供的文档和源码进行实验,如要具体修改的话还得研究源代码,修改后按上面步骤编译完后直接替换到SD系统启动卡上对应文件就可以实现更新。


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 09:10 , Processed in 0.126301 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.