一、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 ———————————————— 版权声明:本文为CSDN博主「皮皮猪o」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_43216826/article/details/106893270
从0移植uboot (二) _启动流程分析 添加链接描述
【Linux】U-Boot启动文件start.S详解(超详细讲解,上篇) 添加链接描述
|