Chinaunix首页 | 论坛 | 博客
  • 博客访问: 603826
  • 博文数量: 99
  • 博客积分: 5128
  • 博客等级: 大校
  • 技术积分: 1538
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-27 19:40
文章分类

全部博文(99)

文章存档

2012年(3)

2011年(5)

2010年(4)

2009年(31)

2008年(56)

分类: LINUX

2008-11-21 11:52:40

注意:

以下是我现在的理解,不保证正确,毕竟初学uboot不久。

 

 

CPU目录

根据不同体系结构分了不同目录,我用的 920T 内核的ARM,所以只需要进入 920T目录,然后目录下面包含interrupt cpu等,920T内核的共性,也就是说凡是用920T内核,无论是哪家公司生产的920T内核ARM都通用。然后目录下面又有不同的SOC分开,通俗点说就是,分不同的厂家,9200 atmel 的,s3c24x0 是三星的,这样就清晰,如果支持不同厂,只需要加个目录,当然了,实际上远没有这么简单,这里只是说结构。

Cpu.c 主要是对MMU cache的操作

Interrupt.c 异常向量入口

Start.S 第一阶段的汇编代码

/s3c24x0 目录

Interrupt.c 产生时钟中断,包括时钟初始化,产生时钟节拍tick 等。

I2c.c 串行 I2C的操作函数。

Speed.c 其实只取系统时钟 FCLK HCLK PCLK 的几个函数

Serial.c 串口函数

USB操作函数等。

总之,这些都是跟CPU相关的操作函数,跟主板怎么布线等没有关系。这是一层抽象。Uboot怎么将各个功能归类,这个是很值得学习了。上面说的 cpu目录就已经分开两层了。

 

/common 目录

这个目录放了各个命令是实现函数。也就是说各个功能最终实现的代码都放在这里面。其中main.c 就是第二阶段的代码了。

 

/deiver 目录

驱动,包括nand,网卡等等,简单点说就是外围芯片的驱动程序,I2CUART等功能是属于芯片内部的SOC,所以不会出现在这里。而是出现在 CPU 目录下面。这个目录重点就只有用了 网卡 nand 两个驱动,得仔细看。

 

/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分目录有他的理由,但是也不是绝对。大概理解个整体架构也有好处。

 

阅读(2111) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~