5.2.4 S3C4510B的系统管理器(System Manager)
概述
S3C4510B 微处理器的系统管理器(System Manager)在整个系统工作中起至关重要作用,只有清楚的了解系统管理器在系统中的作用及工作原理,才能进行程序设计和系统开发,但同时,相对于8位或16位微处理器而言,S3C4510B系统管理器的工作原理又是比较复杂的,因此需要读者认真细致的阅读该部分内容,并通过编程实践加以掌握。
S3C4510B 微处理器的系统管理器具有以下功能:
— 基于固定的优先级,仲裁来自几个主功能模块的系统总线访问请求。
— 为访问外部存储器提供必需的存储器控制信号。例如DMA控制器或CPU要访问DRAM组的某地址,则系统管理器的DRAM控制器就会产生必需的normal/EDO 或SDRAM访问信号。可由SYSCFG[31]设定访问normal/EDO或SDRAM的信号。
— 为S3C4510B和ROM/SRAM,以及外部I/O组之间的总线通信提供必需的信号。
— 为外部存储器的数据总线和内部数据总线之间的数据流协调总线宽度的差别。
— 对外部存储器和I/O设备,S3C4510B同时支持小端模式和大端模式的访问方式。
通过产生外部总线请求信号,外设可访问S3C4510B的外部总线。另外,S3C4510B可通过插入等待周期(WAIT信号)访问低速外设。WAIT信号由外设产生,可延长CPU的存储器访问周期。
系统管理器寄存器(System Manager Registers)
系统管理器使用一组专用的特殊功能寄存器来控制外部存储器的读/写操作,通过对该组特殊功能寄存器编程,可以设定:
— 存储器的类型
— 外部数据总线宽度及访问周期
— 定时的控制信号(例如RAS和CAS)
— 存储器组的定位
— 存储器组的大小
在标准系统配置中访问外设必需的控制信号、地址信号和数据信号,系统管理器通过设置特殊功能寄存器的值来控制其产生和处理。特殊功能寄存器也被用于控制对ROM/SRAM/Flash组的访问,同时还能控制对多达四个DRAM 组和四个外部I/O组以及一个特殊功能寄存器映射区域的访问。
每个存储器组在组内通过基指针(Base Pointer)寻址,其寻址范围是64KB(16位),而基指针本身为10位。因此S3C4510B的最大可寻址范围是226=64MB(或16M字)。
在进行系统存储器映射时,注意两个相连的存储器组的地址空间决不能重叠。图5.2.4 为S3C4510B系统存储器映射。

