当前位置: 代码迷 >> 驱动开发 >> 关于存储器统制的疑问。(mini2440)
  详细解决方案

关于存储器统制的疑问。(mini2440)

热度:231   发布时间:2016-04-28 10:34:39.0
关于存储器控制的疑问。(mini2440)
这两天在看《嵌入式Linux应用开发完全手册》(我的开发板是mini2440,书也是针对s3c2410/2440的)
看到“存储器控制”这章,有些不明白
书上说SDRAM需要初始化才能使用,SDRAM不是内存吗?内存也需要初始化吗?
之前GPIO点亮LED的代码中,也没见初始化SDRAM,但还是可以用C写程序,如果不先初始化,内存就不能用的话,那C中定义的int i;一类的变量存在哪里?
这个LED程序的汇编引导文件中,有一句「ldr sp, =1024*4 @设置堆栈,注意:不能大于4K,因为现在可用的内存只有4K」
这里设置的是什么堆栈?所谓的可用内存又在哪里?
还有,在LED程序编译好之后,使用Keil+Jlink调试,在Keil中设置的下载地址为0x30000000,这个地址是SDRAM的起始地址,如果要先初始化才能使用的话,现在程序都还没有烧写进去,为何还能往0x30000000写入程序
所以,“存储器控制”很不明白怎么回事,求高人解答。
------解决思路----------------------
1、内存当然需要初始化。比如要告诉CPU内存类型,带宽等,CPU才能正确使用内存。找一些SDRAM的datasheet比较一下差异你就明白了。
2、在进入C的函数之前,内存早就初始化好了。内存初始化一般在bootloader启动的一段汇编代码里。
3、烧写和运行是两码事。在烧写软件中也是有初始化的
------解决思路----------------------
我看明白了  你在还学裸奔程序吧
楼上这位大哥主要是在 有系统的视角上看你的问题


ldr sp, =1024*4  这里是4K...SRAM也是4K  
我也是初学者  我记得教这个的时候  说了 一大堆  CPU核  SRAM sdram  NAND  NOR  他们之间的关系
   
你还是2440  我报了华清的班  我们还是2410  坑爹啊    
------解决思路----------------------
你做的点亮led的小程序,由于代码小于4k,可以在cpu内部的ram中运行,外扩的ram当然得初始化