原创 mini2440的sdram的使用

2009-5-22 14:46 3897 4 4 分类: MCU/ 嵌入式

关于sdram的使用


Mini2440 使用了两片外接的 32M bytes 总共 64M bytes 的 SDRAM 芯片(型号为:
HY57V561620FTP),一般称之为内存,它们并接在一起形成 32-bit 的总线数据宽度。


对sdram的使用主要是对它的13个寄存器的初始化https://static.assets-stash.eet-china.com/album/old-resources/2009/5/22/e7e68883-98ed-4fbe-a0e5-9e5ea72535c7.rar


所有的源码都打包了。


在我试验的过程中出了点问题。


就是关于sdram的初始化下面是出错的源码中的一段:


/****************************/


memsetup:


mov r1, #MEM_CTL_BASE


ldr r2, mem_cfg_val


add r3, r1, #52


1:


ldr r4, [r2], #4


str r4,[r2], #4


cmp r1, r3


bne 1b


mov pc, lr


/**********************/


说明一下我在编译时的链接地址是0x30000000.


后来我将红色字体的那一行改成:adrl r2, mem_cfg_val


重新编译,下载,运行正常了。


我回头再看了书,说说我对这样修改的解释


adr和adrl是arm的两条汇编伪指令,他们的寻址是相对pc的,这时还是运行在steppingstone中的。所以r2中的内容是对sdram初始化的数据起始地址。


如果使用ldr,它起到绝对地址的跳转。这时r2中的内容指向sdram中sdram初始化数据的起始地址。而这时还没完成对sdram的初始化,所以就不能完成对sdram的初始化。


 


在Makefile文件中我使用了优化选项 -O2,这使得运行的速度明显的加快。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条