目录

1.uboot源码结构

1.1uboot源码获取

1.2 uboot的特点

1.3 uboot源码结构

2、uboot配置与编译

2.1uboot配置

2.2 uboot编译

总结:

uboot


1.uboot源码结构

1.1uboot源码获取

uboot是一个开源的软件。开源有两层含义。一是可以免费用、二是开放源代码

uboot源码下载 http://www.denx.de/wiki/U-Boot/

uboot版本命名:

      前期:uboot-1.2.3

      现在:uboot-2008.01

      08年以前uboot是1.2.几1.3.几这样命名08年开始以年份和月份命名。它的更新是非常频繁的。

uboot版本选择

    支持对应的硬件平台

    相对成熟的版本(资料多)

    每当发布新的芯片后uboot就会增加对应芯片的版本。一般和处理器同一时期发布的uboot版本对处理器的支持较好。

1.2 uboot的特点

 代码结构清晰

 支持丰富的处理器与开发板,易于移植

 支持丰富的用户命令

 支持丰富的网络协议

 支持丰富的文件系统

 支持丰富的设备驱动

 更新活跃、用户较多、资料丰富

 开放源代码

 较高的稳定性

 不具有通用性(不同的处理器、开发板uboot不可通用)

1.3 uboot源码结构

   由于uboot的源码特别多所以是由很多个文件夹组成的,同类型的源码放到一个文件夹里

平台相关代码

    即与CPU架构或开发板硬件相关的源码,硬件的改动对应的代码也需要进行修改

    arch:与CPU架构相关的源代码

    board:与开发板相关的源代码,包含各种官方评估板对应的源码

    api: 这个目录下有很多的用户接口 

    arch: 目录下存储的是架构

    board:开发板样例

    boards.cfg:这个文件是配置信息

    common:这下面全是uboot命令的.c文件

    config.mk:也是一个配置文件

    COPYING:这是版权文件虽然是开源软件但是也不能乱用

    CREDITS:这里是代码贡献者名单包括他们的邮箱

   disk:磁盘操作的命令文件夹

    readme:一个说明书或者说帮助文档,这个说明书有5000多行都是一些介绍性的的东西。

    dos:这里是详细的说明书

    drivers:这里面全是驱动文件 

    dts:设备树文件夹,后面学习驱动时在详细学习。

    examples:里面是例程,在不会写的时候可以参考一下

     fs:文件系统,这里面每个文件夹内都是文件系统的源代码和makefile文件这里面ext4是嵌入式领域常用的文件系统。

    include:这里是头文件

    lib:这里是库

    makefile:方便我们编译uboot镜像。它这个makefile是层层调用的每个文件夹下都有,使用make命令后总的makefile文件会调用每层的马克file文件来共同编译出uboot镜像。

    post:上电自检程序

    tools:工具

    net:网络文件夹,这里面是uboot支持的一些网络。

2、uboot配置与编译

为了保证uboot适用所有的开发板,uboot把所有的开发板都写出来了,需要哪个编译哪个

2.1uboot配置

指定当前使用的硬件平台

   make _config(咱们用的是make fs6818_config)

  注1:为当前使用的开发板的名字

  注2:执行该命令的前提是uboot源码支持该开发板

  注3:该命令必须在uboot源码的顶层目录下执行

hq@Ubuntu:~/fs6818_uboot/u-boot-2014.07$ make fs6818_config
Configuring for fs6818 board...

指定编译uboot源码使用的编译器

   $ vi Makefile     进入Makefile将以下内容

198 ifeq ($(HOSTARCH),$(ARCH))
199 CROSS_COMPILE ?=                                      
200 endif

修改为

198 ifeq (arm,arm)
199 CROSS_COMPILE ?= arm-none-linux-gnueabi- 
200 endif

2.2 uboot编译

1.编译uboot

  make   / make all(编译的时间比较长)

  注1:该命令必须在uboot源码的顶层目录下执行

  注2:该命令执行后在uboot源码顶层目录下生成u-boot.bin

 编译需要大概一分钟。编译完多了几个文件,多了一个system.map文件和那些u-boot开头的。

   make在编译的过程中先将.c和.s编译成.o文件。最后把他们链接(ld)成一个可执行文件绿色的那个u-boot。他是elf格式的。我们肯定不能把他刷到板子上。不过在这之后它还会用objcopy把利用elf文件生成bin文件。这里还有一个srec文件这是符合摩托罗拉的二进制文件。

2.清除编译过程中生成的中间文件

  make clean

  make distclean

  注1:该命令必须在uboot源码的顶层目录下执行

   这些中间文件就是.o文件。执行make clean只是清除这些.o文件。执行下面那个会把生成的可执行文件和二进制文件也删除。恢复刚下载的源码状态。

编译问题解决

Make的时候可能出现上面问题,出现上面问题,如下方法解决:

总结:

uboot

   1、将uboot放到虚拟机中,因为交叉编译工具安装在虚拟机中。

   2、解压并进入顶层目录

   3、make  fs6818_config

   4、编译:make / make all

   5、测试:可以通过tftp下载到开发板的内存-->内存移到EMMC

                    可以做SD卡。

  6、开机启动uboot-->到打印倒计时即可

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