专栏首页linux驱动个人学习uboot各种目录下的文件作用

uboot各种目录下的文件作用

uboot下载地址:http://ftp.denx.de/pub/u-boot/

1、目录分布

2、目录结构变化:

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

如果我们移植的是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作为我们的移植版本。

参考博客:http://blog.chinaunix.net/uid-24951403-id-2212590.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • inline函数不能在for循环中使用的原因

    inline函数的作用继承了宏定义的优点,没有了参数压栈,代码生成等一部分操作,并且摒弃了没有检查编译规则的缺点; 另外要注意,内联函数一般只会用在函数内容非常...

    233333
  • Linux的命名空间详解--Linux进程的管理与调度(二)【转】

    PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace。每个Namespace里面的资源对其他Namespace都是透明的。要...

    233333
  • android ninja【转】

    使在Android N的系统上,初次使用了Ninja的编译系统。对于Ninja,最初的印象是用在了Chromium open source code的编译中,在...

    233333
  • Hi Swifter:来和Guard问声好吧

    Swift正逐步占领iOS App实际开发的市场份额,Swift 的简洁、易用性已经吸引了大量开发者,大家已开始或准备开始使用Swift开发iOS App。

    博文视点Broadview
  • 为什么很多程序员开发效率低

    在软件和互联网行业从业20多年,发现很多的程序员不知道怎么提升效率,团队有团队开发协作的效率,但单兵来讲,也有个效率问题。本文就单单讲一下开发如果提升自身效率的...

    用户5829239
  • 【工具】手把手教你用R制作词云

    ? 看着别人做的词云,觉得做设计素材特别好,就在网上扒拉一下,看有没有合适大众一起玩的工具,公认为国外的tagxedo制作词云是最简洁方便和模板最多的。点击t...

    小莹莹
  • 「 趣图 」给程序员的几条建议

    刚入行的新手,为了展示自己的能力,拿到需求迫不及待地就开始上手写代码,大忌! 在我看来真正写代码的时间只有20%,如果不想清楚,其他的80%时间在改bug。

    KEN DO EVERTHING
  • 英特尔推出OpenVINO工具包,将可视化和AI引入边缘计算

    SDNLAB
  • 快速学习Docker-容器的网络基础

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • 照骗不可信怎么办?Airbnb欲用VR技术带你提前“实地”看房

    VRPinea

扫码关注云+社区

领取腾讯云代金券