
u-boot
jasonaka
这个作者很懒,什么都没留下…
展开
-
U-Boot中关于TEXT_BASE,代码重定位,链接地址相关说明
都知道U-BOOT分为两个阶段,第一阶段是(~/cpu/arm920t/start.S中)在FLASH上运行(一般情况下),完成对硬件的初始化,包括看门狗,中断缓存等,并且负责把代码搬移到SDRAM中(在搬移的时候检查自身代码是否在SDRAM中),然后完成C程序运行所需要环境的建立,包括堆栈的初始化等,最后执行一句跳转指令: ldr pc, _start_armboot _start_armboot: .word start_armboot,进入到/lib_arm/board.c转载 2010-07-12 19:30:00 · 2968 阅读 · 2 评论 -
一、u-boot工程的总体结构
1、源代码组织对于ARM而言,主要的目录如下:board 平台依赖 存放电路板相关的目录文件,每一套板子对应一个目录。如smdk2410(arm920t) cpu 平台依赖 存放CPU相关的目录文件,每一款CPU对应一个目录,例如:arm920t、xscale、i386等目录lib_arm 平台依赖 存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数,如软件浮点。common 通用转载 2010-07-12 19:31:00 · 645 阅读 · 0 评论 -
三、u-boot的重要细节
主要分析流程中各函数的功能。按启动顺序罗列一下启动函数执行细节。按照函数start_armboot流程进行分析: 1)DECLARE_GLOBAL_DATA_PTR; 这个宏定义在include/global_data.h中: #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8") 声明一个寄存器变量 gd 占用r8。这个宏在所有需要引用全局数据指针gd_t *gd的源码中都有申明。转载 2010-07-12 20:06:00 · 1208 阅读 · 1 评论 -
二、u-boot的流程、主要的数据结构、内存分配
1、u-boot的启动流程: 从文件层面上看主要流程是在两个文件中:cpu/arm920t/start.s,lib_arm/board.c, 1)start.s 在flash中执行的引导代码,也就是bootloader中的stage1,负责初始化硬件环境,把u-boot从flash加载到RAM中去,然后跳到lib_arm/board.c中的start_armboot中去执行。1.1.6版本的start.s流程:硬件环境初始化: 进入svc模式;关闭watch dog;屏蔽所有IRQ掩码;转载 2010-07-12 20:06:00 · 1578 阅读 · 0 评论