S3C2440的裸奔--内存篇(非MMU)

S3C2440的裸奔 --内存篇 作者: 泠瑛 网名: ling 邮件: lingying<at>live.com qq: 1641445037 网络团队: ARELY小组 更新日期:2012年07月21日 星期六 20时06分05秒声明: 这是我个人学习ARM2440的笔记,主要参考了下面这些书,当然还远远不止这些。互联网上的开源技术资料和老师学长的指导都是我学习的源泉,当然ARELY小组的哥哥姐姐更是给予我全方位的支持,尤其是何君哥哥,他给予我的不仅是技术上的,还有精神上的鼓励和引导,谢谢大家,感谢开源文化!参考书目: 人民邮电出版社 《嵌入式Linux应用开发完全手册》 –韦东山著 机械工业出版社 《嵌入式Linux应用开发全程解析与实战》 –吴士力、刘奇、朱兰著 电子工业出版社 《嵌入式Linux系统实用开发》 –何永琪等著 人民邮电出版社 《Linux设备驱动开发详解》 –宋宝华著 电子工业出版社 《ARM嵌入式常用模块与综合系统设计实例精讲》–张绮文、解书钢著 电子工业出版社 《嵌入式系统Linux内核开发实战指南》 –王洪辉著 北京航空航天大学出版社 《ARM LINUX入门与实践》 –方强、程昌南著 北京航空航天大学出版社 《嵌入式底层软件开发》 –杨铸、唐攀著 记得以前在手机上玩推箱子,有些关卡难到我头痛,于是郁闷、气急败坏,甚至会有丢手机的冲动,世界那么大,美国空间,为什么要在规定的小空间里和自己过不去呢!开发板上也一样,之前一直在一个4K大的Stepping stone里打转转,可惜了那64MB的内存了。那么,今天就到拥有更广阔的天地里折腾一番吧。 s3c2440对外引出了27根地址线ADDR0~ADDR26,最多能寻址2的27次方,也就是128MB,但实际上s3c2440能够寻址1G的地址空间,这是因为它还有8根片选信号线nGCS0~nGCS7,每根信号线对应一个128MB地址空间,这个空间被称作BANK,所以s3c2440共有8个BANK — BANK0~BANK7,香港服务器,当访问某个BANK时,其对应的nGCS信号引脚电平拉低,这和单片机上的扩展IO的操作类同。s3c2440是32位的芯片,理论上支持2的32次方,即4GB的地址空间,除去上面8个BANK用掉的1GB地址空间外,特殊功能寄存器占用了0x48000000~0x5b00001c这段地址空间,其它的地址空间没有被使用。 BANK0~BANK5可以连接ROM和SRAM类型的存储器,BANK6~BANK7可以连接ROM、SRAM、SDRAM类型的存储器,最大支持256MB,mini2440将两片32MB,16bits位宽的SDRAM连接在了BANK6和BANK7上,并联构成64MB、32位宽的内存。 在处理SDRAM内部的数据时需要先指定行,再指定列,即可访问到需要的数据,由行和列构成的矩阵称为存储阵列,大家一般会把它叫作”L-BANK”,但SDRAM里面不会只有一个存储阵列,这是因为如果只做一个存储阵列会造成严重的寻址冲突并大幅度降低内存效率。所以一般人们都将内存分为4个存储阵列(这也是SDRAM规范中的最高L-BANK数量),访问时每次只能访问一个,香港服务器,具体访问那个L-BANK可以通过内存的两个外接引脚BA0和BA1来决定,mini2440将addr24连接BA0、addr25连接BA1,通过地址线24和地址线25来选择存储单元的4个L-BANK。 SDRAM只有13根地址线A0~A12,只能寻址8MB(2的13次方)的内存空间,由于每个内存内部划分成四个L-BANK,所以通过addr24和addr25的配合,就可以寻址一个内存芯片的全部空间。开发板上一共有两片并联的32MB的SDRAM,每发送一次地址信号,两片芯片都可以同时接收到,之后其中一片返回低16bits的数据,另一片返回高16bits的数据。下面是内存芯片和cpu的引脚的连接表:

再怎么风光明媚的自家山川,

S3C2440的裸奔--内存篇(非MMU)

相关文章:

你感兴趣的文章:

标签云: