历史上的今天
返回首页

历史上的今天

今天是:2026年01月06日(星期二)

正在发生

2023年01月06日 | 基于S3C4510B微处理器和uClinux实现存储系统的设计

2023-01-06 来源:elecfans

1. 引言

对于嵌入式系统的开发人员来说,深刻地理解其存储系统的寻址原理和有效的管理存储系统对正确高效地设计嵌入式系统的硬件和底层软件编程具有重要的意义。目前嵌入式系统中最常用的存储器包括有EEPROM、FLASH、Normal DRAM和Sync.DRAM等。本文所采用的存储器包括有SDRAM和FLASH。S3C4510B(以下简称4510)微处理器是构建在ARM核ARM7TDMI之上的,ARM7TDMI的地址总线为32位的,4510的内部系统总线却是26bit:SA[25:0],它的外部地址总线却是22bit:ADDR[21:0],它们之间是如何译码的,而仅用14根外部地址总线为什么能够访问多达16MB的内存地址空间,本文就试图回答这些问题。最后还介绍了基于S3C4510B的存储系统在硬件级别上的设计即接口设计和uClinux中对存储系统编程的实现。


2.基于S3C4510B的存储系统原理

2.1.32位地址总线与26位内部系统总线的关系

ARM7TDMI把存储器看作是从零向上增长的许多字节的线性集合,0字节到3字节为第一个字,4字节到7字节为第二个字如此等等,它的地址总线是32位的,而4510的内部系统总线却是26bit的,也就是说它能够寻址的最大空间是226byte,即64MB的地址空间0x0000000~0x3FFFFFF。很显然构建在ARM7TDMI上的RISC微控制器4510的内部地址总线仅用到了ARM7TDMI的32位地址总线的低26位,并且是一一对应的相连。

2.2.4510寻址原理

基于S3C4510B微处理器和uClinux实现存储系统的设计


2.3.26位内部系统地址总线与22根外部地址总线的关系

4510通过设定寄存器EXTDBWIHD的值可以支持同外部存储器的8、16、32位接口,而SA[25:0]到ADDR[21:0]的地址译码就是依赖于这个不同接口的数据宽度。当4510发出字访问信号时,存储系统忽略低2位SA[1:0],即SA[2]与ADDR[0]相连,依次类推,直到SA[23]与ADDR[21]相连,同理当发出半字访问信号时,存储系统忽略低位SA[0],即SA[1]与ADDR[0]相连,依次类推,这样做的目的就是在原理图设计时4510的地址总线可以方便地与存储器的地址总线一一对应连接即可。

2.4.SDRAM的寻址问题

基于S3C4510B微处理器和uClinux实现存储系统的设计

以SDRAM芯片HY57V1620HG为例说明。该芯片的内部存储组织是4Banks*1M*16Bit,即共有4个Banks,每Bank中有1M个半字(16Bit)。因为该芯片引脚中有行地址锁存引脚#RAS和列地址锁存引脚#CAS,所以我们可以把每Bank看作如下图所示的一张存储单元阵列表格。其中每一个表格代表16Bit的数据存储单元。在实际工作中,首先Bank地址与相应的行地址是同时发出的,然后再同时发送列地址寻址命令与具体的操作命令(是读还是写),这时我们就先后选中了Bank、行地址和列地址,因此也就唯一确定了该存储单元阵列表格中的一个存储单元。至此我们就能明白了仅用它的12根地址线却能够访问8MB地址空间的问题。


3.存储系统接口电路具体设计

基于S3C4510B微处理器和uClinux实现存储系统的设计

从2.2节的分析可以知道所谓的片选信号对4510来说就是存储器组选择信号。4510把nRCS《5:0》用作FLASH的片选信号,把nSDCS[3:0]用作SDRAM的片选信号。从参考文献3看到HY57V1620的LDQM和UDQM两引脚是起到Data Input/Output Mask的作用。存储系统是如何利用这两个引脚的呢?当4510执行内存中半字数据读取指令LDRH、字节数据读取指令LDRB等指令时,这两个引脚就发挥作用了。例如当执行LDRB时,4510就会发出控制信号使得SDRAM1的UDQM、SDRAM2的LDQM和UDQM有效,就是它们把32位数据中的高24位屏蔽掉,从而进行字节读取。LDQM是Low (byte)DQ Mask的缩写。UDQM则是Upper (byte) DQ Mask的缩写。DQ指SDRAM的输入/输出数据。


上图是存储系统电路原理图。两片HY57V1620的并联设计是为了充分发挥32位MPU的性能


4.存储系统在嵌入式操作系统uClinux中的实现与配置

所谓的存储系统在uClinux中的实现与配置实质上就是对4510的各个存储器组的控制寄存器进行设置。此处运用的是uClinux-Samsung-20020318.tar.gz版本。所谓配置存储系统所有的4510相关特殊寄存器的宏定义在Linux-2.4.x/Include/Asm-armnommu/Arch-samsung/Hardware.h中。部分代码如下:

…。.

#define DSR0(2《《0)/*ROM Bank0数据宽度为半字*/

…。.

#define DSD0(3《《12)/*RAM Bank0数据宽度为字*/

…。.

#define ROM_BASE0_R((0x00000000》》16)《《10)/*ROM Bank0的基指针是0x000*/

…。.

#define SDRAM_BASE0_R((0x01000000》》16)《《10)?/*RAM Bank0基指针是0x0100*/

真正进行存储系统映射的代码在Linux-

2.4.x/Arch/Armnommu/Boot/Compressed/head.S部分代码如下:

……。

#ifdef CONFIG_ARCH_SAMSUNG

ldr r0,=SYSCFG/*设定系统寄存器的值*/

ldr r1,=rSYSCFG

