Steppingstone arm启动(来源网络)

这几天一直在 摸索s3c2440MMU, 发现了一个生词叫“steppingstone”. 查了下资料,加上自己的理解,总结了一些arm 启动的问题,下面详细分析 一下它的最前面的启动过程.
   1.
在板子上电的一开始, 首先自动判断是否是autoboot 模式( 这是由硬件设计阶段, 由硬件工程师对mcu 的引脚连线决定的), 我所使用的 s3c2410 是带有nandflash, 并切被设置成autoboot,nandflash 开始启动.
   2.
在判断是autoboot 模式后,mcu 内置的nandflash 控制器自动将nandflash 的最前面的4k 区域(4k 区域存放着 bootloader 的最前面4k 代码) 拷贝到samsung 所谓的"steppingstone" 里面(steppingstone 是在S3C2440 中,实际上是一块4k 大小的SRAM).
   3.
在拷贝完前4k 代码后,nandflash 控制器自动将"steppingstone" 映射到arm 地址空间0x00000000 开始的前4k 区域.
   4.
在映射过程完成后.nandflash 控制器将pc 指针直接指向arm 地址空间的0x00000000 位置, 准备开始执 行"steppingstone" 上的代码.
   5.
"steppingstone" 上从nandflash 拷贝过来的4k 代码, 是程序员写的bootloader 的前4k 代码. 这个 bootloader 在之前写好, 并已经被烧写到nandflash0x00000000 开始的最前面区域.. 而这"steppingstone" 上的 4k 代码就是bootloader 的前4k 代码.
   6.
pc 指向arm 地址空间的0x00000000, 系统就开始执行指令代码.4k 代码的任务是: 初始化硬件, 设置中断向量表, 设置堆栈, 然后一个 很重要的任务是,nandflash 的最前面区域的bootloader( 包含4k 启动代码) 拷贝到SDRAM 中去,bootloader 代码的大小是 写好bootloader 就确定的. 然后只需要确定bootloader 想映射到SDRAM 的起始位置就ok.
   7.
在完成对nandflash 上的bootloader 搬移后, 找到4k 代码的搬移代码最后一个指令的下一个指令在SDRAMbootloader 的地址, 然后跳转到该位置, 继续执行bootloader 的剩余代码( 引导系统).

注意:S3C2440 先从nandflash 上启动的,而不是SDRAM 上!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值