U-BOOT-1.1.6-note-文件结构分析注释

U-BOOT-1.1.6文件结构分析注释


U-BOOT-1.1.6可在denx的git仓库中下载: http://git.denx.de/?p=u-boot.git;a=summary


写作注释:

  • 使用斜体字表示文件名
  • 使用黑体字表示目录名

下面以三星SMDK2410开发板为例分析u-boot-1.1.6**主要项目结构:

该开发板参数:

BOARDNAME=SMDK2410, ARCH=arm,CPU=ARM920t, BOARD=SMDK2410, VENDOR=NULL, SOC=S3C24X0

完整文件结构:

  • u-boot-1.1.6 >
    • board >
      • smdk2410 >
        • config.mk
        • flash.c
        • lowlevel_init.s
        • Makefile
        • smdk2410.c
        • u-boot.lds
      • (*BOARD) >
    • common >
      • command.c
      • main.c
      • Makefile
      • console.c
      • flash.c
      • usb.c
      • cmd_*.c
      • env_*.c
    • cpu >
      • arm920t >
        • s3c24x0 >
          • serial.c
          • interrupts.c
          • i2c.c
          • *.c
        • config.mk
        • cpu.c
        • interrupts.c
        • start.s
        • Makefile
        • (*SOC) >
    • disk >
    • doc >
      • README.*
    • drivers >
      • nand >
        • nand.c
        • Makefile
        • nand_*.c
    • * nand_legacy >
        • nand_legacy.c
        • Makefile
      • device*.c
      • deviec*.h
    • dtt >
    • examples >
    • fs >
      • ext2 >
      • cramfs >
      • jffs2 >
      • fs* >
      • Makefile
    • include >
      • asm-arm >
        • arch-s3c24x0 >
          • memory.h
        • proc-armv >
        • arch-* >
      • configs >
        • smdk2410.h
        • (BOARD*).h
      • Makefile
    • lib_generic >
    • lib_arm >
      • board.c
      • cache.c
      • armlinux.c
      • Makefile
    • lib_<*ARCH>
    • nand_spl >
    • net >
    • post >
    • rtc >
    • tools >
    • Makefile
    • config.mk
    • arm_config.mk
    • (*ARCH)_config.mk
    • mkconfig
    • rules.mk
    • readme.mk
    • COPYING
    • CREDITS
    • CHANGELOG
    • CHANGELOG-before-U-Boot-1.1.5

分别注释几个主要文件

board 目录

  • u-boot-1.1.6 >
    • board >
      • smdk2410 >
        • config.mk
        • flash.c
        • lowlevel_init.s
        • Makefile
        • smdk2410.c
        • u-boot.lds
      • (*BOARD) >

board目录主要包含特定于开发板的文件,其中config.mk中定义了代码段的链接地址:

25: TEXT_BASE = 0X33F80000

u-boot.lds 中定了以具体的链接规则, lowlevel_init.s中负责SDRAM的初始化,flash.c的底层驱动等,并含有负责本级目录下编译的Makefile文件,将本目录下需要被编译的项目添加进COBJS、SOBJS目标,指定依赖项,定义当前目录下的clean,distclean目标,后续的各个目录下的Makefile文件所完成工作基本和这个相同,就不在挨个注释了。

common 目录

  • u-boot-1.1.6 >
    • common >
      • command.c
      • main.c
      • Makefile
      • console.c
      • flash.c
      • usb.c
      • cmd_*.c
      • env_*.c

common目录下为处理器开发板无关的通用上层指令,基本为对底层驱动的封装。指令处理函数cmd_*.c,环境变量的处理函数e*nv_*.c*,其中 command.c中可以根据宏U_BOOT_CMD()自定义u-boot的指令,main.c中定义了main_loop()函数。

cpu 目录

  • u-boot-1.1.6 >
    • cpu >
      • arm920t >
        • s3c24x0 >
          • serial.c
          • interrupts.c
          • i2c.c
          • *.c
        • config.mk
        • cpu.c
        • interrupts.c
        • start.s
        • Makefile
        • (*SOC) >

cpu目录下为与具体处理器体系结构,soc相关的文件。 针对smdk2410开发板,所用cpu为属于arm920t,外围的搭配外设构成了sop及片上系统,这个soc具体为s3c24x0型。

目录中start.s为整个程序的入口点,完成最初的系统初始化,针对具体的s3c24x0处理器,含有对应的一些外设的驱动函数。

drivers 目录

  • u-boot-1.1.6 >
    • drivers >
      • nand >
        • nand.c
        • Makefile
        • nand_*.c
      • nand_legacy >
        • nand_legacy.c
        • Makefile
      • device*.c
      • deviec*.h

drivers目录为各种通用驱动文件,基本上包含了全部的外围驱动,如网卡、USB、串口、LCD、Nand Flash等等。它们通过宏定义引用与具体开发板处理器相关的底层驱动。

include 目录

  • u-boot-1.1.6 >
    • include >
      • asm-arm >
        • arch-s3c24x0 >
          • memory.h
        • proc-armv >
        • arch-* >
      • configs >
        • smdk2410.h
        • (BOARD*).h
      • Makefile

include目录包含系统的配置文件与头文件,其中configs子目录下的smdk2410.h文件完成了对整个U-BOOT的功能的裁剪配置,子目录 asm-arm -> arch-s3c24x0 >下的memory.h 完成了对各段大小的配置。

lib_arm 目录

  • u-boot-1.1.6 >
    • lib_arm >
      • board.c
      • cache.c
      • armlinux.c
      • Makefile

lib_arm目录下为与处理器结构相关的一些初始化文件,比较重要的如board.c文件,在后面分析u-boot的启动流程时会用到其中的很多初始化函数。

tools 目录

  • u-boot-1.1.6 >
    • tools >

tools目录下包含了一些相关工具。

其他目录与文件

  • u-boot-1.1.6 >
    • doc >
      • README.*
    • dtt >
    • examples >
    • fs >
      • ext2 >
      • cramfs >
      • jffs2 >
      • fs* >
      • Makefile
    • lib_generic >
    • lib_<*ARCH>
    • nand_spl >
    • net >
    • post >
    • rtc >
    • Makefile
    • config.mk
    • arm_config.mk
    • (*ARCH)_config.mk
    • mkconfig
    • rules.mk
    • readme.mk
    • COPYING
    • CREDITS
    • CHANGELOG
    • CHANGELOG-before-U-Boot-1.1.5

Makefile负责整个项目的构建,mkconfig脚本根据Makefile中调用它是传入的参数来配置整个项目,config.mk对整个项目的编译工具链及编译选项进行配置,arm_config.mk针对具体arm架构进行更细的编译参数配置,rules.mk定义了对目标_depend的编译规则。具体编译过程可参考前一篇文章 U-BOOT-1.1.6编译过程分析

net下为支持各种网络协议的文件,post下为开发板的上电自检程序,rtc下为实时时钟的驱动文件,doc下为特定于各个开发板的README文件,dtt目录下包含数字温度传感器等驱动文件, fs目录下为文件系统, lib_generic目录下为通用的库函数,像printf函数等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值