初始化SDRAM之前,程序在哪里运行

 
一般的CPU都有多种启动方式,可以通过几个配置管脚来决定其启动方式。
如果CPU拥有inchip rom或者外接了nor flash等,一般就在启动时将其映射到0地址,CPU从0地址开始执行代码。但一般inchip rom的容量都很小,nor flash速度比较慢,所以在首先执行的这一小段代码里面,就需要初始化好sdram,然后将所有代码拷贝到sdram中,接着根据需要来重新映射memory地址,并跳转到sdram中执行即可。也就说在启动过程中,sdram和rom始终都是可访问的,但可能前后一段程序中,访问的地址会有改变(如果重新映射了地址的话).
如果采用nand flash等不能直接通过地址来获取数据的存储介质,则在启动时会首先由内部的硬件完成从这些存储介质里读取一小段指定的程序到inchip ram中,读取完成后,CPU才会开始从inchip ram开始执行。同样因为inchip ram容量有限,因此这部分代码也需要初始化好sdram,然后将存储介质里的代码拷贝到sdram中,接着根据需要来重新映射memory地址,并跳转到sdram中执行即可。
这些首先被执行的代码量非常短小精悍,所以一般都是汇编语言编写的。然后跳转到sdram中后,才会去完成更多硬件的初始化工作。在这个过程中,由于会进行地址的重新映射,因此rom、ram等地址会改变。但不管什么时候,其地址都是在CPU统一的memory地址空间里面的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值