U-Boot源码入门:ARM920T异常处理与主入口分析

需积分: 0 3 下载量 169 浏览量 更新于2024-07-21 收藏 567KB PDF 举报
本文档是对U-Boot源码(u-boot-2009.03)的深入分析,主要关注于嵌入式系统中的引导装载程序——U-Boot。作者以ARM920T处理器为例,从头开始探讨,适合对Linux和U-Boot初学者参考。首先,文章介绍了U-Boot的下载途径,即从FTP服务器denx.de下载最新版本。 源码中关键的部分是`cpu/arm920t/start.S`文件的分析。该文件包含了处理器异常处理向量表,这是启动过程中至关重要的部分,它定义了处理器在遇到不同类型的中断或异常时的处理程序地址。这个向量表位于内存的0x00000000至0x00000020地址范围,共8条指令。主入口`_start`调用`reset`标号,然后设置了异常处理程序的跳转地址,如未定义指令处理 `_undefined_instruction`、软件中断 `_software_interrupt` 等,确保系统的稳定启动。 `_undefined_instruction`、`_software_interrupt`等标号后跟着的是预定义的处理程序地址,它们会被链接器替换为实际的处理函数。`_TEXT_BASE`是一个符号,由链接器脚本`/borad/samsung/smdk2410/config.mk`决定,表示可执行代码的基址。`_armboot_start`标号用于引导加载过程,虽然最终还是跳转到`_start`,但在此处设置是为了特定的引导流程。 此外,`_bss_start`定义了BSS(未初始化的数据)区域的起始地址,通常存储动态分配的无初始化数据。这部分内容显示了U-Boot内核初始化过程中的内存管理细节。 本文还提及了`include/config.h`和`version.h`这两个头文件,它们在编译时会被`mkconfig`脚本生成,包含了配置选项和版本信息,对U-Boot的整体构建至关重要。 本文通过对U-Boot源码的剖析,让读者了解了U-Boot启动过程中的异常处理机制、内存布局以及关键配置文件的作用,对于想要深入研究嵌入式系统启动流程的人来说,是一份宝贵的参考资料。随着后续的移植教程,读者将能进一步掌握如何将这些知识应用到具体的硬件平台上。
2010-03-29 上传
所有资料来源网上,与朋友分享 u-boot-1.1.6之cpu/arm920t/start.s分析 2 u-boot中.lds连接脚本文件的分析 12 分享一篇我总结的uboot学习笔记(转) 15 U-BOOT内存布局及启动过程浅析 22 u-boot中的命令实现 25 U-BOOT环境变量实现 28 1.相关文件 28 2.数据结构 28 3.ENV 的初始化 30 3.1env_init 30 3.2 env_relocate 30 3.3*env_relocate_spec 31 4. ENV 的保存 31 U-Boot环境变量 32 u-boot代码链接的问题 35 ldr和adr在使用标号表达式作为操作数的区别 40 start_armboot浅析 42 1.全局数据结构的初始化 42 2.调用通用初始化函数 43 3.初始化具体设备 44 4.初始化环境变量 44 5.进入主循环 44 u-boot编译过程 44 mkconfig文件的分析 47 从NAND闪存中启动U-BOOT的设计 50 引言 50 NAND闪存工作原理 51 从NAND闪存启动U-BOOT的设计思路 51 具体设计 51 支持NAND闪存的启动程序设计 51 支持U-BOOT命令设计 52 结语 53 参考文献 53 U-boot给kernel传参数和kernel读取参数—struct tag (以及补充) 53 1 、u-boot 给kernel 传RAM 参数 54 2 、Kernel 读取U-boot 传递的相关参数 56 3 、关于U-boot 中的bd 和gd 59 U-BOOT源码分析及移植 60 一、u-boot工程的总体结构: 61 1、源代码组织 61 2.makefile简要分析 61 3、u-boot的通用目录是怎么做到与平台无关的? 63 4、smkd2410其余重要的文件 : 63 二、u-boot的流程、主要的数据结构、内存分配 64 1、u-boot的启动流程: 64 2、u-boot主要的数据结构 66 3、u-boot重定位后的内存分布: 68 三、u-boot的重要细节 。 68 关于U-boot中命令相关的编程 : 73 四、U-boot在ST2410的移植,基于NOR FLASH和NAND FLASH启动。 76 1、从smdk2410到ST2410: 76 2、移植过程: 76 3、移植要考虑的问题: 77 4、SST39VF1601: 77 5、我实现的flash.c主要部分: 78 6、增加从Nand 启动的代码 : 82 7、添加网络命令。 87