图5.2.4 S3C4510B系统存储器映射
系统存储器映射(System Memory Map)
关于S3C4510B系统存储器映射,以下是几个应当注意的重点:
- S3C4510B采用统一编址的方式,将系统的片外存储器、片内存储器、特殊功能寄存器和外部的I/O设备,都映射到64MB的地址空间,同时,为便于管理,又将地址空间分为如图5.2.4所示的若干个存储器组,可以通过配置包含基指针(Base Pointer)和尾指针(End Pointer)的特殊功能寄存器,设定每个存储器组的大小和位置。用户可利用基指针和尾指针设置连续的存储器映射。具体操作如下:即把某个存储器组的基指针的地址设置为前一个存储器组的尾指针的地址。请注意在设定存储器组的控制寄存器时,每两个相连的存储器组的地址空间决不能重叠,即使这些组被禁用。
- 四个外部I/O组被定义在一个连续的地址空间中。只需要将基指针分配给外部I/O组0,外部I/O组1的起始地址就等于外部I/O组0的起始地址+16KB,同理,外部I/O组2的起始地址就等于外部I/O组0的起始地址+32KB,外部I/O组3的起始地址就等于外部I/O组0的起始地址+48KB。因此,四个外部组的总的连续的可寻址范围被定义在外部I/O组0的起始地址+64KB的地址空间。在整个可寻址的地址空间中,外部I/O组的起始地址并没有被固定。通过设定组的基指针,可以设定一个具体的组起始地址,但总的地址空间是连续的64KB。
- 每个组的起始物理地址为“基指针左移16位”, 每组末尾的物理地址为“尾指针左移16位 - 1”。
在上电或系统复位后,所有组的地址指针寄存器都被初始化到其缺省值。这时,所有的组指针(ROM/SRAM/Flash组0和特殊功能寄存器组除外)都被清零。这意味着:除ROM/SRAM/Flash组0和特殊功能寄存器组以外,所有其它组在系统启动时都是未被定义的。这一点很重要,用户在进行程序设计时,一般总是要首先通过配置相应寄存器,定义系统的存储空间。
ROM/SRAM/Flash组0的尾指针和基指针的复位值分别为0x200和0x0。这意味着系统复位后将自动定义ROM/SRAM/Flash组0的地址空间为32MB,实际地址范围为0x0000,0000~0x0200,0000-1。ROM/SRAM/Flash组0的这种初始化定义使得系统在上电或复位后,将系统的控制权交给了由用户编写的启动代码,当然这些启动代码应存放在外部ROM中的,并映射到ROM/SRAM/Flash组0。当起动代码执行时,它执行各种系统初始化任务,并根据应用系统的外部存储器和设备的实际情况来重新配置系统的存储器映射。
特殊功能寄存器组的基址针在系统复位时被初始化为0x3FF0000,一般不再改动。
图5.2.5是在系统启动或复位时的系统存储器映射。

图5.2.5 系统复位时的存储器映射
表5-2-4为系统管理器对应的寄存器,系统的存储器映射可通过对这些寄存器的配置来完成。
表5-2-4 系统管理器对应的寄存器
|
寄存器 |
偏移量 |
操作 |
描 述 |
复位值 |
|
SYSCFG |
0x0000 |
读/写 |
系统配置寄存器 |
0x37FFFF91 |
|
CLKCON |
0x3000 |
读/写 |
时钟控制寄存器 |
0x00000000 |
|
EXTACON0 |
0x3008 |
读/写 |
外部I/O时序寄存器1 |
0x00000000 |
|
EXTACON1 |
0x300C |
读/写 |
外部I/O时序寄存器2 |
0x00000000 |
|
EXTDBWTH |
0x3010 |
读/写 |
分组数据总线的宽度设置寄存器 |
0x00000000 |
|
ROMCON0 |
0x3014 |
读/写 |
ROM/ARAM/FLASH组0控制寄存器 |
0x20000060 |
|
ROMCON1 |
0x3018 |
读/写 |
ROM/ARAM/FLASH组1控制寄存器 |
0x00000060 |
|
ROMCON2 |
0x301C |
读/写 |
ROM/ARAM/FLASH组2控制寄存器 |
0x00000060 |
|
ROMCON3 |
0x3020 |
读/写 |
ROM/ARAM/FLASH组3控制寄存器 |
0x00000060 |
|
ROMCON4 |
0x3024 |
读/写 |
ROM/ARAM/FLASH组4控制寄存器 |
0x00000060 |
|
ROMCON5 |
0x3028 |
读/写 |
ROM/ARAM/FLASH组5控制寄存器 |
0x00000060 |
|
DRAMCON0 |
0x302C |
读/写 |
DRAM组0控制寄存器 |
0x00000000 |
|
DRAMCON1 |
0x3030 |
读/写 |
DRAM组1控制寄存器 |
0x00000000 |
|
DRAMCON2 |
0x3034 |
读/写 |
DRAM组2控制寄存器 |
0x00000000 |
|
DRAMCON3 |
0x3038 |
读/写 |
DRAM组3控制寄存器 |
0x00000000 |
|
REFEXTCON |
0x303C |
读/写 |
刷新与外部I/O控制寄存器 |
0x000083FD |
根据外部存储器的宽度决定外部地址译码方法(External Address Translation Method Depends on the Width of External Memory)
与某些ARM芯片不同,S3C4510B应用系统的地址总线的连接方式相对简单。由于ARM7TDMI采用32位地址总线,所有的地址都可以看作字节地址,地址总线提供4GB的线性寻址空间,当发出字访问信号时,存储系统忽略低2位A[1:0],当发出半字访问信号时,存储系统忽略低位A[0],基于以上原因,某些ARM系统在与存储器接口时,地址总线的连接需要错开,而S3C4510B则通过一个片内的地址总线生成部件,隐藏该过程,用户在设计系统时,只需将S3C4510B的地址总线与存储器的地址总线一一对应连接即可(即S3C4510B的A[0]与外部存储器的A[0]对齐)。表5-2-5和图5.2.6说明了该过程。
表5-2-5 地址总线生成
|
数据总线宽度 |
外部地址引脚,ADDR[21:0] |
可访问的存储空间 |
|
8位 |
A21-A0(内部) |
4M字节 |
|
16位 |
A21-A1(内部) |
4M半字 |
|
32位 |
A21-A2(内部) |
4M字 |

