U-BOOT移植过程详解: 开题

申明

  本着学习交流的原则, 将个人移植u-boot的过程做一个记录. 文章参考了csdn blog里面的很多内容, 有的已经记不得出处了, 只好把当时的摘要直接贴出来. 如果冒犯, 还请见谅. 如有侵权, 请与我邮件联系. 谢谢!


U-BOOT基础知识

u-boot 简介

U-boot全称UniversalBootLoader,即通用bootloader。它是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序,UBoot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD,VxWorks,QNX,RTEMS,ARTOS,LynxOS嵌入式操作系统。UBoot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器

官网:
  • Code: http://git.denx.de/?p=u-boot.git;a=summary
  • Wiki:   http://www.denx.de/wiki/U-Boot
在编写改篇博客时, u-boot官方发布的最新稳定版本是2013.10; 因为本文将基于该版本进行移植.

U-boot代码结构介绍

解压后我们看看新版本U-boot的代码结构,如图1所示。那么我们就来逐一介绍一下各个目录的功能和内容。如果需要更详细的目录介绍信息,请参阅U-boot根目录下的README文件。(以下内容为Copy部分)

U-BOOT移植过程详解: 开题_第1张图片

1.api:一些系统调用,包含有显示用的api,网络部分的api,和一些跟平台相关但独立出来的api。是一个扩展应用的独立的api库。

2.arch与特定CPU架构相关目录,每一款Uboot下支持的CPU在该目录下对应一个子目录,比如有子目录arm就是我们开发板上使用的硬件体系目录。而arch/arm/目录下的cpu目录就是对应ARM体系的cpu目录,里边的armv7就是我们此次移植的重点对象,s5pv210就是armv7架构的cpu

3.board:和一些已有开发板有关的文件.每一个开发板都以一个子目录出现在当前目录中。例如,smdkc100就是官方以s5pc100为核心的开发板的相关文件。该目录和上一个arch目录是严重依赖硬件平台的,移植之初要改动最多的也是这两个目录。

4.common目录:主要实现uboot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是cmd_bootm.c

5.disk对磁盘的支持。

6.doc文档目录。Uboot的文档还是比较完善的,推荐大家参考阅读。

7.driversUboot支持的设备驱动程序都放在该目录,比如各种网卡、支持CFIFlash、串口和USB

8. dtsu-bootreadme文件中获取到的信息,我的理解是dts = device trees ,有兴趣的可以参考u-bootreadme文件中对

             CONFIG_OF_IDE_FIXUPCONFIG_OF_EMBED这两个宏的描述。

9.  examples一些独立运行的应用程序的例子。

10. fs支持文件系统的文件,u-boot现在支持cramfsfatfdosjffs2yaffsregisterfs

11. Include头文件,还有对各种硬件平台支持的会变文件,系统的配置文件和对文件系统支持的文件。

12. lib通用的多功能库函数实现。例如字符串的一些常用函数就在string.c中实现。

13. nand_spl支持从nand flash启动,但支持的cpu的种类也不是很多。

14.net与网络有关的代码,BOOTP协议、TFTP协议RARP协议和NFS文件系统的实现。

15. post上电自检程序。

16. spl镜像分离的实现,一般用在SD卡启动。

16. test测试命令的实现,测试系统是否运行正常时使用。

17. tools创建S-Record格式文件和U-BOOTimages的工具。

18. boards.cfg目标板配置参数文件,里边有很多种目标板的配置参数。

19. config.mk这个文件里面主要定义了交叉编译器及选项和编译规则。

20. COPYING软件的使用条款声明。

21. CREDITSU-boot开发者的联系方式。

22. helper.mk生成u-boot.list文件,文件包含程序编译对象信息等。

23. MAINTAINERS各个硬件架构软件维护者的联系方式。

24. MAKEALL创建多个目标板的配置,一般用不到。

25. MakeflieU-bootmakefile,主要用来编译链接并生成U-boot镜像。

26. mkconfig建立工程需要的一些软链接并创建配置文件config.h

27. READMEU-boot的介绍信息,最好能花点时间看看,多了解一些关于U-boot的信息。

28. rules.mkU-boot工程编译依赖规则。

29.snapshot.commitU-boot序列号和发布时间的快照。

u-boot中的几个重要文件

顶层Makefile

${TOPDIR}/Makefile: 阅读Makefile, 可以理解u-boot的代码是如何被编译链接的以及哪些文件会被编译进来, 最终如何生成u-boot.bin等其他必要的文件.
  • Makefile详解, 这篇文件的作者对Makefile做了很详细的解释, 对于初次接触的人来说, 可能不太好理解, 但是解释很全面, 可做查阅使用: http://blog.csdn.net/zsy2020314/article/details/9309995
  • Makefile概解, 这篇文件的作者对Makefile里面的一些定义, 结合具体的处理器平台, 做了比较通俗的解释, 较好理解, 适合快速阅读, 了解概况: http://blog.csdn.net/xieweihua2012/article/details/8272598 (一 二 三 3篇连载文章)
  • Linux Makefile的编写规则, 详细说明写Makefile时候的语法规则, 可做查阅使用: http://wenku.baidu.com/view/e4c766293169a4517723a39e.html 

mkconfig, boards.cfg

  • mkconfig, 它是一个工具, 用来解析用户配置uboot时的参数. 理解了mkconfig, 就可以知道如何在官方uboot代码的基础上添加一块新板子的支持:  http://blog.csdn.net/xieweihua2012/article/details/8252423 (连载的2篇文章)

你可能感兴趣的:(u-boot)