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

…。.

#defineDSR0(2《《0)/*ROMBank0数据宽度为半字*/

…。.

#defineDSD0(3《《12)/*RAMBank0数据宽度为字*/

…。.

#defineROM_BASE0_R((0x00000000》》16)《《10)/*ROMBank0的基指针是0x000*/

…。.

#defineSDRAM_BASE0_R((0x01000000》》16)《《10)?/*RAMBank0基指针是0x0100*/

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

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

……。

#ifdefCONFIG_ARCH_SAMSUNG

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

ldrr1,=rSYSCFG

strr1,[r0]

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

ldmiar0,{r1-r12}

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

stmiar0,{r1-r12}

……

5.结束语

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

责任编辑:gt

关于存储技术就介绍完了,您有什么想法可以联系小编。