历史上的今天
返回首页

历史上的今天

今天是:2024年09月18日(星期三)

正在发生

2021年09月18日 | s3c2440内存类设备访问原理

2021-09-18 来源:eefocus

在嵌入式里面所谓内存类接口有SDRAM接口,NORFLASH接口,DM9000网卡接口等 ,他们都有一个共同点就是可以直接连S3C2440内存控制器,数据总线,地址总线;这三者缺一不可。


内存类接口可以通过地址直接访问内部数据,当然他们都有自己的一段可访问的地址范围。S3C2440将其1G地址空间划分为8个bank,每个bank有128M,所以芯片提供了8个片选信号线,每个片选信号线对应一个bank,一个片选信号连接一个设备,所以每个设备可访问的地址的范围是128M空间,128M=2的27次方个字节,所以芯片上面的地址线只有27跟,最大只能到A26。理论上32位的CPU应该有32跟地址线,因为最大可以到0xffffffff=2的32次方=4G,但S3C2440的设计只有1G的地址空间,其他的都保留了,这1G的空间又被砍成了8块,所以每块就只能分得128M=27跟地址线的操作空间,也可以以这么理解:这8个片选信号在芯片内部通过A27-A29这三根地址信号经过3-8译码器译码所得。


S3C2440有两种启动方式:NOR和NAND方式;

如果是NOR启动,那么NORFLASH的片选必须接CS0片选,因为系统启动是从0地址开始执行的;这种方式下里面的内部4K sram可用作其他用途,其起始地址为0x40000000。

如果是NAND启动,那么CS0片选则不能接其他设备,因为这个时候BANK0的地址已经被SRAM映射了。


再来看BANK67,这两个块芯片规定给内存使用的,每个可以放128M,连起来最多可以放256M的内存,而且BANK6跟BANK7的内存大小必须一样,因为扩充一个BANK,芯片内部必须加一根地址线去访问,所以内存必须是相同的。


其他的BANK1-5都随便放什么设备了,比如网卡。


当我们需要操作在某个bank里面的地址空间的时候,内存控制器对这个bank对应的cs信号线自动使能的,不需要软件单独去使能的(不像操作IIC总线外设的CS信号)。

这里以SDRAM为例讲讲原理:


这里有两个芯片,有数据总线,地址总线和存储控制信号线;

先看数据总线可以知道,每个芯片占16BIT,所以可以知道他们分别存放32BIT数据的低16位和高16位。


再来看地址线,控制器的A2地址接存储芯片的A0地址,为什么存在这种不对应性?

因为CPU认为1个地址对应1个字节,而这个图里面的一个SDRAM 1个地址对应的是16BIT,两个SDRAM加起来就是32BIT,所以一个地址对应4个字节;从图上可以看出2440地址最小接A2,所以每加一个地址就可以滚动4个字节,而存储器上前面分析了每加一个地址滚动4个字节,这样才能对应起来。所以32BIT设备的最小操作单位是4个字节,不管是读还是写,但是SDRAM不同于其他设备,他通过DQM信号线的控制,DQM就是掩码控制位,在sdram中每个DQM控制8bit Data,在读操作的时候没什么大的影响,比如读32位的sdram module,但只要其中低8bit的数据,没有关系,只要读出32bit数据,再在软件里将高24位bit和0“与”就可以了,有没有DQM关系不大,但在执行写操作时如果没有DQM就麻烦了,可能在软件上是写一个8bit数据,但实际上32根数据线是物理上连接到SDRAM的,只要WR信号一出现,这32位就会写sdram中去,高24bit数据就会被覆盖。通过使用DQM就可以将其对应的8bit屏蔽,不会因为写操作而覆盖数据了。这样就达到读写一个字节数据的目的了。而NORFLASH就没有这样的接口,所以他不能像SDRAM一样写数据,要写数据必须先读出来,再修改,再写进去。


再来看下为什么BA0与BA1为什么接CPU A24,25?

可以直接去看S3C2440的芯片手册告诉我们怎么接,但原理都是一样的;这个SDRAM的大小是32M,前面分析了一个BANK是128M,最大地址线可到A26,那么A25是64M,A24是32M,依此类推,我们这里挂了两块SDRAM,总大小64M,所以最大地址线是A25,然后是A24,连上BA0,BA1刚好对应这两根地址线的00 01 10 11可以控制SDRAM的4个块(最大单位),其他行列信号由低位地址线去控制了,行列地址线是共用的,通过RAS与CAS区别。


如果我们知道了行列的地址线宽,是否能算出SDRAM的存储大小?


我们使用的是16MX16的SDRAM,所以行地址有13跟,列地址有9跟,共22跟,这里2的22次方=4M 字节,然后还有A24与A25两根控制4个块,就有4Mx4=16M地址空间,再看数据总线16BIT,一个地址访问两个字节,所以就有16MX2个字节=32M 字节。

推荐阅读

史海拾趣

Dawning Precision Co Ltd公司的发展小趣事

