u-boot目录结构介绍

4 篇文章 0 订阅
u-boot目录结构介绍 

1、版本号变化:
2008年8月及以前
按版本号命名:u-boot-1.3.4.tar.bz2(2008年8月更新)
2008年8月以后均按日期命名。
目前最新版本:u-boot-2011.06.tar.bz2(2011年6月更新)
2、目录结构变化:
u-boot目录结构主要经历过2次变化,u-boot版本第一次从u-boot-1.3.2开始发生变化,主要增加了api的内容;变化最大的是第二次,从2010.6版本开始。
u-boot-2010.03及以前版本
├──api                存放uboot提供的接口函数
├──board              根据不同开发板定制的代码,代码也不少
├──common             通用的代码,涵盖各个方面,已命令行处理为主
├──cpu                与体系结构相关的代码,uboot的重头戏
├──disk                磁盘分区相关代码
├──doc                文档,一堆README开头的文件
├──drivers            驱动,很丰富,每种类型的设备驱动占用一个子目录
├──examples           示例程序
├──fs                 文件系统,支持嵌入式开发板常见的文件系统
├──include            头文件,已通用的头文件为主
├──lib_【arch】        与体系结构相关的通用库文件
├──nand_spl           NAND存储器相关代码
├──net                网络相关代码,小型的协议栈
├──onenand_ipl
├──post               加电自检程序
└──tools              辅助程序,用于编译和检查uboot目标文件
从u-boot-2010.06版本开始把体系结构相关的内容合并,原先的cpu与lib_arch内容全部纳入arch中,并且其中增加inlcude文件夹;分离出通用库文件lib。
u-boot-2010.06及以后版本
├──api                存放uboot提供的接口函数
├──arch               与体系结构相关的代码,uboot的重头戏
├──board              根据不同开发板定制的代码,代码也不少
├──common             通用的代码,涵盖各个方面,已命令行处理为主
├──disk                磁盘分区相关代码
├──doc                文档,一堆README开头的文件
├──drivers            驱动,很丰富,每种类型的设备驱动占用一个子目录
├──examples           示例程序
├──fs                 文件系统,支持嵌入式开发板常见的文件系统
├──include            头文件,已通用的头文件为主
├──lib                通用库文件
├──nand_spl           NAND存储器相关代码
├──net                网络相关代码,小型的协议栈
├──onenand_ipl
├──post               加电自检程序
└──tools              辅助程序,用于编译和检查uboot目标文件
 
3、移植工作涉及的目录情况
从uboot代码根目录,可以看出其已经非常庞大,功能也很丰富。
移植工作最主要的是看对应的处理器和开发板代码,2010.06版本以后处理器相关的代码集中在arch、board目录。(以前版本主要在cpu和board目录)
先看一下arch目录:
arch
├──arm
├──avr32
├──blackfin
├──i386
├──m68k
├──microblaze
├──mips
├──nios2
├──powerpc
├──sh
└──sparc
 
arch目录内容比以前的版本干净,每个子目录代表一个处理器类型,子目录名称就是处理器的类型名称。
我们移植的是mips的处理器,所以参考一下arch/mips目录:
 
arch/mips
├──cpu
├──include
└──lib
arch/mips目录下有三个目录,其他的处理器目录下也是这个结构:
cpu子目录对应一种处理器的不同产品型号或者系列;
include子目录是处理器用到的头文件;
lib目录对应用到处理器公用的代码;
 
下面看看cpu下的内容,arch/mips/cpu目录下的内容:
arch/mips/cpu
├──asc_serial.c
├──asc_serial.h
├──au1x00_eth.c
├──au1x00_serial.c
├──au1x00_usb_ohci.c
├──au1x00_usb_ohci.h
├──cache.S
├──config.mk
├──cpu.c
├──incaip_clock.c
├──incaip_wdt.S
├──interrupts.c
├──Makefile
└──start.S          整个uboot代码入口点
 
目前最新版本(2011.6版本开始)中cpu目录中建立mips32目录,把incaip和au1x00也分类放在不同的目录中。
u-boot.lds是ld程序也就是连接器的脚本文件,这个文件描述了如何连接目标文件,ld程序会根据这个文件的指示按照需求把不同的目标文件连接在一起生成供烧写到开发板的程序。
该文件放在board对应的目录中。
 
4、移植u-boot的版本选择情况
由于u-boot的各版本没有重大变化,各版本移植起来基本相同,也正因为如此,大多数版本均有人移植过,主要是arm体系结构的。
如cortex A8使用 u-boot-1.3.4;cortex M3 上u-boot-1.1.6、u-boot-1.2.0等均有人移植过。
考虑到我们目前的编译器较新,编译旧版本u-boot时会出现错误,警告也很多;新版本的u-boot目录结构也较清晰,因此选用较新版本的u-boot。
最新版本(2011.06)Makefile中没有mips的部分,不知道为什么。(2011.03版本中同样也是)
u-boot-2010.12的Makefile没有问题,编译incaip通过,没有任何警告和错误,因此最终选择u-boot-2010.12作为我们的移植版本。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值