s3c2440 存储管理器

原创 2016年08月29日 15:07:23

1:存储管理器与CPU以及其他外设的关系


    我们从图中可以看出类内存的设备都与存储管理器相连接。那么CPU是怎么与类内存的外设相互访问呢。这中间是通过存储管理器。

CPU只负责发命令,由存储管理器来管理这些类内存的设备,那么存储管理器是怎么来管理这些类内存的设备的呢。

    首先jz2440地址空间分为8个bank,(bank0~bank7),每个bank对应(NGCS0~NGCS7),相应的位为低电平表示该bank选通,这样虽然地址线总共有27根,

但是总的地址空间可以达到1G。

S3C2440的bank相对应图如下:


  我们看到的地址空间是0x0-- 0x40000000,果然是1G,那么S3C2440的CPU是32位的,理论上可以访问的地址空间可以达到4G,还有一部分是CPU内部寄存器的地址

其余的一部分地址没有用,其中cpu的内部寄存器的地址都在:0x48000000-0x5fffffff之间。

那么如果想访问一个类内存的设备到底该怎么访问呢。那CPU该发什么地址呢。首先先根据NGCSn确定基地址,然后再加上访问的地址线就可以确定类内存设备的地址范围了。

比如:扩展串口为例子:

1:它选用NGCS5,基地址为0x28000000,

2:CPU的addr0~addr2连接到串口A0~A2, 所以访问空间是8字节,所以扩展串口A的访问地址为:0x28000000 ~ 0x28000007 扩展串口B的访问地址为:0x29000000 ~ 0x29000007


2: jZ2440SDRAM 为例:

1: 它选用NGCS6,基地址为0x30000000

2: CPU连接的地址线有15条,ADDR2~ADDR14,以及 ADDR24,ADDR25是bank选择信号,ADDR2~ADDR10为列地址信号,总共9列,所以相加总共22位地址线,所以每个bank总共是4M的空间,SDRAM每个空间单位是16位,每个SDRAM总共有4个bank,所以jz2440的SDRAM总共为4M*16*4*2 = 64M

SDRAM 逻辑构成图

LADDR24-LADDR25对应于4个L-BANK
  LADDR2-LADDR14对应于行地址和列地址,根据控制位来决定是行地址还是列地址,其中行地址13位,对应LADDR2-LADDR14,列地址9位,对应LADDR2-LADDR10,所以地址一共26位,即64M空间。
  那么为什么要空出LADDR0-LADDR1呢?因为SDRAM是32的,即一个地址对应着4个字节,而cpu每发出一个地址对应1个字节,所以cpu发出4个地址才能对应SDRAM的一个地址。
  我们jz2440上其它一些外部存储设备的地址空间我们就不一一分析了。

相关代码如下:


.equ      SDRAM_BASE,         0x30000000
.equ MEM_START_ADDR  0x0x48000000

.text
.global _start
_start:
        bl    watch_dog_close         //关闭看门狗
        bl  memsetup                        //设置初始化SDRAM
        bl  copy_steppingstone_to_sdram
        ldr pc, = on_sdram
on_sdram:
        ldr sp, = 0x34000000
        bl main
halt
        b halt_loop
        
        
        
watch_dog_close:
        mov r0, #0x0
        mov r1, #0x53000000
        str r0, [r1]
        mov pc, lr   返回


memsetup:
        mov r0 #MEM_START_ADDR        //存储控制器的13个寄存器的开始地址
        adr1 r1, mem_cfg_val            //这13个值的起始存储地址
        add r2, r0, #52                 //13*4 = 54
l:
      ldr r3, [r1], #4
      str r3, [r0], #4
      cmp r0, r2     
      bne 1b
      mov pc     lr
        
copy_steppingstone_to_sdram:
        @ 将Steppingstone的4K数据全部复制到SDRAM中去
    @ Steppingstone起始地址为0x00000000,SDRAM中起始地址为0x30000000
    mov r0, #0
    mov r1, #0x30000000
    mov r2, #1024*4
l:  
    ldr r3, r0, #4
    str r3, [r1], #4
        cmp r2, r0
        bne 1b
        mov pc lr
        
mem_cfg_val:
    @ 存储控制器13个寄存器的设置值
    .long   0x22011110      @ BWSCON
    .long   0x00000700      @ BANKCON0
    .long   0x00000700      @ BANKCON1
    .long   0x00000700      @ BANKCON2
    .long   0x00000700      @ BANKCON3  
    .long   0x00000700      @ BANKCON4
    .long   0x00000700      @ BANKCON5
    .long   0x00018005      @ BANKCON6
    .long   0x00018005      @ BANKCON7
    .long   0x008C07A3      @ REFRESH
    .long   0x000000B1      @ BANKSIZE
    .long   0x00000030      @ MRSRB6
    .long   0x00000030      @ MRSRB7
       








S3C2440存储管理器详解

存储管理器概念,通俗而言就是可以通过它来访问外部存储设备的一种东西s3c2440地址空间分布 s3c2440对外引出了27根地址线ADDR0-ADDR26,访问空间为128MB,还对外引出了8根片选...

s3c2440存储控制器和地址以及启动的理解

1.首先应该先了解Flash ROM的种类   NOR FLASH地址线和数据线分开,来了地址和控制信号,数据就出来。   NAND Flash地址线和数据线在一起,需要用程序来控制,才能出数据。...
  • sonbai
  • sonbai
  • 2012年12月10日 21:01
  • 1011

S3C2440的寻址空间、存储控制器

S3C2440的寻址空间、存储控制器
  • YPFree
  • YPFree
  • 2016年10月31日 18:54
  • 336

【ARM学习笔记】三、S3C2440A的存储控制器及启动过程

存储控制器 S3C2440A是32位处理器,理论上拥有32根地址线,寻址空间0x00000000~0xFFFFFFFF,即4G 而实际上,S3C2440A只拥有27根地址线,实际物理寻址空间为0x...
  • elitah
  • elitah
  • 2013年11月27日 14:37
  • 1169

S3C2440内存控制详解

特点: 软件可编程的大小端模式;        地址空间:每个BANK可寻址128MB(总共8个BANK 1GB空间);        可编程的访问位宽:BANK0为16或32位,其他BANK为8或...

s3c2440之IO口--流水灯(转载)

1:S3C2440A的多功能引脚概叙S3C2440A有130个多功能输入/输出管脚,8个端口组,如下所示:    Port A(GPA):25个输出端口    Port B(GPB):11个输入/输出...
  • wlbzy
  • wlbzy
  • 2011年05月12日 13:32
  • 1865

s3c2440 内存管理单元MMU学习笔记

学习了S3C2440内存管理单元MMU,主要参考了《嵌入式Linux应用开发完全手册》 (下载见http://www.linuxidc.com/Linux/2011-01/31114.htm)。有两篇...

S3C2440存储管理器MMU实现

  • 2013年07月12日 10:56
  • 5KB
  • 下载

s3c2440学习笔记 存储管理器

1. 如何从外部设备read数据?假如要从网卡或者SDRAM等设备读取数据 地址为0x30000000 代码可以如下:mov R1, #0x30000000 ldr R0, [R1] //也就是...

存储管理器实验 嵌入式学习<s3c2440>

cpu访问0x30000000地址上的数据时,只需要以下汇编指令: MOV R1,#0x30000000 LDR  R0 ,R1 LDR这条指令硬件上操作包括这写内容: 发出片选信号发出bank选...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:s3c2440 存储管理器
举报原因:
原因补充:

(最多只允许输入30个字)