免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 855 | 回复: 0
打印 上一主题 下一主题

对uboot的目录文件安排的一点理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-21 11:52 |只看该作者 |倒序浏览

注意:
以下是我现在的理解,不保证正确,毕竟初学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,网卡等等,简单点说就是外围芯片的驱动程序,I2C,UART等功能是属于芯片内部的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分目录有他的理由,但是也不是绝对。大概理解个整体架构也有好处。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/52089/showart_1656851.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP