u-boot-1.1.6源码学习

u-boot-1.1.6源码学习

ID:1123536

大小:141.67 KB

页数:36页

时间:2017-11-07

u-boot-1.1.6源码学习_第1页
u-boot-1.1.6源码学习_第2页
u-boot-1.1.6源码学习_第3页
u-boot-1.1.6源码学习_第4页
u-boot-1.1.6源码学习_第5页
资源描述:

《u-boot-1.1.6源码学习》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、[转]u-boot-1.1.6源码学习(1) (2013-03-1414:59:15)转载▼原文摘自:http://bbs.chinaunix.net/thread-3646095-1-1.htmlU-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下:     1.第一阶段的功能:        (1)硬件设备初始化;        (2)加载U-Boot第二阶段代码到RAM空间;        (3)设置好栈;        (4)跳转到第二阶段代码入口;   2.第一阶段的功能:        (1)初始化本阶段使

2、用的硬件设备;        (2)检测系统内存映射;        (3)将内核从Flash读取到RAM中;        (4)为内核设置启动参数;        (5)调用内核。 1.了解u-boot主要的目录结构和启动流程,如下图。源码解压以后,我们可以看到以下的文件和文件夹:  cpu与处理器相关的文件。每个子目录中都包括cpu.c和interrupt.c、start.S、u-boot.lds。cpu.c初始化CPU、设置指令Cache和数据Cache等interrupt.c设置系统的各种中断和异常start.S是U-

3、boot启动时执行的第一个文件,它主要做最早其的系统初始化,代码重定向和设置系统堆栈,为进入U-boot第二阶段的C程序奠定基础u-boot.lds链接脚本文件,对于代码的最后组装非常重要 board已经支持的所有开发板相关文件,其中包含SDRAM初始化代码、Flash底层驱动、板级初始化文件。其中的config.mk文件定义了TEXT_BASE,也就是代码在内存的其实地址,非常重要。 common与处理器体系结构无关的通用代码,U-boot的命令解析代码/common/command.c、所有命令的上层代码cmd_*.c、U-

4、boot环境变量处理代码env_*.c、等都位于该目录下drivers包含几乎所有外围芯片的驱动,网卡、USB、串口、LCD、NandFlash等等diskfsnet支持的CPU无关的重要子系统:磁盘驱动的分区处理代码文件系统:FAT、JFFS2、EXT2等网络协议:NFS、TFTP、RARP、DHCP等等include头文件,包括各CPU的寄存器定义,文件系统、网络等等configs子目录下的文件是与目标板相关的配置头文件docU-Boot的说明文档,在修改配置文件的时候可能用得上lib_arm处理器体系相关的初始化文件比较重

5、要的是其中的board.c文件,几乎是U-boot的所有架构第二阶段代码入口函数和相关初始化函数存放的地方。lib_avr32lib_blackfinlib_genericlib_i386lib_m68klib_microblazelib_mipslib_nioslib_nios2lib_ppclib_shlib_sparc api外部扩展应用程序的API和范例examplesnand_splonenand_iplpost一些特殊构架需要的启动代码和上电自检程序代码libfdt支持平坦设备树(flatteneddevicetre

6、es)的库文件tools编译S-Record或U-Boot映像等相关工具,制作bootm引导的内核映像文件工具mkimage源码就在此MakefileMAKEALLconfig.mkrules.mkmkconfig控制整个编译过程的主Makefile文件和规则文件CHANGELOGCHANGELOG-before-U-Boot-1.1.5COPYINGCREDITSMAINTAINERSREADME一些介绍性的文档、版权说明标为红色的是移植时比较重要的文件或文件夹。u-boot的stage1代码通常放在cpu/xxxx/star

7、t.S文件中,他用汇编语言写成;u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。各个部分的流程图如下: 2.u-boot源码分析——Makefile简要分析     u-boot下所有目录的编译连接都是由顶层目录的Makefile来决定的。在执行make之前,先要执行 make$(board)_config 对工程进行配置,以确定特定于目标板的各个子目录和头文件。$(board)_config 是Makefile中的一个伪目标,它传入指定的CPU,ARCH,BOARD,SOC参数去执

8、行mkconfig脚本。这个脚本的主要功能在于连接目标板平台相关的头文件夹,生成config.h文件包含板子的配置头文件,使得Makefile能根据目标板的这些参数去编译正确的平台相关的子目录。     以smdk2410为例:make  smdk2410_co

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。