ZYNQ7000(AX7020)移植Linux操作系统(二):u

您所在的位置:网站首页 uboot编译原理 ZYNQ7000(AX7020)移植Linux操作系统(二):u

ZYNQ7000(AX7020)移植Linux操作系统(二):u

2023-08-28 19:58| 来源: 网络整理| 查看: 265

总述

我们已经在 PC 上已经安装了 Ubuntu 客户操作系统,以及在 Ubuntu 操作系统里安装了 SDK 2015.4 工具。要想在 Zynq 平台上运行 Ubuntu 操作系统,必项预先制作作镜像文件,而镜像文件中必项有 u-boot、内核、设备树及文件系统。本章则将为大家说明u-boot 的原理及配置和编译的方法,以及 u-boot 启动测试。

一、u-boot 原理及实现

u-boot是德国DENX小组开发的用于多种嵌入式CPU的bootloader程序。当前,u-boot不仅支持嵌入式 Linux 系统的引导,它还支持 NetBSD、VxWorks、QNX、RTEMS、ARTOS、 LynxOS 嵌入式操作系统。u-boot 除了支持 ARM 系列的处理器外,还支持 MIPS、x86、PowerPC、XSale 等诸多常用系列的处理器。在 Zynq7000 系统中,u-boot 主要是用于引导Ubuntu 操作系统。

首先下载合适的uboot版本 , 我用的是2016-07版

二、uboot的文件结构

在uboot的文件夹下由很多子文件夹构成,其中每个文件夹都实现一个对应的功能。 1.api:相关的api函数,如输出字符函数。 2.arch:与特定的CPU架构相关的目录。在该目录下,uboot所支持的不同的CPU架构都有一个单独的子目录对应。典型的,arch文件夹下名字为arm的子目录就是Zynq7000 soc所对应的CPU架构目录。 3.board:和一些已有开发板有关的文件。每一个开发板都以一个子目录出现在当前目录下。 4.common:实现uboot命令行下所支持的命令。在该目录下,每条命令对应一个独立的文件。 5.disk:提供对磁盘的支持。 6.doc:文档目录,uboot有非常完整的文档。 7.drivers:在该目录下保存着uboot所支持的设备驱动程序。典型的如各种网卡、支持的CFI的Flash存储器,串口和USB等。 8.fs:对于Ubuntu所支持的文件系统,在该目录下面都有一个对应的文件夹。典型的,uboot现在支持cramfs,jffs2和ext4等文件系统。 9.include:该目录下保存着uboot所使用的头文件,对各种硬件平台支持的汇编文件、系统的配置文件以及对文件系统支持的文件。该目录下configs目录有与开发板相关的配置头文件,如zynq_common.h是于zynq开发板相关的配置文件。 10.lib:该目录下保存着体系结构相关的库文件。 11.net:该目录下保存着与网络协议相关的代码。比如BOOTP协议、TFIP协议、RARP协议和NFS文件系统的实现。 12.tools: 该目录下保存着用于生成uboot的工具,包括mkimage、crc、Makefile和boards.cfg配置文件。

三、uboot工作模式

uboot的工作模式有启动加载模式和下载模式 1.启动加载模式 该模式是Bootloader的正常工作模式,嵌入式产品发布时,Bootloader必须工作在这种模式下,Bootloader将嵌入式操作系统从flash中加载到SDRAM中运行,整个过程是自动得。 2.下载模式 该模式就是Bootloader通过某些通信手段将内核映像或根文件系统映像等从PC机中下载到目标版得flash中。用户可以利用Bootloader提供的一些命令接口来完成自己想要得操作。

四、uboot启动流程

uboot启动内核的过程可以分为两个阶段,两个阶段的功能如下: 1.第一阶段功能 : 硬件设备初始化 加载uboot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 2.第二阶段的功能 初始化本阶段使用的硬件设备 检测系统内核映射 将内核从flash读取到RAM中 微内核设置启动参数 调用内核 第一阶段对应的文件是/arch/arm/cpu/armv7目录下得start.S和lowlevel_init.S文件。 第二阶段对应得文件是common/board_r.c

五、uboot的编译

下面为大家介绍uboot的编译方法,在编译之前,需要保证Ubuntu环境中已经安装设备树编译器工具。安装命令如下 : apt-get install device-tree-compiler 安装完dtc工具后,就可以编译uboot了。 1.在命令行中输入命令“source/opt/Xilinx/SDK/2015.4/settings64.sh”定位到交叉编译器。 2.进入到uboot-xlinx-master文件夹,该文件夹中保存着uboot的源码。 3.在命令行输入命令 : make CROSS_COMPILE=arm-xlinx-linux-guneabi-zynq_ax7020_defonfig,生成mikefile文件。 4.在命令行输入命令: make CROSS_COMPILE=arm-xlinx-linux-gnueabi-,编译器会自动编译uboot 5.当uboot编译成功后,在uboot-xlinx-master根目录下会生成uboot文件(elf文件)、uboot.bin和uboot.srec等文件。其中uboot文件我们将用来制作最后启动的BOOT文件。

六、生成BOOT.BIN文件

对于Zynq7000来说 , BOOT.BIN文件包含第一级启动代码FSBL、硬件比特流文件和uboot文件。 1.完成vivado工程,生成.bit文件。 2.进入SDK开发环境后,点击菜单File->New->Application Project,在Project name:输入fsbl , Hardware Platform 需要选择system_wrapper_hw_platform_1。 选择Zynq FSBI模板 为了能让串口打印出uboot信息,我们这里需要在fsbl_debug.h文件里添加一条语句,定义一下“FSBL_DEBUG_INFO”常量。修改后保存,重新编译一下fsbl项目。 最后开始生成BOOT.BIN文件, : 这里需要把Ubuntu操作系统中生成的uboot拷贝到Vivado的工程目录下,并添加后缀为uboot.elf。 在SDK里选择菜单Xilinx Tools->Create Boot Image 选择Zynq Boot Image 文件.bif的存放地址,然后再Boot image partitions里添加3个文件 : 分别是fsbl.elf、system_wrapper.bit、和uboot.elf。 点击Create Image按钮,生成BOOT.BIN。

七、uboot启动实验

1.先用FAT32的格式先格式化一下SD卡,然后把生成的BOOT.bin文件到SD中。 2.把SD卡再插到开发板的SD卡槽中,再把Boot启动配置的跳线帽调到SD位置的两个引脚上。开发板上电,程序就会在SD卡启动。在串口信息中,我们可以看到uboot启动的打印信息。 3.可以再uboot界面下,敲击printenv,看看uboot默认的参数配置;敲击help,看看uboot都有哪些命令。比如我们可以在uboot下测试网络连接,用网线连接开发板和电脑的网口,再来设置一下开发板的I地址,这里开发板的IP地址需要和电脑的IP地址保存在同一个网段。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3