Linux系统下U-Boot启动代码详解及NAND闪存启动设计

需积分: 50 2 下载量 23 浏览量 更新于2024-07-21 收藏 560KB PDF 举报
本文档深入剖析了U-Boot代码的各个方面,特别关注于Linux系统下的启动流程。首先,我们从`u-boot-1.1.6之cpu/arm920t/start.s分析`开始,详细解读了启动阶段的汇编代码,介绍了全局数据结构的初始化、通用初始化函数的调用以及具体设备和环境变量的初始化流程。 接着,文档涵盖了`u-boot中.lds连接脚本文件的分析`,这是理解U-Boot内存布局的关键,它定义了程序如何在内存中链接和组织。之后,有一篇作者分享的学习笔记,总结了U-Boot命令的实现方法和环境变量的管理,包括`ENV`数据结构的初始化、保存以及加载过程。 `U-Boot内存布局及启动过程浅析`部分深入探讨了内存分配和启动流程,涉及到如何通过`mkconfig`文件定制配置,以及从NAND闪存启动U-Boot的设计策略。这部分还讨论了NAND闪存的工作原理和如何支持NAND闪存启动程序设计,包括命令设计和参数传递。 在移植方面,文档重点讲解了`U-Boot源码分析及移植`,涉及到了源代码的组织结构、makefile的使用,以及如何实现u-boot的平台无关性。此外,还详细解释了U-Boot在ST2410平台上的移植过程,包括基于NORFLASH和NANDFLASH的启动方式。 最后,文档提到U-Boot与内核交互的细节,如如何通过`structtag`传递参数,以及`bd`和`gd`数据结构的作用。整篇文章内容丰富,不仅覆盖了U-Boot的基础知识,还深入到实际应用和移植过程,对于理解和开发U-Boot系统具有很高的实用价值。
671 浏览量
所有资料来源网上,与朋友分享 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