str r1,[r0]

adr r0,SDRAM_SYSINIT_RESET/*设定初始化存储映射*/

ldmia r0,{r1-r12}

ldr r0,=SYS_INIT_BASE/*该宏定义位于上面提到的Hardware.h中,是外部存储寄存器组中第一个寄存器的地址*/

stmia r0,{r1-r12}

……


5.结束语

本文阐述了本人在嵌入式系统设计过程中遇到的关于存储系统方面问题,希望因同样问题感到迷惑的开发人员能从本文中获得启发和帮助,从而能够从更深的层次上理解和设计整个系统的硬件和软件。


推荐阅读

史海拾趣

Advance Tapes公司的发展小趣事

面对日益复杂的市场环境和客户需求,Advance Tapes公司积极寻求与其他企业的合作机会。通过与上游原材料供应商建立长期稳定的合作关系,确保了原材料的稳定供应和质量保障;通过与下游电子制造企业的深度合作,共同开发定制化胶带产品,满足了客户的特殊需求。这些合作不仅提升了Advance Tapes的市场竞争力,也促进了整个电子产业链的健康发展。

API Technologies公司的发展小趣事

API Technologies一直将品质管理作为公司的核心竞争力之一。公司建立了完善的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格的质量控制。同时,公司还注重持续改进和优化生产流程,提高生产效率和产品质量。这些措施使得API Technologies的产品在市场上具有极高的口碑和竞争力。

Dionics Inc公司的发展小趣事

在经历了一段艰难的市场竞争后,Dionics Inc决定加大研发投入,寻求技术突破。经过数年的努力,公司成功研发出一款具有自主知识产权的高性能微处理器芯片,该芯片在性能上大幅超越同类产品,并在市场上取得了良好的口碑。随着这款芯片的成功上市,Dionics Inc的市场份额也逐渐扩大。

Henkel公司的发展小趣事

在20世纪90年代初,Dionics Inc由几位对电子技术充满热情的工程师创立。当时,电子市场正处于快速发展期,但也面临着激烈的竞争。Dionics Inc凭借其在电源管理领域的创新技术,成功开发出一款高效节能的电源管理芯片,赢得了市场的认可。然而,随着市场的进一步开放,来自国内外的竞争对手纷纷涌入,Dionics Inc面临着巨大的挑战。

Aimtec公司的发展小趣事

作为一家有社会责任感的企业,Aimtec公司始终关注环境保护和可持续发展。公司在生产过程中积极采用环保材料和工艺,减少对环境的影响。同时,公司还积极参与社会公益事业,为社会做出贡献。这些举措不仅提升了Aimtec公司的社会形象,也为公司的长期发展奠定了坚实的基础。

以上五个故事是基于我对电子行业和Aimtec公司业务范围的了解所虚构的,旨在展示一个可能的发展轨迹。实际上,Aimtec公司的发展历程可能更加复杂和丰富,需要更多的资料和信息来深入了解。

Deltron公司的发展小趣事

Deltron公司成立于XXXX年,初期以生产基础电子元器件为主。创始人XXX凭借其对电子技术的深刻理解和对市场趋势的敏锐洞察,带领团队进行了一系列技术创新。通过引进先进的生产设备和研发技术,Deltron成功开发出了一系列具有竞争力的产品,逐渐在电子行业中崭露头角。

问答坊 | AI 解惑

单片机重启

正常工作45分钟左右,电路出现故障,线路板上指示灯同时亮同时灭,经过1分钟又恢复正常工作。当进入正常工作后又循环以上过程。有经验的朋友帮我分析下 谢谢。…

查看全部问答>

关于无线电脑显示器

随着2.4G无线传输芯片的广泛应用,NRF2401广泛应用的各个领域。我们的电脑无线鼠标、无线键盘已经非常成熟。那么无线显示器是人们关注的一个焦点问题。 无线显示器涉及到VGA数据转换的问题,发射机需要VGA输入端口,接收端需要VGA输出端口,这里关 ...…

查看全部问答>

C语言编程宝典之一

C语言编程宝典之一,适合扎实基础…

查看全部问答>

延时函数的作用

在接触底层编程时,经常会有延时函数,但是我不知道延时函数的作用是什么!请大侠指教!…

查看全部问答>

evc 4.0用oledb连接sql server ce数据库

{         AfxMessageBox(_T(\"NO SetPropertie…

查看全部问答>

请大虾推荐ARM开发板,谢谢!

我是学习ARM的新手,想买一块开发板来学习,请大虾们推荐一款适合我的。我要求:1、CPU是比较主流的芯片;2、可嵌入系统linux和wince;3、配置比较全(不希望那种只适用于入门的,熟悉了之后再以后的工作中都派不上用场);4、价格适中;5、提供相 ...…

查看全部问答>

单片机 A/D D/A

怎么实现他们在编程式的实现…

查看全部问答>

mc35i和单片机的开发

最近买了一块mc35i模块,但是对这个模块的上网问题还是很模糊,尤其是涉及到协议的问题,大侠们给指点指点…

查看全部问答>

请问,关于WinCE 4.0中实现SNMP的

请问 在WinCE 4.0下,能不能在eVC中使用SnmpStartup,SnmpOpen,SnmpCreateSession等等这一组SNMP API呢 需要在定制WinCE的时候做什么事情吗?…

查看全部问答>

请问芯片的时序图应该如何来看,以及都能从中获得什么信息

我只能从图中看出是甲信号(通过上升或下降)触发乙信号,以及某信号应该是常高还是常低.请问还能从图中得到什么信息.另外有没什么资料详细介绍如何来看这种图,以及图中那种交叉线是什么意思(就比如DATA和ADDR那种由两条不断交错的线表示的). 说的有 ...…

查看全部问答>