首先来分析一下U-BOOT的源代码分布,然后再做分析。可惜不能贴图,不然会直观很多,下面只好一一介绍了。 1.头文件 头文件位于源码树下的include/下,其中各种主板的配置文件位于/include/configs/文件夹中,比如FADS860T主板的配置文件为/include/configs/FADS860T.h;目录/include/asm-ppc包括了一些比较底层的头文件,编译时会根据不同的配置与/include/configs/asm建立一个符号链接。 2.与目标板相关的代码 U-BOOT支持大多数比较常见的目标板,比如MOTOROLA的FADS板,一般来说,自己设计的主板和这些主板都是大同小异,差别不会太大。源代码树中board/下的每个文件夹对应一个或几个主板,例如,/board/fads目录对应的就是FADS板的源代码,主板上一些资源的初始化代码就在这个文件夹中(例如FLASH、SDRAM等)。 3.与CPU相关的代码 u-boot-0.2.0只支持PowerPC系列的主板,与CPU相关的代码位于源代码树下的CPU/下的各个目录中,例如ppc855、ppc860的代码就位于/cpu/mpc8xx/文件夹中。其中start.S是U-BOOT的入口代码,由汇编语言实现,是整个程序的入口。相应的,目录/cpu/mpc824x/对应的就是824x系列CPU的相关代码。 4.公共代码 除了与主板,CPU特性相关的代码外,剩下最主要的就是共用代码,位于/common/目录下面,U-BOOT的命令解析代码/common/command.c;U-BOOT环境变量处理代码environment.c等都位于该目录下。另外,PowerPC系列的主板初始化代码也是公用的,位于/lib_ppc/board.c中,在完成CPU的初始化之后,程序会跳到该文件执行主板的初始工作,与主板相关代码的执行都是在该文件中调用。 5.网络传输 网络传输代码位于/net/目录下面,arp.c ,bootp.c,eth.c,tftp.c等代码都在这里,以太网初始化、BOOTP和TFTP等功能的实现也是由该目录下的代码完成。 6.Makefile文件 Makefile文件位于U-BOOT的根目录下,是整个编译的控制主文件,后面小节会讲到如何修改该文件以实现针对自己主板的编译控制。 7.关键的驱动程序代码 U-BOOT中几个比较关键的外设驱动包括串口的初始化,以太网口驱动,SDRAM初始化,FLASH初始化,以FADS板为例,分别位于: 串口: /cpu/mpc8xx/serial.c SDRAM: /board/fads/fads.c FLASH: /board/fads/flash.c ETHERNET: /cpu/mpc8xx/scc.c FAST ETHERNET: /cpu/mpc8xx/fec.c 在移植的过程中这些都是需要修改的代码。