分类: LINUX
2008-11-21 11:52:40
注意:
以下是我现在的理解,不保证正确,毕竟初学uboot不久。
CPU目录
根据不同体系结构分了不同目录,我用的 920T 内核的ARM,所以只需要进入 920T目录,然后目录下面包含interrupt ,cpu等,920T内核的共性,也就是说凡是用920T内核,无论是哪家公司生产的920T内核ARM都通用。然后目录下面又有不同的SOC分开,通俗点说就是,分不同的厂家,9200 是 atmel 的,s
Cpu.c 主要是对MMU cache的操作
Interrupt.c 异常向量入口
Start.S 第一阶段的汇编代码
/s
Interrupt.c 产生时钟中断,包括时钟初始化,产生时钟节拍tick 等。
I
Speed.c 其实只取系统时钟 FCLK HCLK PCLK 的几个函数
Serial.c 串口函数
USB操作函数等。
总之,这些都是跟CPU相关的操作函数,跟主板怎么布线等没有关系。这是一层抽象。Uboot怎么将各个功能归类,这个是很值得学习了。上面说的 cpu目录就已经分开两层了。
/common 目录
这个目录放了各个命令是实现函数。也就是说各个功能最终实现的代码都放在这里面。其中main.c 就是第二阶段的代码了。
/deiver 目录
驱动,包括nand,网卡等等,简单点说就是外围芯片的驱动程序,I
/driver/nand目录
Nand_base.c 这个是MTD功能实现函数,从linux上面弄过来的,基本不需要修改,除非你想hack kernel,自己增加代码什么的。
Nandids.c 这个nand标识,需要修改,例如增加自己用的nand的型号等。
nand_util.c 这个是nand功能操作函数,主要是操作oob,适应 jffs2 还有yaffs 文件系统,这个也需要看看
diskonchip.c DOC的驱动
nand.c 很简单,只是nand芯片的初始化程序
nand_bbt.c 这个是nand的坏块管理程序
nand_ecc.c 计算nand数据块的校验和
/lib_generic 这个目录是放一些标准的C实现函数,应该也是从linux上面弄过来的
\board\smdk2410 这个目录是开发板相关的,根据开发板不同,在顶端的 makefile中可以配置。这目录下面几个文件:
Flash.c 这个应该是上层的flash操作。针对开发板的flash配置,打印数据等
Smdk2410.c 这个主要是开发板的初始话操作,设定端口,设定时钟什么的都在这里做。
lowlevel_init.S 这个主要就是配置 SDRAM 而已。
/lib_arm目录
Board.c 这里包含了也是arm相关的初始化工作,但不是跟具体开发板相关的,start_armbootstart_armboot 函数也是在这里,这个是第二阶段的入口,然后初始化等一系列操作。
Armlinux.c 启动到linux的代码,因为这里用的是ARM架构,而不同架构具体要求不同,所以不能公用,必须独立出来,但是又不是开发板相关的,所以放在这个arm公用的功能目录下面。
Uboot分目录有他的理由,但是也不是绝对。大概理解个整体架构也有好处。