u-boot 订阅
Das U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。Das U-Boot可以在x86计算机上建构,但这部x86计算机必须安装有可支持特定平台结构的交互发展GNU工具链,例如crosstool、Embedded Linux Development Kit (ELDK)或OSELAS.Toolchain。 展开全文
Das U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。Das U-Boot可以在x86计算机上建构,但这部x86计算机必须安装有可支持特定平台结构的交互发展GNU工具链,例如crosstool、Embedded Linux Development Kit (ELDK)或OSELAS.Toolchain。
信息
类    型
开放源码项目
特    点
遵循GPL条款
中文名
U-Boot
全    称
Universal Boot Loader
U-Boot简介
U-Boot不仅仅支持嵌入式Linux系统的引导,它还支持NetBS D, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android嵌入式操作系统。其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS, android。这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、 x86、ARM、NIOS、XScale等诸多常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk[以下简称W.D]本人精湛专业水平和执着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。选择U-Boot的理由:① 开放源码;② 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android;③ 支持多个处理器系列,如PowerPC、ARM、x86、MIPS;④ 较高的可靠性和稳定性;⑤ 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;⑥ 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;⑦ 较为丰富的开发调试文档与强大的网络技术支持;
收起全文
精华内容
下载资源
问答
  • u-boot分析 七(添加u-boot命令,学习u-boot命令实现原理)本文目标:理解u-boot命令的实现原理。上一篇文章分析了u-boot是如何启动kernel的,其中就涉及到bootm命令,考虑到文章主题需要,当时并没有对bootm命令做...

    u-boot分析 七

    (添加u-boot命令,学习u-boot命令实现原理)



    本文目标:

    理解u-boot命令的实现原理。


    上一篇文章分析了u-boot是如何启动kernel的,其中就涉及到bootm命令,考虑到文章主题需要,当时并没有对bootm命令做过多的解释。然而,u-boot命令行又是u-boot及其重要的一部分。这篇文章,我们就通过实战来理解u-boot命令的实现原理。

    我们要做的很简单,就是添加一条uboot command,希望在开发板上,uboot命令行中输入itxiebo时,能够从串口打印出一句log。


    一、具体实现步骤:

    1. 在./common文件夹下新建cmd_itxiebo.c,并在此文件中添加如下内容
    #include <common.h>
    #include <command.h>
    
    static int do_itxiebo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
    {
        printf("do_itxiebo command is ready now!");
        return 0;
    }
    
    U_BOOT_CMD(
        itxiebo,    2,  0,  do_itxiebo,
        "itxiebo - this is a itxiebo command, do nothing",
        "- this is a itxiebo command, do nothing"
    );

    2.在./common/Makefile中添加:

    obj-y += cmd_itxiebo.o

    3.在linux环境下,重新编译u-boot,得到u-boot.bin,并升级到自己的开发板中(如果你没有开发板,没有关系,你只需要明白我们要在开发板中验证自己添加的命令itxiebo)

    4.升级完后,在开发板启动内核之前,按space键进入u-boot命令行模式。
    这里写图片描述

    5.在串口终端中输入help命令,回车,可以发现itxiebo命令行已经添加成功。
    这里写图片描述

    6.在串口终端中输入itxiebo命令,回车执行该命令,发现我们添加的打印log,可以正确打印出来:
    这里写图片描述


    二、命令原理分析

    实战见效果了,我们继续分析。不难发现,只要能搞清上面代码中的“U_BOOT_CMD”,就能弄明白uboot命令实现原理。

    U_BOOT_CMD格式如下:

    U_BOOT_CMD(_name, _maxargs, _rep, _cmd, _usage, _help)

    其中,各个参数解释如下:

    参数名 说明
    _name 命令名,非字符串,但在U_BOOT_CMD中用“#”符号转化为字符串
    _maxargs 命令的最大参数个数
    _rep 是否自动重复(按Enter键是否会重复执行)
    _cmd 该命令对应的响应函数
    _usage 简短的使用说明(字符串)
    _help 较详细的使用说明(字符串)

    说明:
    在内存中保存命令的help字段会占用一定的内存,通过配置U-Boot可以选择是否保存help字段。若在include/configs/s5p4418_urbetter.h 中定义了CONFIG_SYS_LONGHELP宏,则在U-Boot中使用help命令查看某个命令的帮助信息时将显示_usage和_help字段的内容,否则就只显示usage字段的内容,而不显示_help字段的内容。

    另外,在include/command.h中,对U_BOOT_CMD的define 如下:

    #define ll_entry_declare(_type, _name, _list)               \
        _type _u_boot_list_2_##_list##_2_##_name __aligned(4) __attribute__((unused,    section(".u_boot_list_2_"#_list"_2_"#_name)))
    
    #define U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, _comp) \
        ll_entry_declare(cmd_tbl_t, _name, cmd) =           \
            U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,  _usage, _help, _comp);
    
    #define U_BOOT_CMD(_name, _maxargs, _rep, _cmd, _usage, _help)      \
        U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, NULL)

    最后,同样在include/command.h中定义了一个结构体cmd_tbl_t

    这里写图片描述

    如此,我们便可以将U_BOOT_COM解析,如下

    U_BOOT_CMD(
        itxiebo,    2,  0,  do_itxiebo,
        "itxiebo - this is a itxiebo command, do nothing",
        "- this is a itxiebo command, do nothing"
    );
    
    解析为:
    
    cmd_tbl_t _u_boot_list_2_do_itxiebo_2_itxiebo __aligned(4) __attribute__((unused,section(".u_boot_list_2_"do_itxiebo"_2_"itxiebo)))

    其中,“u_boot_list”,《u-boot分析 三》分析u-boot.lds时解释过。也就是说咱们新增的itxiebo command会被储存在u_boot_list段内。

    .u_boot_list : {
            KEEP(*(SORT(.u_boot_list*)));
            /*.data段结束后,紧接着存放u-boot自有的一些function,例如u-boot command等*/
        }

    三、itxiebo命令的执行过程:

    在U-Boot中输入(串口终端)“itxiebo”命令执行时,U-Boot接收输入的字符串“itxiebo”,传递给run_command()函数。run_command()函数调用common/command.c中实现的find_cmd()函数在u_boot_list段内查找命令,并返回itxiebo命令的cmd_tbl_t结构。然后run_command()函数使用返回的cmd_tbl_t结构中的函数指针调用itxiebo命令的响应函数do_itxiebo,从而完成了命令的执行。


    参考:
    http://www.cnblogs.com/sdphome/archive/2011/08/19/2146327.html


    完事儿。

    展开全文
  • 文章目录  U-Boot启动阶段函数...u-boot.lds(board/ti/am335x/u-boot.lds) |--> vectors.S(arch/arm/lib/vectors.S) |--> start.S(arch/arm/cpu/armv7/start.S) ... ... |--> _main(arch/ar...

    U-Boot2017.01的启动过程比较复杂,本文分为6部分讲述,笔者将主要过程和函数调用关系整理成一个文档方便查看,文档链接为
    U-Boot2017.01启动过程分析pdf
    U-Boot2017.01源码分析及启动命令解析

    启动过程6部分内容如下
    01-U-Boot2017.01 启动过程概述
    02-U-Boot2017.01 SPL阶段分析
    03-U-Boot2017.01 U-Boot阶段分析
    04-U-Boot2017.01 加载内核过程
    05-U-Boot2017.01 bootz加载过程
    06-U-Boot2017.01 读取uEnv.txt过程

     U-Boot启动阶段函数调用关系如下

    /* u-boot阶段 */
    u-boot.lds(board/ti/am335x/u-boot.lds)
    	|--> vectors.S(arch/arm/lib/vectors.S)
    	|--> start.S(arch/arm/cpu/armv7/start.S)
    		... ...
    		|--> _main(arch/arm/lib/crt0.S )
    			|--> board_init_f_alloc_reserve(common/init/board_init.c) /* 为u-boot的gd结构体分配空间 */
    			|--> board_init_f_init_reserve(common/init/board_init.c)  /* 将gd结构体清零 */
    			|--> board_init_f(common/board_f.c) /* 将gd结构体清零 */
    				|--> initcall_run_list(init_sequence_f) (lib/initcall.c)
    					|--> init_sequence_f[](common/board_f.c) /* 函数指针数组 */
    						|--> /* 初始化各种外设,比如使能看门狗,串口打印,控制台,并保存板子信息到gd等等 */
    			|--> relocate_code(arch\arm\lib\relocate.S) /* 运行 relocate_vectors,实现uboot代码的重定位 */
    			|--> board_init_r(common/board_r.c)
    				|--> initcall_run_list(init_sequence_r) (lib/initcall.c)	/* 遍历数组,一系列初始化 */
    					|--> initr_reloc(common/board_r.c) /* 设置 gd->flag表示relocation完成 */
    					|--> board_init(board/ti/am335x/board.c) /* 初始化看门狗,可选使能gpmc和PRU* */
    					|--> efi_memory_init(lib/efi_loader/efi_memory.c) 
    					|--> interrupt_init(arch/arm/lib/interrupts.c) /* 初始化中断 */
    					|--> run_main_loop(common/board_r.c)
    						|--> main_loop(common/main.c)
    							|--> setenv("ver", version_string) /* 设置版本变量 */
    								|--> version_string[](cmd/version.c) /* u-boot版本号,编译日期和时间,以及时间区 */
    									|--> #define U_BOOT_VERSION_STRING U_BOOT_VERSION(include/version.h)
    							|--> run_preboot_environment_command(common/main.c) /* 从环境变量中获取"preboot"的定义,一般环境变量中不包含该项配置 */		
    							|--> bootdelay_process(common/autoboot.c) /* 从环境变量中取出"bootdelay"和"bootcmd"的配置值 */	
    								|--> s = getenv("bootcmd")(common/autoboot.c)
    								|--> "bootcmd="  CONFIG_BOOTCOMMAND "\0" /* include/configs/platinum.h  */
    									|--> #define CONFIG_BOOTCOMMAND \    /* include/configs/am335x_evm.h */                       
    										"if test ${boot_fit} -eq 1; then " \ /* include/configs/ti_armv7_common.h  boot_fit = 0 */
    											"run update_to_fit;"    \	/* 不执行 */
    										"fi;"   \
    										"run findfdt; " \				
    										"run init_console; " \
    										"run envboot; " \
    										"run distro_bootcmd"	
    										|--> "findfdt="\       /* include/configs/am335x_evm.h */
    											"if test $board_name = A335BONE; then " \	/* (board/ti/am335x/board.h) board_ti_is("A335BONE") */
    												"setenv fdtfile am335x-bone.dtb; fi; " \
    											"if test $board_name = A335BNLT; then " \
    												"setenv fdtfile am335x-boneblack.dtb; fi; " \
    											"if test $board_name = BBG1; then " \                                                                                  
    												"setenv fdtfile am335x-bonegreen.dtb; fi; " \
    											"if test $board_name = A33515BB; then " \
    												"setenv fdtfile am335x-evm.dtb; fi; " \
    											"if test $board_name = A335X_SK; then " \
    												"setenv fdtfile am335x-evmsk.dtb; fi; " \
    											"if test $board_name = A335_ICE; then " \
    												"setenv fdtfile am335x-icev2.dtb; fi; " \
    											"if test $fdtfile = undefined; then " \
    												"echo WARNING: Could not determine device tree to use; fi; \0" \
    										|--> "init_console=" \   /* include/configs/am335x_evm.h */
    											"if test $board_name = A335_ICE; then "\
    												"setenv console ttyO3,115200n8;" \
    											"else " \
    												"setenv console ttyO0,115200n8;" \
    											"fi;\0" \
    										|--> "envboot=mmc dev ${mmcdev}; " \  /* include/environment/ti/mmc.h  */
    											"if mmc rescan; then " \
    												"echo SD/MMC found on device ${mmcdev};" \
    												"if run loadbootscript; then " \
    													"run bootscript;" \
    												"else " \
    													"if run loadbootenv; then " \
    														"echo Loaded env from ${bootenvfile};" 
    														"run importbootenv;" \
    													"fi;" \
    													"if test -n $uenvcmd; then " \
    														"echo Running uenvcmd ...;" \
    														"run uenvcmd;" \
    													"fi;" \
    												"fi;" \
    											"fi;\0" \
    										|--> "distro_bootcmd=" BOOTENV_SET_SCSI_NEED_INIT           
    											"for target in ${boot_targets}; do "               
    											"run bootcmd_${target}; "                      
    											"done\0"	/* include/config_distro_bootcmd.h */
    											|--> #define BOOTENV_SET_SCSI_NEED_INIT "setenv scsi_need_init;" 
    							|--> autoboot_command(common/autoboot.c)  /* 倒计时按下执行,没有操作执行bootcmd的参数 */		
    								|--> ... ...
    							|--> cli_loop(common/cli.c)	/* 倒计时按下space键,执行用户输入命令 */			
    								|--> ... ...
    

    程序框图如下
    在这里插入图片描述

    展开全文
  • U-boot移植之U-boot概述

    千次阅读 2017-04-26 11:47:19
    以下 内容是基于U-boot中的README文档 一:什么是U-bootU-boot全称是 Universal Boot Loader,即通用的Bootloader,是遵循GPL条款的开发源代码项目。 越来越多的人选择U-boot作为嵌入式系统的引导程序...

    以下 内容是基于U-boot中的README文档


    一:什么是U-boot?

    U-boot全称是 Universal Boot Loader,即通用的Bootloader,是遵循GPL条款的开发源代码项目。

    越来越多的人选择U-boot作为嵌入式系统的引导程序,它可以用来引导多种操作系统,支持多种CPU架构。


    二:U-boot历史 ?

    README内容所说:(create PPCBoot projec ,start from 8xxrom sources)

    U-Boot的起源于德国DENX软件工程中心PPCOOT工程项目,后来增加对其他体系结构CPU的支持,比如ARM,x86,MIPS等等。


    三:U-boot内容 ?

    逻辑功能:

    功能 说明
    硬件相关的初始化 CPU、存储器
    复制第二阶段代码到DRAM 重定位uboot到RAM
    设置堆栈 堆栈设置
    人机交互 第二阶段代码入口
    • 一:硬件相关的初始化

      • CPU
        • 设置CPU工作模式(SVC32 mode): …. msr cpsr, r0….
        • 设置向量表 …ldr pc, _undefined_instruction
        • 关看门狗 …ldr r0, =pWTCON…
        • 屏蔽中断 …ldr r0, =INTMSK…
        • 设置时钟 …ldr r0, =CLKDIVN..
        • 关闭cpu级别的MMU和cache …cpu_init_crit:…
      • 存储器
        • 初始化存储控制器 …lowlevel_init:…

    • 二:复制第二阶段代码到DRAM

      • 重定位uboot到RAM relocate: /* relocate U-Boot to RAM */

    • 三:设置堆栈

      • 堆栈设置 stack_setup: /* Set up the stack */

    • 四:人机交互

      • 第二阶段代码入口 ldr pc, _start_armboot ; void start_armboot (void)

    文件目录层次:Directory Hierarchy: 内容来自 README

    Directory Hierarchy:
    ====================

    • board ===========> Board dependent files
    • common===========>Misc architecture independent functions
    • cpu===========>CPU specific files
      • 74xx_7xx======>Files specific to Freescale MPC74xx and 7xx CPUs
      • arm720t======> Files specific to ARM 720 CPUs
      • arm920t ======>Files specific to ARM 920 CPUs
        • at91rm9200 ======> Files specific to Atmel AT91RM9200 CPU
        • imx ======>Files specific to Freescale MC9328 i.MX CPUs
        • s3c24x0 ======>Files specific to Samsung S3C24X0 CPUs
      • arm925t ======>Files specific to ARM 925 CPUs
      • arm926ejs ======>Files specific to ARM 926 CPUs
      • arm1136 ======>Files specific to ARM 1136 CPUs
      • at32ap ======>Files specific to Atmel AVR32 AP CPUs
      • i386 ======>Files specific to i386 CPUs
      • ixp ======>Files specific to Intel XScale IXP CPUs
      • mcf52x2 ======>Files specific to Freescale ColdFire MCF52x2 CPUs
      • mips ======>Files specific to MIPS CPUs
      • mpc5xx ======>Files specific to Freescale MPC5xx CPUs
      • mpc5xxx ======>Files specific to Freescale MPC5xxx CPUs
      • mpc8xx ======>Files specific to Freescale MPC8xx CPUs
      • mpc8220 ======>Files specific to Freescale MPC8220 CPUs
      • mpc824x ======>Files specific to Freescale MPC824x CPUs
      • mpc8260 ======>Files specific to Freescale MPC8260 CPUs
      • mpc85xx ======>Files specific to Freescale MPC85xx CPUs
      • nios ======>Files specific to Altera NIOS CPUs
      • nios2 ======>Files specific to Altera Nios-II CPUs
      • ppc4xx ======>Files specific to AMCC PowerPC 4xx CPUs
      • pxa ======>Files specific to Intel XScale PXA CPUs
      • s3c44b0 ======>Files specific to Samsung S3C44B0 CPUs
      • sa1100 ======>Files specific to Intel StrongARM SA1100 CPUs
    • disk===========>Code for disk drive partition handling
    • doc===========>Documentation (don’t expect too much)
    • drivers===========>Commonly used device drivers
    • dtt ===========>Digital Thermometer and Thermostat drivers
    • examples===========>Example code for standalone applications, etc.
    • include ===========>Header Files
    • lib_arm ===========>Files generic to ARM architecture
    • lib_avr32 ===========>Files generic to AVR32 architecture
    • lib_generic===========>Files generic to all architectures
    • lib_i386 ===========>Files generic to i386 architecture
    • lib_m68k ===========>Files generic to m68k architecture
    • lib_mips ===========>Files generic to MIPS architecture
    • lib_nios ===========>Files generic to NIOS architecture
    • lib_ppc ===========>Files generic to PowerPC architecture
    • net ===========>Networking code
    • post ===========>Power On Self Test
    • rtc ===========>Real Time Clock drivers
    • tools ===========>Tools to build S-Record or U-Boot images, etc.

    四:关于README的部分翻译 ?

    (C) Copyright 2000 - 2009
    (C)版权 2000-2009
    See file CREDITS for list of people who contributed to this project.
    “CREDITS”文件,这个列举了所有为uboot项目做出贡献的人。
    This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
    这是一个自由软件。你可以像自由软件基金会那样以GUN通用许可证的名义重新发布甚至修改它,既可以是第二个版本也可以是新版本。
    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the GNU General Public License for more details.
    发布这个项目的目的是希望它能够有用,但是他不提供任何保障,你可以通过GNU通用许可证了解更多的细节。
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
    MA 02111-1307 USA
    随着这个程序的发布,同时你也将会受到GNU通用许可证的一份拷贝,如果不幸的话,没有收到,你可以给自由软件基金会写信。地址是:59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

    Summary:

    概述:

    This directory contains the source code for U-Boot, a boot loader for Embedded boards based on PowerPC, ARM, MIPS and several other processors, which can be installed in a boot ROM and used to initialize and test the hardware or to download and run application code.
    这个目录包含uboot所有的源代码,它是为基于powerpc,ARM,MIPS以及一些其他的处理器的开发板提供一段启动引导程序,它能被安装在启动只读存储器中,用来初始化和测试系统硬件,或者用来下载程序并运行。
    The development of U-Boot is closely related to Linux: some parts of the source code originate in the Linux source tree, we have some header files in common, and special provision has been made to support booting of Linux images.
    U—boot的发展和Linux紧密相关:U-boot的部分源代码源于Linux 源码树,有一些通用的头文件以及一些特定的文件来为引导Linux镜像提供支持。

    Some attention has been paid to make this software easily configurable and extendable. For instance, all monitor commands are implemented with the same call interface, so that it’s very easy to add new commands. Also, instead of permanently adding rarely used code (for instance hardware test utilities) to the monitor, you can load and run it dynamically.
    我们倾注了大量的精力来使得这个软件更易于配置和扩展。例如:所有的显示在屏幕上的命令都是
    以同样的调用接口来实现的,因此这使得添加新的命令更加简单,而不是永久性地添加一些很少使用的代码到monitor,比如一些硬件检测工具,你可以动态加载并且运行它。

    Status:

    地位:

    In general, all boards for which a configuration option exists in the Makefile have been tested to some extent and can be considered “working”. In fact, many of them are used in production systems.
    一般来说,Makefile的配置选项涉及到的所有开发板都经过了一定程度的测试,并且是可以正常工作。事实上,他们之中很多都已经被应用于具体的生产系统。
    In case of problems see the CHANGELOG and CREDITS files to find out who contributed the specific port. The MAINTAINERS file lists board .
    如果存在问题,可以查阅CHANGELOG和 CREDITS这两个文件来找到是谁提供了相关的部分。MAINTAINERS这个文件列出了所有开发板的维护人员。

    Where to get help:

    可以从哪里获得帮助:

    In case you have questions about, problems with or contributions for U-Boot you should send a message to the U-Boot mailing list at u-boot@lists.denx.de. There is also an archive of previous traffic on the mailing list - please search the archive before asking FAQ’s. Please see http://lists.denx.de/pipermail/u-boot and http://dir.gmane.org/gmane.comp.boot-loaders.u-boot
    如果你想为u-boot项目出一份力,以防你在这方面疑问,你可以发送邮件到U-boot邮箱列表
    u-boot@lists.denx.de,在那里有一些以前来往的邮件档案,请你在问问题之前先在这个档案里搜索一下。

    Where to get source code:

    在哪里获得源代码:

    The U-Boot source code is maintained in the git repository at git://www.denx.de/git/u-boot.git ; you can browse it online at http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=summary
    U-Boot源代码在git代码仓库里被维护:在 git://www.denx.de/git/u-boot.git 其实你也可以在线浏览 :在 http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=summary

    The “snapshot” links on this page allow you to download tarballs of any version you might be interested in. Official releases are also available for FTP download from the ftp://ftp.denx.de/pub/uboot/ directory.
    下面这个简短的链接允许你下载你感兴趣u-boot的任何版本。官方也会在FTP站点发布可用的版本 在这个目录: ftp://ftp.denx.de/pub/uboot/

    Where we come from:

    我们来自哪里:

    • start from 8xxrom sources
      最开始是源于 8xxrom项目的源代码
    • create PPCBoot project (http://sourceforge.net/projects/ppcboot)
      为PowerPC处理器系列的开发板启动创建的项目
    • clean up code
      清除一些不必要的代码
    • make it easier to add custom boards
      使得增加一些常用的开发板变得更加容易
    • make it possible to add other [PowerPC] CPUs
      使得添加一些除PowerPC之外的一些CPU系列成为可能
    • extend functions, especially:
      扩展功能,尤其如下:
      • Provide extended interface to Linux boot loader
        为Linux启动引导提供扩展接口
      • S-Record download
        支持S-Record 下载
      • network boot
        支持网络启动
      • PCMCIA / CompactFlash / ATA disk / SCSI … boot
        支持 PCMCIA/CompactFlash/ATA disk/SCSI 等方式启动
    • create ARMBoot project
      创建ARMBoot项目
    • add other CPU families (starting with ARM)
      添加其他CPU系列(从ARM系列开始)
    • create U-Boot project
      创建U-Boot 项目
    • current project
      当前的项目

    Names and Spelling:

    项目名字以及拼写:

    The “official” name of this project is “Das U-Boot”. The spelling “U-Boot” shall be used in all written text (documentation, comments in source files etc.). Example:This is the README file for the U-Boot project.
    官方为这个项目起名交 Das U-Boot。U-Boot这样的拼写方式应该被用在所有的文本中。比如:README,这是一个和U-Boot 项目有关的文件。
    File names etc. shall be based on the string “u-boot”. Examples:
    还用用在文件名的地方,拼写的形式应该是 u-boot 字符串的形式,比如:头文件 asm/u-boot.h
    Variable names, preprocessor constants etc. shall be either based on the string “u_boot” or on “U_BOOT”. Example:
    还有其他可变的名字,像在预处理器常量等等。应该以字符串u-boot 或者 U-BOOT的形式使用:
    比如:
    U_BOOT_VERSION u_boot_logo
    IH_OS_U_BOOT u_boot_hush_start

    Versioning:

    版本:

    U-Boot uses a 3 level version number containing a version, a sub-version, and a patchlevel:
    “U-Boot-2.34.5” means version “2”, sub-version “34”, and patchlevel “4”.
    U-Boot项目使用 3个等级数字来编制一个版本,一个子版本号和一个补丁版本号:比如:
    “U-Boot-2.34.5 ”意味着 第2个版本,子版本号是34,补丁版本是4。

    The patchlevel is used to indicate certain stages of development between released versions, i. e. officially released versions of U-Boot will always have a patchlevel of “0”.
    补丁等级被用来表明 开发的特定阶段 ,官方发布的版本,补丁等级都是0。

    Directory Hierarchy:

    目录层次结构

    • api Machine/arch independent API for external apps
      特定架构机器扩展应用使用独立的API
    • board Board dependent files
      开发板相关的文件
    • common Misc architecture independent functions
      独立于多种架构的功能模块
    • cpu CPU specific files
      具体类型CPU的文件
      • 74xx_7xx Files specific to Freescale MPC74xx and 7xx CPUs
        Freescale MPC74xx and 7xx CPUs类型专用的文件
      • arm720t Files specific to ARM 720 CPUs
        ARM 720 CPUs专用的文件
      • arm920t Files specific to ARM 920 CPUs
        ARM 920 CPUs专用的文件
      • at91rm9200 Files specific to Atmel AT91RM9200 CPU
        Atmel AT91RM9200 CPU专用的文件
      • imx Files specific to Freescale MC9328 i.MX CPUs
        Freescale MC9328 i.MX CPUs专用的文件
      • s3c24x0 Files specific to Samsung S3C24X0 CPUs
        Samsung S3C24X0 CPUs专用的文件
      • arm925t Files specific to ARM 925 CPUs
        ARM 925 CPUs专用的文件
      • arm926ejs Files specific to ARM 926 CPUs
        ARM 926 CPUs专用的文件
      • arm1136 Files specific to ARM 1136 CPUs
        ARM 1136 CPUs专用的文件
      • at32ap Files specific to Atmel AVR32 AP CPUs
        Atmel AVR32 AP CPUs专用的文件
      • blackfin Files specific to Analog Devices Blackfin CPUs
        Analog Devices Blackfin CPUs专用的文件
      • i386 Files specific to i386 CPUs
        i386 CPUs专用的文件
      • ixp Files specific to Intel XScale IXP CPUs
        Intel XScale IXP CPUs专用的文件
      • leon2 Files specific to Gaisler LEON2 SPARC CPU
        Gaisler LEON2 SPARC CPU 专用的文件
      • leon3 Files specific to Gaisler LEON3 SPARC CPU
        Gaisler LEON3 SPARC CPU 专用的文件
      • mcf52x2 Files specific to Freescale ColdFire MCF52x2 CPUs
        Freescale ColdFire MCF52x2 CPUs 专用的文件
      • mcf5227x Files specific to Freescale ColdFire MCF5227x CPUs
        Freescale ColdFire MCF5227x CPUs 专用的文件
      • mcf532x Files specific to Freescale ColdFire MCF5329 CPUs
        Freescale ColdFire MCF5329 CPUs 专用的文件
      • mcf5445x Files specific to Freescale ColdFire MCF5445x CPUs
        Freescale ColdFire MCF5445x CPUs 专用的文件
      • mcf547x_8x Files specific to Freescale ColdFire MCF547x_8x CPUs
        Freescale ColdFire MCF547x_8x CPUs 专用的文件
      • mips Files specific to MIPS CPUs
        MIPS CPUs 专用的文件
      • mpc5xx Files specific to Freescale MPC5xx CPUs
        Freescale MPC5xx CPUs 专用的文件
      • mpc5xxx Files specific to Freescale MPC5xxx CPUs
      • mpc8xx Files specific to Freescale MPC8xx CPUs
      • mpc8220 Files specific to Freescale MPC8220 CPUs
      • mpc824x Files specific to Freescale MPC824x CPUs
      • mpc8260 Files specific to Freescale MPC8260 CPUs
      • mpc85xx Files specific to Freescale MPC85xx CPUs
      • nios Files specific to Altera NIOS CPUs
      • nios2 Files specific to Altera Nios-II CPUs
      • ppc4xx Files specific to AMCC PowerPC 4xx CPUs
      • pxa Files specific to Intel XScale PXA CPUs
      • s3c44b0 Files specific to Samsung S3C44B0 CPUs
      • sa1100 Files specific to Intel StrongARM SA1100 CPUs
    • disk Code for disk drive partition handling
      驱动磁盘分区的代码
    • doc Documentation (don’t expect too much)
      文档(不要给予太多)
    • drivers Commonly used device drivers
      通用的设备驱动程序
    • examples Example code for standalone applications, etc.
      一些单独的应用程序代码
    • fs Filesystem code (cramfs, ext2, jffs2, etc.)
      文件系统代码(cramfs,ext2,jffs2,etc.)
    • include Header Files
      头文件
    • lib_arm Files generic to ARM architecture
      ARM架构类的文件
    • lib_avr32 Files generic to AVR32 architecture
    • lib_blackfin Files generic to Blackfin architecture
    • lib_generic Files generic to all architectures
    • lib_i386 Files generic to i386 architecture
    • lib_m68k Files generic to m68k architecture
    • lib_microblaze Files generic to microblaze architecture
    • lib_mips Files generic to MIPS architecture
    • lib_nios Files generic to NIOS architecture
    • lib_nios2 Files generic to NIOS2 architecture
    • lib_ppc Files generic to PowerPC architecture
    • lib_sh Files generic to SH architecture
    • lib_sparc Files generic to SPARC architecture
    • libfdt Library files to support flattened device trees
    • net Networking code
      网络相关代码
    • post Power On Self Test

    • rtc Real Time Clock drivers
      实时时钟驱动

    • tools Tools to build S-Record or U-Boot images, etc.
      构建uboot的工具

    Software Configuration:

    软件配置:

    Configuration is usually done using C preprocessor defines; the rationale behind that is to avoid dead code whenever possible.
    通常用C预处理器来定义配置,这样做的基本原理是无论何时都能避免引入死亡代码。
    There are two classes of configuration variables:
    这里有两个经典的配置变量:
    * Configuration OPTIONS: These are selectable by the user and have names beginning with
    “CONFIG_”.
    配置 OPTIONS: 它是可用被用户选择,以 CONFIG_ 开头

    • Configuration SETTINGS: These depend on the hardware etc. and should not be meddled with if you don’t know what you’re doing; they have names beginning with “CONFIG_SYS_”.
      配置 SETTINGS:这些是硬件依赖的,如果你不知道自己在干什么,最好不要修改他。 以CONFIG_SYS_开头命名。

    Later we will add a configuration tool - probably similar to or even identical to what’s used for the Linux kernel. Right now, we have to do the configuration by hand, which means creating some symbolic links and editing some configuration files. We use the TQM8xxL boards as an example here.
    以后我们会添加一些配置工具,尽可能地和配置配置内核相似甚至相同。但是现在,我们不得不手动配置,这意味着会创建一些新的符号链接以及编辑一些配置文件。在这里,我们以TQM8xxL开发板为例:
    Selection of Processor Architecture and Board Type:

    选择处理器架构和开发板类型:

    For all supported boards there are ready-to-use default configurations available; just type
    “make _config”.
    所有支持的开发板都一个默认的配置变量:make _config.
    Example: For a TQM823L module type:
    例如:对于 TQM823L 模块类型:
    cd u-boot
    make TQM823L_config
    For the Cogent platform, you need to specify the CPU type as well; e.g. “make cogent_mpc8xx_config”. And also configure the cogent directory according to the instructions in cogent/README.
    对于一些大众平台,你需要具体说明cpu的类型,比如:make cogent_mpc8xxx_config. 你需要根据cogent/README文件里面的说明来配置 cogent 目录。

    Configuration Options:

    配置选项:

    Configuration depends on the combination of board and CPU type; all such information is kept in a configuration file “include/configs/.h”.
    所有的配置选项都依赖于开发板和CPU所关联的模块,所有的配置信息都保存在 /include/configs/.h 中。
    Example: For a TQM823L module, all configuration settings are in “include/configs/TQM823L.h”.
    比如:对于 TQM823L 开发板模块,所有配置设置都在 “include/configs/TQM823L.h”.

    Many of the options are named exactly as the corresponding Linux kernel configuration options. The intention is to make it easier to build a config tool - later.
    大部分u-boot配置选项的命名和Linux 内核配置严格上是相对应的。这样做的目的是为以后使得构建配置工具变得更加容易。

    接下去的内容待续………

    展开全文
  • u-boot-2014.10编译u-boot

    2015-01-22 23:44:35
    u-boot-2014.10编译u-boot

    1. /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

    解决:yum install glibc.i686

    2. 顶层Makefile会读取如下文件:

    Reading makefile '/home/feng/work/projects/UBoot/scripts/Kbuild.include' (search path) (no ~ expansion)...
    Reading makefile 'include/config/auto.conf' (search path) (don't care) (no ~ expansion)...
    Reading makefile 'include/config/auto.conf.cmd' (search path) (don't care) (no ~ expansion)...
    Reading makefile 'include/autoconf.mk' (search path) (don't care) (no ~ expansion)...
    Reading makefile 'include/autoconf.mk.dep' (search path) (don't care) (no ~ expansion)...
    Reading makefile '/home/feng/work/projects/UBoot/scripts/Makefile.extrawarn' (search path) (no ~ expansion)...

       其中include/config/auto.conf会被更新,更新后,Makefile会重启。

    3. 顶层Makefile重启后,会编译如下目标:

    第一级:

    all:  $(ALL-y)  

    //ALL-y=

    checkarmreloc u-boot.srec u-boot.bin System.map binary_size_check u-boot.dtb u-boot-dtb.bin

    第二级:

    checkarmreloc: u-boot

    u-boot.hex u-boot.srec: u-boot FORCE

    u-boot.bin: u-boot FORCE

    System.map: u-boot

    binary_size_check: u-boot.bin FORCE

    u-boot.dtb: dts/dt.dtb

    u-boot-dtb.bin: u-boot.bin dts/dt.dtb FORCE

    dtbs dts/dt.dtb: checkdtc u-boot

    第三级:

    u-boot:$(u-boot-init) $(u-boot-main) u-boot.lds 

    //u-boot-init=arch/arm/cpu/armv7/start.o

    //u-boot-main= 

    arch/arm/cpu/built-in.o arch/arm/cpu/armv7/built-in.o arch/arm/cpu/armv7/exynos/built-in.o arch/arm/lib/built-in.o board/samsung/common/built-in.o board/samsung/smdkv310/built-in.o common/built-in.o disk/built-in.o drivers/built-in.o drivers/dma/built-in.o drivers/gpio/built-in.o drivers/i2c/built-in.o drivers/mmc/built-in.o drivers/mtd/built-in.o drivers/mtd/onenand/built-in.o drivers/mtd/spi/built-in.o drivers/net/built-in.o drivers/net/phy/built-in.o drivers/pci/built-in.o drivers/power/built-in.o drivers/power/battery/built-in.o drivers/power/fuel_gauge/built-in.o drivers/power/mfd/built-in.o drivers/power/pmic/built-in.o drivers/serial/built-in.o drivers/spi/built-in.o drivers/usb/eth/built-in.o drivers/usb/gadget/built-in.o drivers/usb/host/built-in.o drivers/usb/musb-new/built-in.o drivers/usb/musb/built-in.o drivers/usb/phy/built-in.o drivers/usb/ulpi/built-in.o fs/built-in.o lib/built-in.o lib/libfdt/built-in.o net/built-in.o test/built-in.o test/dm/built-in.o

    checkdtc:

    第四级:

    $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) 

    //u-boot-dirs=

    arch/arm/cpu arch/arm/cpu/armv7 arch/arm/cpu/armv7/exynos arch/arm/lib board/samsung/common board/samsung/smdkv310 common disk drivers drivers/dma drivers/gpio drivers/i2c drivers/mmc drivers/mtd drivers/mtd/onenand drivers/mtd/spi drivers/net drivers/net/phy drivers/pci drivers/power drivers/power/battery drivers/power/fuel_gauge drivers/power/mfd drivers/power/pmic drivers/serial drivers/spi drivers/usb/eth drivers/usb/gadget drivers/usb/host drivers/usb/musb-new drivers/usb/musb drivers/usb/phy drivers/usb/ulpi fs lib lib/libfdt net test test/dm tools examples

    u-boot.lds: $(LDSCRIPT) prepare FORCE

    //LDSCRIPT=/home/feng/work/projects/UBoot/arch/arm/cpu/u-boot.lds

    第五级:

    $(u-boot-dirs): prepare scripts

    $(filter-out tools, $(u-boot-dirs)): tools

    tools: prepare

    prepare: prepare0

    prepare0: archprepare FORCE

    archprepare: prepare1 scripts_basic

    prepare1: prepare2 $(version_h) $(timestamp_h) include/config/auto.conf

    //version_h=include/generated/version_autogenerated.h

    //timestamp_h=include/generated/timestamp_autogenerated.h

    prepare2: prepare3 outputmakefile

    prepare3: include/config/uboot.release

    第六级:

    scripts: ;

    $(version_h): include/config/uboot.release FORCE

    $(timestamp_h): $(srctree)/Makefile FORCE

    include/config/uboot.release: include/config/auto.conf FORCE

    include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd

    //KCONFIG_CONFIG=.config

    3. 具体的编译过程

    • 根据include/config/%.conf的规则,调用:

    make -f /home/feng/work/projects/UBoot/Makefile silentoldconfig。

    根据silentoldconfig的规则,调用:

    /bin/sh /home/feng/work/projects/UBoot/scripts/multiconfig.sh silentoldconfig。

    multiconfig.sh -->

    do_silentoldconfig --> 

    run_make_config silentoldconfig &

    autoconf include include/autoconf.mk include/autoconf.mk.dep。 

    run_make_config 会用Makefile.build 编译目标,在创建silentoldconfig过程中,会创建include/config和include/generated两个目录,并会调用conf进行处理,命令为:

    scripts/kconfig/conf --silentoldconfig Kconfig

    autoconf会使用Makefile.autoconf编译include/autoconf.mk和include/autoconf.mk.dep。

    至此include/config/auto.conf编译完成。include/config/auto.conf更新后,顶层Makefile会重启,重启后,上述的过程还会重复,只是不会更新任何文件了。

    • 编译include/config/uboot.release --> prepare3 --> prepare2 --> prepare1 --> archprepare -->prepare0,编译prepare0时,make命令为:make -f scripts/Makefile.build obj=.。也就是编译顶层目录,Kbuild优先于Makefile,所以使用Kbuild进行编译,目标为:include/generated/generic-asm-offsets.h和include/generated/asm-offsets.h
    • 编译tools,目标为:tools/gen_eth_addr tools/img2srec tools/mkenvimage tools/dumpimage tools/mkimage tools/proftool
    • 编译u-boot-dirs中的所有目录。这个过程本身没什么好说的。但是在编译过程中,会看到许多:

    Considering target file 'test/dm/built-in.o'.

    ...

    Pruning file 'arch/arm/cpu'

    ...

    Prerequisite 'arch/arm/cpu' of target 'test/dm/built-in.o' does not exist.

    ...

    Must remake target 'test/dm/built-in.o'.
    Successfully remade target file 'test/dm/built-in.o'.

    这是因为规则$(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) 。例如,'test/dm/built-in.o属于u-boot-main,依据该规则,它依赖于u-boot-dirs,因此所有属于u-boot-dirs的目录都会被Pruning,并且提示目录不存在(因为u-boot-dirs定义为伪目标)。注意该规则是没有实际的命令,在这种情况下,make会忽略依赖文件不存在的实际情况,运行分号(;)代表的空语句,并认为目标编译成功。而目标test/dm/built-in.o其实在编译u-boot-dirs的时候已经编译成功了。

    • 编译dts/dt.dtb比较麻烦,还会进入到arch目录,这之后的编译都相对简单。



    展开全文
  • u-boot分析 二 (u-boot目录结构)

    千次阅读 2016-03-20 09:31:23
    u-boot分析 二继前一启动篇,此博文目的:学习u-boot的目录结构,从code架构上对u-boot有一个整体的把握和了解。一、学习u-boot,得问,什么是u-boot?u-boot是一段开源的程序。Universal Boot Loader,普遍的引导...
  • 1、u-boot中的环境变量 (1) 在u-boot中可以设置这些东西这些东西会在哪里,我们可以修改代码,让这些参数存在某个地方上。u-boot启动时,会首先读取参数,然后判断是否有效,有效就用,无效就用默认参数。默认参数...
  • 什么是 U-Boot 熟悉嵌入式开发的应该都听过它,U-boot ...这一篇主要讲解如何从无到有运行 U-Boot,关于 U-Boot 引导 Linux 的部分放在另外一篇文章讲解。 U-Boot 之前的版本以版本号命名如:0.1.0, 0.2.0 这几年...
  • u-bootu-boot.bin的生成

    千次阅读 2017-01-10 10:04:41
    这里的u-boot.bin指的是不包含SPL的stage2部分的代码. 它会被SPL搬移到RAM的某个地址处开始运行. 本篇下面提到的u-boot.bin时, 也是指的这个概念.   u-boot.bin的文件组成 当我们在uboot下执行make命令的时候, ...
  •  对于此版本之前的工程结构,网上文章很多,最多的就是 u-boot 1.1.6 u-boot 1.3.4 以及 u-boot 2009.03。 从u-boot 2010.09开始,工程结构发和了一些变化。变化,使得结构更清晰,更简洁,修改起来也更容易。 ...
  • u-boot发展至今,版本已经很多,随着版本的升级,框架越来越复杂,不过其启动流程的核心过程都是一样的,本博文以当前最新u-boot-2017.05为例分析其启动过程,主要以框架为主。 u-boot的启动过程可以分为两个阶段,...
  • 硬件平台:tq2440开发环境:Ubuntu-3.11u-boot下载地址:http://ftp.denx.de/pub/u-boot/下载最新版本:u-boot-2014.10.tar.bz2在用户根目录下创建目录结构tq2440/{src/bootloader/u-boo
  • 参考《韦东山1期视频》第09课第1节 u-boot分析之编译体验.WMV U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。 U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其...
  • u-boot分析 三 (u-boot.lds脚本)

    万次阅读 2016-03-20 21:12:26
    u-boot分析 三 (u-boot.lds脚本)目的, 了解链接器用到的脚本文件u-boot.lds。在开始这篇博文之前,需要先了解一些GNU linker script的基本知识,可以参考博主的另外一篇分享《GNU linker script,ld script,GNU...
  • U-boot分析与移植(5)----U-boot移植

    千次阅读 2012-03-27 19:34:37
    mini2440之U-boot移植详细手册-20100419.pdf 移植u-boot-1.1.6到TQ2440文档.pdf 移植u-boot-1.3.4到GT2440(第二版)-guolele出品.pdf ARM79出品-u-boot移植手册.pdf   移植一个功能简单的U-boot并不难 我的...
  • U-BOOT移植过程详解: u-boot.bin

    万次阅读 2015-04-02 19:48:19
    U-BOOT移植过程详解: u-boot.bin    分类:  U-BOOT移植 2014-01-28 15:42  540人阅读  评论(0)  收藏  举报  u-boot 目录(?)[+] 申明u-bootbin u-bootbin的文件组成代码
  • 本文基于u-boot树莓派3代配置过程进行分析,环境如下:  编译环境:Ubuntu 14.04 LTS  编译工具:arm-Linux-gnueabi-gcc  代码版本:u-boot v2016.09  配置文件:rpi_3_32b_defconfig u-boot的编译跟kernel编译...
  • u-boot在2017版本中加入了对Cortex-M系列内核的支持,正好手上有个h7的开发板,所以拿来试试,学习一下uboot。 一 u-boot版本选择 其实开始选用最早支持的版本比较好,因为新版本中加了更多的单板支持,有些版本之间...
  • (一)Nand Flash上启动u-boot 在第一个博客NOR Flash上启动u-bootu-boot.bin是不支持用Nand Flash启动,至于为什么呢? 我这里就不啰嗦了,直接进入我们的正题,想知道有兴趣的朋友可以百度一下。 1、增加...
  • 继ok6410 u-boot-2012.04.01移植六后,开发板已支持MLC NAND、DM9000等。但还需要完善比如环境变量、mtdpart分区、裁剪、制作补丁等。下面的工作就是完善移植的u-boot。 开发环境: 系统:ubuntu 10.04.4 单板:ok...
  • u-boot分析 五 (u-boot如何向kernel传启动参数)u-boot分析系列文章,前面的文章中,咱们已经分析了: u-boot目录结构, u-boot.lds脚本, 以及start.S程序入口(stage1)。 按理说,应该接着分析u-boot启动程序的...
  • U-boot

    2011-11-12 21:06:23
    U-boot启动分析 16) 补丁制作和测试 [root@samfei u-boot]# make distclean [root@samfei 44b0]# mv u-boot u-boot.wx [root@samfei 44b0]# cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/u-boot ...
  • 1、编译最终要生成的文件是$(obj)u-boot.bin文件: ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND) all:$(ALL) $(obj)u-boot.bin是最终目标“all”的依赖文件...
  • 作为入门,在大概了解一下U-Boot之后,决定自己制作一个U-Boot的命令菜单。
  • 移植u-boot-2013.04-rc1 到OK6410上的时候, 编译的时候报错 “arm-linux-ld:u-boot.lds:19: syntax error” 解决办法如下: 由于, u-boot.lds文件是 u-boot-nand.lds 的链接文件,那我们就去看看这个文件 进入目录...
  • 最近公司项目用到了xilinx的zynq7000 soc,开发方式有所不同,驱动的数据都是通过设备树来提供,以前没接触过,所以想系统的学习一下相关的内容,但是手头只有一块三星的s5pv210开发板,使用的u-boot和linux系统不...
  • U-Boot编译——System.map与u-boot.map

    千次阅读 2017-06-25 18:15:08
    U-Boot编译之后会在其顶级目录中生成System.map和u-boot.map两个文件: 1 System.map  该文件按链接地址由小到大的顺序列出了所有符号:u-boot-2010.03配置编译smdk2410所生成的System.map文件开头部分...
  • U-Boot源码——u-boot.lds

    2016-05-14 09:02:57
    在学习U-Boot源码时遇到了u-boot.lds文件[1]p256,网上查询后知道它是连接器ld的连接脚本[2]: Definition Script written for ld, a Linux command line utility used for structuring the format of Linux ...
  • U-Boot

    2011-10-20 14:05:42
    U-Boot还没有实现网络功能时,常常需要调试,而每次都用JTAG把u-boot.bin烧写到Flash是一件费时费力的事情,因此调试的时候最好让U-Boot从SDRAM里启动。    如果不出差错,一般情况下,只要U-Boot跑起来了,它...
  • U-Boot移植——System.map与u-boot.map

    千次阅读 2016-05-14 23:33:06
    U-Boot编译之后会在其顶级目录中生成System.map和u-boot.map两个文件: 1 System.map 该文件按链接地址由小到大的顺序列出了所有符号:u-boot-2010.03配置编译smdk2410所生成的System.map文件开头部分如下: 33f...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,256
精华内容 9,702
关键字:

u-boot