初始化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地址空间里面的。
如果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地址空间里面的。
相关文章推荐
- 正试图在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
- 正试图在os加载程序锁内执行托管代码。不要尝试在DllMain或映像初始化函数内运行托管代码 问题解决方法
- ArcGis :正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
- 正试图在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起
- C#报错“OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码”的解决方法。
- 用vs2005写好的c#程序在哪里运行呀
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
- 正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样...
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起
- 弹错:正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码
- ARM汇编初始化C程序运行环境
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
- 继承和初始化时,程序运行顺序的自己的理解。
- 面向对象之构造函数(可让程序运行前初始化一些东西)、函数(方法)重载
- 正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
- android使程序进程不被LMK杀死| application运行环境初始化
- android的程序运行数据存放在哪里?
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码
- XSBASE 270-S_裸机程序_初始化SDRAM
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码