图5.2.6 地址总线变换
总线仲裁(Bus Arbitration)
对于S3C4510B微处理器,“系统总线”是指连接各个功能模块的地址和数据总线。S3C4510B的片内功能模块和片外设备都可请求总线控制权,然后占用总线以完成数据的传输。但S3C4510B在系统设计时,任一时刻只允许一个部件占用总线,因此,当有两个或两个以上的片内功能模块或外设同时请求总线控制权时,就要求总线控制器进行仲裁。
当某一个片内功能模块或外设取得总线控制权时,其他的总线请求被悬挂(等候处理)直到原来的总线控制设备释放总线控制权时才能被响应。
为便于总线仲裁,S3C4510B内部的每一个功能模块都设置了优先级,总线控制器就根据这个固定的优先级对各个模块的总线请求进行仲裁。通常,总线控制权总是分配给优先级较高的功能模块。表5-2-6列出了优先级。
表5-2-6 总线仲裁优先级
|
功能模块 |
总线优先级(分组) |
|
外部总线主控器 |
A-1(A组中的最高优先级) |
|
DRAM存储器刷新控制器 |
A-2 |
|
General DMA1(GDMA1) |
A-3 |
|
General DMA0(GDMA0) |
A-4 |
|
高层数据链路控制器B(HDLC B) |
A-5 |
|
高层数据链路控制器A(HDLC A) |
A-6 |
|
MAC带缓冲DMA(BDMA) |
A-7(A组中的最低优先级) |
|
写缓冲器 |
B-1(B组中的最高优先级) |
|
总线路由器 |
B-2(B组中的最低优先级) |
注:S3C4510B的内部功能模块分为A、B两组,在每个组内,其优先级根据设置固定。
外部总线控制(External Bus Mastership)
S3C4510B微处理器能检测并响应由外部总线主控器产生的总线请求信号(ExtMREQs)。当CPU发出外部总线应答信号(ExtMACK)后,总线控制权就交给外部总线主控器,此时外部总线请求信号应继续有效。
当S3C4510B的外部总线应答信号有效时,其存储器接口处于高阻状态,以便外部总线主控器能驱动外部存储器接口。
当S3C4510B不控制总线时,它也不再进行DRAM的刷新操作,因此,当外部的总线主控器取得总线控制权且会持续一段较长的时间,必须负责完成DRAM的刷新操作。
控制寄存器(Control Register)
系统配置寄存器(System Configuration Register)
系统管理器中有一个系统配置寄存器SYSCFG,该寄存器决定系统管理器中特殊功能寄存器组的起始地址,以及片内SRAM的使用方式和起始地址。在系统存储器映射中,特殊功能寄存器组的地址空间固定为64KB,可参考图5.2.4。
用户可以通过SYSCFG的设定控制诸如写缓冲、缓存模式、DRAM模式、以及片内SRAM的起始地址等。
|