您的位置:首页 > 编程语言

uboot第一阶段代码概要分析

2012-11-12 13:36 281 查看
Smdk2410默认情况下是从nor flash里面启动,但可修改源码让uboot支持从nand flash启动

根据board/samsumg/smdk2410下的u-boot.lds这个链接脚本知道u-boot启动的第一阶段函数是在cpu/arm920t/start.S。完成的功能主要包括
大概的代码运行流程如下:
源码中提供的启动方式是从nor flash
1:异常向量表重定位,cpu进入管理模式,重定向异常向量表
2. 关闭看门狗,屏蔽所以中断,初始化时钟频率,(如果有低水平的初始化,还包括关闭mmc,cache,初始化sdram内存控制器)
3:重定位uboot:把nor flash中uboot搬到SDRAM 中

4:在sdram上分配 堆(malloc空间)栈(irq和fiq栈空间)和全局变量空间,设置堆栈指针

5:清零BSS数据段

6:跳转到第二阶段入口函数 start_armboot (调至sdram中执行,函数在board.c文件中)。

<IMG onload="javascript:if(this.width>500)this.width=500;" border=0 src="http://blogimg.chinaunix.net/blog/upfile2/101016231324.jpg">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: