义隆
TM
SC300和lanSC310微控制器
内存管理
应用说明
义隆
TM
SC300和lanSC310微控制器包含一个复杂的内存管理
单元(MMU) ,这使得PC / AT兼容容易实现的。但是,如果你想从流浪
标准的路径和做不同的事情,有很多有关的教训
能力和MMU的局限性。本应用笔记的目的是要说明什么
MMU能够以及如何可以通过编程来实现自己的目标。本文档
补充
第2章,内存和PCMCIA管理
的
义隆
TM
SC300微控制器
程序员参考手册
,订单号18470 。
介绍
除非另有说明,这些特征在此讨论
为ELAN文档
TM
SC300微控制器适用
同样的锐气
TM
SC310微控制器。期限
“ DRAM ”将被用来表示任何的DRAM或SRAM 。
SRAM用于系统存储器是对一个选项
lanSC300微控制器和的目的
存储器管理, SRAM被相同地处理,以
DRAM 。所谓“本地/ ISA总线”既包括本地
总线和ISA总线周期。这些都是完全一样的对待
内存管理。当lanSC300
微控制器被配置在整个范围内的ISA模式或
内部LCD模式,所有的访问都被视为ISA总线
周期。当lanSC300微控制器
配置在本地总线模式中,局部总线被第一给定
的周期,并且如果本地总线周接受
周期, ISA总线永远看不到它。如果当地没有公交车
外围设备接受该周期,它被拉伸成
较慢的ISA周期,和MEMR或MEMW被断言。
16内存在一兆字节的时间。这16兆字节的
内存混叠256倍到4 GB的物理
的Am386处理器的地址空间中。虽然这是
TR UE日在前作PCM CIA加个电子重新SS SP交流ES
lanSC300微控制器支持26位( 64兆字节) ,
这些PCMCIA空间都只能通过访问
翻译内存管理。
在复位和SMI行为
复位后或处理系统的管理时
中断(SMI) ,CPU从顶部执行
内存。处理器在实模式和正常
只有1兆字节的可寻址的,但所述第一指令是
从地址FFFFF0在内存顶部取出。
代码段,CS的初始值是F000 ,并
指令指针,IP的初始值,是FFF0 。
然而, CPU内部的基地址相关联
与代码段是FF0000而非F0000 。
该处理器能够保持在该顶部64千字节的
通过提供系统存储器地址空间
近来电/跳跃。如果远调用/跳转执行,
CPU依然在实模式下在该远控的时间
转让,远程控制传输将导致CS基地
地址被设置到跳跃的16倍的段
的目标。这是正常的实模式的行为。因此,
这样的远跳转目标必须在较低的1
兆字节。许多PC / AT兼容BIOS实现
有一个远跳转到一个目标在段F000作为第一
指令执行。
该代码的物理地址执行的事实
在复位是隔靴搔痒的物理地址
在第一个实模式的目标远代码执行
跳转可用于启动ROM的系统重要
大于1 MB 。这是在一节中讨论
题为ROMCS空间与非翻译记忆
管理。
需要注意的是前面所述的行为适用于
SMI处理以及复位。在这两种情况下,则
应确保任何远跳目标映射
适当。例如,在FFFFF0 ,一个系统可
出版#
21823
启:
A
Amendment/0
发行日期:
1997年7月
地址译码和混叠
大多数设计师所熟悉的地址别名,
它只是意味着,如果一个地址是仅部分地
由设备解码时,该设备会出现存在
多次在整个地址空间。该
以下所用的混叠对相关联的主题
lanSC300微控制器必须彻底
在尝试使用之前,理解由设计者
在lanSC300微控制器的内存管理。
在4 GB的地址别名
在Am386空间
微处理器
在lanSC300微控制器的CPU核心是
Am386SX微处理器,它支持24个物理
地址线( 16兆字节的物理地址空间) 。
该Am386微处理器体系结构支持32
寻址位,但从排名前8位地址
CPU实际上被忽略了所有的内存映射
功能。从编程的角度来看,这
意味着lanSC300微控制器可以“看到”
本文件包含有关正在开发的产品,在Advanced Micro Devices公司的信息。信息
旨在帮助您评估该产品。 AMD保留对本建议修改权利或停止工作
产品,恕不另行通知。
包含一个远跳解决F0000 ,它映射到
ROMCS复位。启动后,处理器可以
禁用ROMCS为F0000 - FFFFF和映射
地区DRAM 。如果发生一SMI ,跳跃在FFFFF0
将被执行,现在将跳转到F0000的DRAM 。
您必须确保SMI相应的代码
处理保持在该位置。
空间。在翻译的方案中, MMU会
翻译除了将地址选择的空间。
在DRAM , ROMCS , DOSCS ,显示SRAM和
本地/ ISA总线的空间是每一个访问,一个
通过非翻译记忆或多或少,
管理。除了本地/ ISA总线上的所有空间
空间是通过使用翻译记忆的完全访问
管理。
特殊处理的A20
因为lanSC300微控制器被设计成
为PC / AT兼容计算机,它包含逻辑以允许
向后兼容性一路8088
处理器。一种用于通过一些8088的功能
软件是地址包裹,发生在
顶级的8088处理器的1M字节的内存下降到
的存储器的底部。该Am386处理器执行
这通过使用A20的控制栅极,它可以强制A20
永远是0。因为Am386处理器的默认值
到8088兼容模式,你必须设置大门
让A20的传播对于大多数应用程序。最
操作系统,如MS-DOS ,包含代码
做到这一点。在MS-DOS的情况下,包含HIMEM.SYS
的代码,并且具有应用程序接口
(API),以允许A20的程序的控制。 A20
自动将被设置为传播如果HIMEM.SYS是
装载和DOS = HIGH { ,UMB }被加到
CONFIG.SYS 。有关直接控制信息
在A20门,看的描述
lanSC300微控制器直接映射寄存器92H
和索引寄存器6BH和6FH在
义隆
TM
SC300
程序员参考手册
,订单号18470 。另外,
请参考应用笔记标题
义隆
TM
SC300和
义隆
TM
SC310单片机GATEA20功能
澄清
,订单号21811 。
非翻译记忆
管理
如前一节中所指出的,当执行
非翻译存储器管理, MMU的根本
决定哪些设备空间将得到一个给定的
通过检查存储器地址的存储器周期
由CPU提供的。后检查,但是,
地址原样传递到硬件
管理空间。
内存映射的复位
对于大多数的CPU地址空间中,默认
上电复位存储空间是本地/ ISA总线。该
例外情况是:
s
CPU地址R安格斯0F0000-0FFFFF和
FF0000 - FFFFFF被映射到ROMCS 。
s
地址ESS 法兰B8000 -BFFFF米的AP前作
32 KB的SRAM的显示空间。这种映射
发生即使lanSC300单片机靴
在当地的公共汽车或全ISA模式。内部LCD
控制器必须以指示这些被禁止
访问到本地/ ISA总线。
多个存储空间
这可能是国外的一些设计理念之一
是多个并行的存储器空间的,相
到一个单一的线性空间。该lanSC300
微控制器可以处理多达四个不同的
16M字节的存储器空间: DRAM , ROMCS , DOSCS ,
和本地/ ISA总线。该lanSC300微控制器
另外多达四个不同的64兆字节的支持
PCMCIA存储空间(有两个PCMCIA
插座和每个插座包含数据和
属性存储空间) 。该lanSC300
单片机,内部视频时配置
模式,包含一个小的32 KB的SRAM的显示空间。
该lanSC300微控制器支持的几个
不同专业的内存管理方案
(大多数基于某种形式的后向兼容性的) ,
但是它们可以被分为两大类,这将是
称为翻译和非翻译存储器
管理。在非翻译方案中, MMU
硬件只需选择不同的记忆之一
用于读或写,并且存储器地址空间
原样传递到硬件控制该
注意:
该lanSC310微控制器不
支持内部LCD控制器,但类似的
禁用必须使用总线来执行
CON组fi guration寄存器。
ROMCS空间与非翻译
内存管理
复位时, CPU的地址范围0F0000-0FFFFF
和FF0000 - FFFFFF被映射到ROMCS 。这
默认映射可以很容易处理的早期远
从复位起始地址跳转的FFFFF0到
段F000在实模式下。这是正常的
行为的PC / AT兼容的BIOS 。 (见
处理器行为的复位在说明书
上一节有权在复位和SMI行为。 )
因为这是不被翻译的存储器管理,
MMU的简单检查CPU的地址,选择
该ROMCS空间,并且将地址传递
未翻译的地址线。这意味着该
两个默认的范围, 0F0000-0FFFFF和FF0000-
FFFFFF ,将只映射到相同的地址
该解码少于20根地址线的设计
ROMCS空间(小于1兆字节) 。你必须
意识到如果引导ROM是大于1兆字节大。为
2
义隆
TM
SC300和lanSC310微控制器的内存管理
例如,在一个2兆字节的引导ROM ,前16个字节的
引导ROM可能不得不被保留给一个远跳
在F000段的位置,这将驻留
正下方1兆字节在同一个引导ROM 。
当代码已经启动,你有一定的控制
在该CPU的地址会导致访问到
ROMCS 。使用lanSC300单片机指数
寄存器51h的和为65h时,CPU可以映射到ROMCS
在五个不同的64 -K字节的区域的地址空间:
A0000 - AFFFF , C0000 - CFFFF , D0000 - DFFFF ,
E0000 - EFFFF和F0000 - FFFFF 。 64字节
略低于16兆字节的区域, FF0000 - FFFFFF ,总是
映射到ROMCS 。这是唯一的区域之间可能
被映射到ROMCS不使用翻译
内存管理。
粒度为这些阴影区域是16
字节,而粒度为ROMCS
映射是64字节。因此,你可以有一个
64 KB区域是本地/ ISA总线的混合物
DRAM和16 KB的边界,但你不能
有一个64 KB区域是ROMCS的混合物
和DRAM 。
之后, DRAM的大小已设置了编程
DRAM控制器,从1兆字节到15的任何量
兆字节可从DRAM大小使用减去
指数注册6FH 。在DRAM起始地址保持在
0和结束地址被减小。它甚至可以
减去使用该方法的整个DRAM空间。
访问超出了新的DRAM结束地址复归
本地/ ISA总线的空间。然而,上述1的部分
兆字节可以被重定向到DOSCS空间,如
在下面的部分中讨论。
DRAM和非翻译记忆
管理
前任何的DRAM ,可以使用引导代码必须
编程DRAM控制器(参照表中的
配置寄存器部分
lanSC300
单片机编程参考手册
,
订单# 18470 ) 。编程控制器设置
DRAM的空间的总大小。从DRAM空间大小
512字节到16兆字节的支持。在DRAM
控制逻辑将所有的系统DRAM
成,在开始一个统一的地址空间
从0地址0默认情况下, CPU的地址顶端
DRAM的将被映射到DRAM的空间,在
优先考虑本地/ ISA空间。有两种
例外:
s
从640字节到1兆字节的窗口( A0000-
FFFFF )不会自动映射到DRAM 。
在这个区域A0000 - FFFFF映射保持什么
这是已启用的DRAM控制器。 (A
地址范围A0000 - FFFFF的介绍
在地址范围A0000 - FFFFF描述
下面一节)。它可以映射地址
范围C0000 - FFFFF到DRAM中,也描述了
下文。它不可能直接映射地址中
范围A0000 - BFFFF到DRAM 。
s
64K字节窗口在CPU地址顶部
空间( FF0000 - FFFFFF )总是被映射到
ROMCS 。
该lanSC300微控制器提供了数量有限
编程控制DRAM的使用
非翻译内存管理:
s
在该地区的C0000 - FFFFF ,任何16 KB区域
被映射到本地/ ISA总线(即,
不
映射到ROMCS )可通过将被重定向到DRAM的
在指标设置位寄存器65H , 68H , 69H和。
该功能有时也被称为ROM阴影,
因为它可以让速度慢的ROM阴影成
更快的DRAM 。在变址寄存器65H的标志让这
阴影内存进行写保护。注意
DOSCS空间与非翻译
内存管理
该DOSCS空间是16M字节的空间。的任何部分
DOSCS空间复位自动映射。为
非翻译存储器管理(未使用
MMS) ,可以编写索引寄存器B8H地图的任何
量为1兆字节减去64字节高达15兆字节
MI在1兆YT ê新加坡国立大学6 4 K,在德的DO SC S S小PA CE
增量。此非翻译DOSCS空间总是
结束地址FEFFFF 。作为一个例子,如果3兆字节
减去64字节映射,地址D00000-
FEFFFF将被映射到DOSCS 。记住,
区域FF0000 - FFFFFF始终映射到ROMCS ,
占零下64字节。
在所有情况下, DOSCS映射是不允许
重叠,映射到DRAM的一个范围。指数
寄存器6FH可以用来限制DRAM的大小
如果有必要的空间。这DRAM限流必须做
前DOSCS映射功能。
再次,因为这是不被翻译的存储器
管理, MMU只需检查CPU
地址,选DOSCS空间,并且通
未翻译地址的地址线。
地址范围A0000 - FFFFF
该地址ESS系列A0000 -FFFFF是处理
不同的PC / AT兼容。本节
总结了不同的方式A0000 - FFFFF可以
映射。
复位时,映射A0000 - FFFFF是:
A0000 - B7FFF :
B8000 - BFFFF :
C0000 - EFFFF :
F0000–FFFFF:
本地/ ISA
显示SRAM
本地/ ISA
ROMCS
义隆
TM
SC300和lanSC310微控制器的内存管理
3
下面还应当注意:
s
32 KB的SRAM的显示区域, B8000-
BFFFF ,可以通过禁用恢复到本地/ ISA
内部视频控制器,或者它可以被移动到
B0000 - B7FFF通过设置内部视频
控制器HGA模式。
s
当DRAM被使能的范围内, A0000 - FFFFF
不会自动映射到DRAM中。它的映射
仍然是那是什么DRAM启用之前。
s
64字节的粒度,在区域块A0000-
AFFFF和C0000 - FFFFF可以被映射到
ROMCS 。
s
具有16字节的粒度,在该地区的块
C0000 - FFFFF这是不是已经映射到
ROMCS可以映射到DRAM中。
s
具有16字节的粒度,在四个块
系列A0000 - AFFFF和多达8个连续的
取值范围为C0000 - F3FFF块可以被映射
使用MMSB和MMSA ,它使用转换
内存管理。这个翻译记忆
管理允许每个16字节区域是
映射到任何16K字节边界的任何地址
空间除了本地/ ISA总线。这是讨论
进一步在下一节。
启用或禁用。当一个16字节页
残疾人,在这个范围内映射到任何地址
它们将映射到具有非翻译存储器
管理。例如,如果MMSA开始于
C0000和第4页( D0000 - D3FFF )被禁用,
那么D0000 - D3FFF会去任何地方/ ISA总线,
ROMCS ,或到DRAM的使用中所讨论的规则
在上一节题为非翻译
内存管理。
一个页面可以在MMSA或MMSB启用仅当
该页面未翻译的映射是本地/ ISA总线。
一个页面不能有非翻译映射到
DRAM或ROMCS空间。例如,如果F0000-
FFFFF启用ROMCS映射和MMSA是
将要开始的D4000 ,您不能启用第7页
MMSA ( F0000 - F3FFF ),因为F0000 - F3FFF是
已经映射到ROMCS 。然而,请注意,若
F0000 - FFFFF针对ROMCS映射禁用,你
可以使MMSA第7页,仍然有F4000-
FFFFF映射到DRAM 。这是可能的,因为
可以使在这一地区的DRAM映射或
在16K字节边界禁用。
翻译中的内存管理
系统管理模式
在lanSC300系统管理模式( SMM )
微控制器包括下列的映射。
s
当SMM是经由一SMI ,CPU的地址输入
60000-63FFF地图翻译的DRAM位置
上一个16字节边界。系统状态保存
在这个区域的所述SMI执行前的下
开始。地址是60000映射到DRAM
空间利用可编程的变址寄存器A9H
和AAh时。该区域中,有时也被称为SMM的RAM中,
因此,可以映射到一个DRAM的位置,如
AC000 - AFFFF ,这通常是不使用的,因为
AC000 - AFFFF不能被映射到DRAM中
正常(非SMM)系统操作。这使得
SMM RAM中是不可见的正常系统
操作。
s
除了该区域60000-63FFF ,其余
在CPU地址映射的是相同的东西它
是SMI之前。请记住, SMI
处理程序开始执行时FFFFF0和
FFFFF0始终映射到ROMCS (这是完全
独立的0F0000块中的映射
下1兆字节) 。另外,请记住,
0F0000块不一定会指向ROMCS
如果它已被从处理器复位重新编程。
TRANSLATED内存管理
当lanSC300微控制器执行
翻译内存管理,这意味着
除了选择正确的地址的地址
空间为每个访问。在CPU的地址窗口
空间被映射到一个特定的目标位置中的
目标地址空间。
该lanSC300微控制器工具翻译
通过两个MMS Windows内存管理: MMSA
和MMSB 。 MMSA由八连冠
16K字节的区域开始,在任何16 -K字节边界
从C0000 - D4000 。 MMSB由四个
开始A0000连续16 KB的地区。每
16K字节的区域可以被映射到任何16K字节
边界除了本地/ ISA总线的任何地址空间。
这使得映射到DRAM中的任何地址,
ROMCS ,或DOSCS 。在lanSC300
微控制器而已,你也可以映射到4
PCMCIA存储空间。需要注意的是MMSA和MMSB
在访问四PCMCIA的唯一手段
存储空间。它们无法通过访问
非翻译存储器管理。
编程MMSA和MMSB的细节是
在第二章中所描述
lanSC300
单片机编程参考手册
,
订单号18470 。以下应注意:
s
所有在任MMSA或MMSB 16K字节页
可以启用或通过一个全球性的开关关闭
每个MMS系统。此外,每个个体
在MMSA或MMSB 16K字节的页面可以是
4
义隆
TM
SC300和lanSC310微控制器的内存管理
参考资料
s
义隆
TM
SC300单片机数据表
,
订单# 18514
s
义隆
TM
SC310单片机数据表
,
订单# 20668
s
义隆
TM
SC300程序员参考手册
,
订单# 18470
s
义隆
TM
SC310程序员参考手册,
订单# 20665
s
义隆
TM
SC300和lanSC310微控制器
GATEA20功能澄清
,订单号21811
商标
AMD ,AMD标识及其组合是Advanced Micro Devices , Inc.的商标。
Am386是注册商标和Elan是Advanced Micro Devices公司的商标。
本出版物中使用的产品名称仅用于识别目的,可能是其各自公司的商标。
义隆
TM
SC300和lanSC310微控制器的内存管理
5