您的位置:首页 > 其它

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

2011-09-08 13:02 197 查看
一般的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地址空间里面的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