1、u-boot-1.1.6的目录结构。
U-boot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、 x86、ARM、NIOS、XScale等诸多常用系列的处理器。
#mv u-boot-1.1.6 uboot
#tree -L 1
|--board|--common|--cpu|--disk|--doc|--drivers|--dtt|--examples|--fs|--include|--lib_arm|--lib_generic|--lib_i386|--lib_m68k|--lib_microblaze|--lib_mips|--lib_nios|--lib_nios2|--lib_ppc|--net|--post|--rtc|--tools
1. board:和一些已有开发板有关的文件. 每一个开发板都以一个子目录出现在当前目录中,比如说:SMDK2410,子目录中存放与开发板相关的配置文件.
2. common:实现u-boot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是cmd_bootm.c。
3. cpu:与特定CPU架构相关目录,每一款Uboot下支持的CPU在该目录下对应一个子目录,比如有子目录arm920t等。
4. disk:对磁盘的支持。
5. doc:文档目录。U-boot有非常完善的文档,推荐大家参考阅读。
6. drivers:U-boot支持的设备驱动程序都放在该目录,比如各种网卡、支持CFI的Flash、串口和USB等。
7. fs: 支持的文件系统,U-boot现在支持cramfs、fat、fdos、jffs2和registerfs。
8. include:U-boot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。该目录下configs目录有与开发板相关的配置头文件,如smdk2410.h。该目录下的asm目录有与CPU体系结构相关的头文件,asm对应的是asmarm.
9. lib_xxxx: 与体系结构相关的库文件。如与ARM相关的库放在lib_arm中。
10. net:与网络协议栈相关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现。
11. tools:生成U-boot的工具,如:mkimage, crc等等。
1、u-boot启动流程
uboot/cpu/XXX/Start.S _start:
uboot/cpu/XXX/Start.S reset:
uboot/cpu/XXX/Start.S cpu_init_crit:
uboot/board/yyy/lowlevel_init.S lowlevel_init:
uboot/cpu/XXX/Start.S relocate:
uboot/cpu/XXX/Start.S _start_armboot:
uboot/cpu/XXX/Start.S start_armboot()
uboot/common/main.c main_loop()
注释:XXX:板子上具体的CPU型号,如arm920t。
yyy:开发板的型号,如smdk2410。
待续...
阅读(1762) | 评论(0) | 转发(0) |