在快速发展的过程中,Dawning意识到企业文化的重要性。公司注重培养员工的团队合作精神和创新能力,定期组织各种团建活动和文化交流活动。同时,Dawning还倡导“以人为本”的管理理念,关注员工的成长和发展,为员工提供良好的职业发展平台。这些举措的实施,使得Dawning的员工队伍更加团结、稳定和有活力,为公司的长远发展奠定了坚实的基础。

DRS Technologies公司的发展小趣事

DRS Technologies公司成立于1968年,由Leonard Newman和David Gross两位工程师共同创立。当时,他们正在Loral Corporation研究反潜战的信号处理技术。然而,当Loral决定转向其他技术方向时,Newman和Gross决定继续他们的研究,并创立了DRS。他们的努力最终导致了AN/SQR-17无源潜艇探测系统的开发,这一系统至今仍在广泛使用。

First Sensor公司的发展小趣事

在全球电子行业快速发展的背景下,DRS面临着来自各方面的挑战。为了应对这些挑战,DRS不断加强研发投入,提高产品质量和服务水平。同时,公司也积极拓展国际市场,寻求更多的合作机会。通过这些努力,DRS在全球电子行业中保持了领先地位,并为未来的发展奠定了坚实的基础。

请注意,由于篇幅限制,以上故事均为概述性质,具体细节和背景信息可能有所省略。

CAO Group Inc公司的发展小趣事

CAO Group并未满足于在牙科行业的成功,而是积极寻求多元化的发展道路。公司开始涉足医疗、执法和光电市场,通过不断推出创新产品和技术,成功拓展了新的业务领域。同时,公司还积极寻求与国际知名企业的合作,通过技术交流和资源共享,不断提升自身的竞争力和影响力。

Dynastream公司的发展小趣事

成为Garmin全资子公司后,Dynastream并没有停止前进的步伐。相反,公司更加注重技术创新和产品研发。在保持传统优势产品的基础上,Dynastream不断推出新产品、新技术,以满足市场的不断变化和客户的多样化需求。同时,公司还积极拓展国际市场,将产品销往全球各地。

Chengdu Sino Microelectronics Technology Co Ltd公司的发展小趣事

随着国内市场的逐渐饱和,成都华微科技开始将目光投向国际市场。公司凭借过硬的产品质量和完善的服务体系,逐渐在国际市场上崭露头角。通过与国外客户的深入合作,华微科技不仅提升了自身的国际影响力,也为中国集成电路设计行业在国际市场上赢得了更多的话语权。

问答坊 | AI 解惑

超低功耗27-MHz无线鼠标参考设计

超低功耗27-MHz无线鼠标参考设计…

查看全部问答>

芯币难道要过买呀?

芯币难道要过买呀? 我的芯币太少了…

查看全部问答>

哪个帮我看个个汇编,,问题出在什么地方,,如何修改

YES_COM:;当前要显示的东西放在DSP11~DSP15,由定时中断每隔两毫秒刷新一次,;五个寄存器要十毫秒才能刷新一遍  MOV A, R6          ;指循环显示的第N位。 ADD A, #DSP11 & ...…

查看全部问答>

CE下字符串写入文件出错,怎么办那?

我在CE下要向文件里写一些字符串。可是写入的时候出错,我以前用这代码在WIN32下好使的。请问怎么办 CStdioFile* pFile = new CStdioFile(FileName,CFile::modeWrite|CFile::modeCreate); CString code; code.Format(L\"P0%d  X%f, Y% ...…

查看全部问答>

在线调试问题!

用过万隆的开发板的兄弟们,在线调试能行吗?交流一下!…

查看全部问答>

怎样实现 防拆卸功能????

有个小仪器,需要实现防拆卸功能,非法拆卸就报警。 机械设计需要另外开模具,花费有点大,不知道还有什么方法能实现? …

查看全部问答>

allegro视频教程

allegro视频教程内容:元件的放置,原理图与PCB如何互连,PCB自动布线等…

查看全部问答>

【求助】变量传递问题。

int main () { unsigned char key[2]; WDTCTL=WDTPW+WDTHOLD; InitKey(); TimerAInit(); UartInit(); _EINT(); key[0]=GetKeyzhi(&key[1]); unsigned char GetKeyzhi(unsigned char *key_cnt) { unsigned char q0; ...…

查看全部问答>

求助!使用4mm的数字屏用ARM9的DSP显示驱动芯片,这个显示驱动芯片的型号是什么?

求助!使用4mm的数字屏,WVGA 800×480像素,4英寸尺寸,用ARM9的DSP显示驱动芯片,这个显示驱动芯片的型号是什么?因为鄙人的一个项目,决定使用这样的屏幕和DSP的搭配,但是没有人告知我这个DSP的型号是什么,只是知道有这样的东西存在,于是用如 ...…

查看全部问答>

MSP430F149 输出PWM控制舵机的问题。。。

嗯 新手一个。。。。 然后今天在同学那里拿了一个舵机 想玩一下。。。 就是呢   我用的149   然后  SMCLK选的8M的XT2 TA选的 smclk  三分频  增计数 那这个样子   TA的频率是不 ...…

查看全部问答>