找回密码
 注册
搜索
查看: 1588|回复: 9

请问搞嵌入式底层开发的:初始化SDRAM之前,程序在哪里运行?

[复制链接]
发表于 2010-3-7 02:14:47 | 显示全部楼层 |阅读模式
嵌入式开发一般首先要运行bootloader,这个是自己写的,其中首先要初始化硬件,SDRAM也要初始化,我不明白,初始化SDRAM之前,程序在哪里运行呢?
发表于 2010-3-7 10:01:26 | 显示全部楼层
sram inside CPU
点评回复

使用道具 举报

 楼主| 发表于 2010-3-7 12:32:26 | 显示全部楼层
谢谢,就如楼上所说,在sdram初始化之前,程序可以在cpu的sram里运行,这个过程是不是这样的:
上电复位然后cpu就把外面非易失存储器如EEPROM的代码读到cpu的sram里来(这个过程是硬件完成的是吗?)然后运行rom里的程序。

这个过程全部由硬件完成,因为软件还没有加载。那是不是可以这样认为:启动后软件是干涉不到这部分动作的,因为这个动作全部是硬件完成,软件是不能访问到这个sram和rom的,但电脑里的程序是可以访问BIOS的(rom里的)。有些矛盾,还是不很清楚这个过程。

有谁可以描述一下这个启动过程吗?先谢。

还有就是,sram和sdram的地址是怎样的?如电脑上的4G地址包括cpu里的sram地址吗?是不是cpu里的sram和外面启动程序的rom有一套另外的地址呢?
点评回复

使用道具 举报

发表于 2010-3-8 09:21:58 | 显示全部楼层
对于ARM来说开机上电后会从0x00000000或0xFFFF0000处去执行指令,一般来说这个地址处对应的都是cpu内部的sram或NOR flash等非易失性的memory,而这块memory里存放了最原始的bootloader, 由它来初始化sdram等外设及其他执行环境, 接着在把nand flash上的code copy到memory相应的地址处, 最后在跳到memory里去执行.
点评回复

使用道具 举报

发表于 2010-3-9 09:46:23 | 显示全部楼层
在rom里运行
所以一开始速度较慢
点评回复

使用道具 举报

发表于 2010-3-9 14:01:05 | 显示全部楼层
一般的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地址空间里面的。
点评回复

使用道具 举报

 楼主| 发表于 2010-3-9 21:12:57 | 显示全部楼层
啊!豁然开朗,明白了。多谢楼上清楚的解释。
点评回复

使用道具 举报

发表于 2010-3-10 00:06:28 | 显示全部楼层
够味道的了[em14]
点评回复

使用道具 举报

发表于 2010-3-19 20:57:25 | 显示全部楼层
谢谢了。。。。。。。
点评回复

使用道具 举报

发表于 2010-6-19 10:38:54 | 显示全部楼层
remapping ~ gdcjh讲解的透彻~
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-5-10 08:11 , Processed in 0.048905 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表