全部博文(156)
分类: LINUX
2010-10-16 23:14:20
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文件中)。