[求助]关于MC9S12XDP512的RAM的问题?
- UID
- 348950
- 性别
- 男
|
[求助]关于MC9S12XDP512的RAM的问题?
MC9S12XDP512有32 Kbytes 的RAM,谁能解释一下如何使用这32K的RAM空间,使用的时候需要一些配置吗?建立的工程中的prm文件中有non-paged RAM和paged RAM的分法,或者在数据手册里有8K RAM和4k RAM window的说法。谁能解释一下他们的关系,他们分别是怎样工作的?谢谢! |
|
|
|
|
|
- UID
- 341189
- 性别
- 男
|
freescale的S12X系列的存储空间映射比较复杂,这里简单对RAM的使用介绍一下(以MC9S12XDP512的32K RAM)为例。
首先明确一点:使用时不需要任何配置。映射关系由硬件已经确定了,用户无需也无法更改。(这与S12不同)
再明确一点:CPU只能直接访问(不通过页面寄存器)64K的本地空间,其中有12K是RAM空间。地址范围是0x1000~0x3FFF。CPU通过3个页面寄存器(这里暂不讨论GPAGE)可以访问8M的全局空间,对于MC9S12XDP512,在这8M的全局空间中有32K的RAM,地址范围用全局地址表示是0xF_8000~0xF_FFFF。下面说明RAM的12K本地空间和32K全局空间的映射关系。
1) 12K本地空间中的0x2000~0x3FFF的8K空间为非页面空间(也就是prm文件中的non-paged RAM,在prm中通常用本地地址表示);在全局页面中对应为0xF_E000~0xF_FFFF。
2) 另外的0x1000~0x1FFF的4K空间为页面空间,也就是您提到的4K RAM的窗。通过这个窗口,在RAM页面寄存器(RPAGE)的辅助下可以访问所有的32K的RAM。这32K RAM分为8个页面,每个页面大小为4K,页面号为0xF8~0xFF。通过设置RPAGE为相应的页面号,就能通过这4K的窗口来访问8个页面。在prm文件中通常不定义4K窗口,而是定义8个页面。通常在prm中通常用逻辑地址表示这8个页面而不是用全局地址。所谓逻辑地址就是:高8位是页面号,低16位是4K窗口的本地地址。
3) 另外您可能会注意到在prm中RAM最后两个页面的定义被注释掉了。原因是他们对应的全局地址为0xF_E000~0xF_FFFF,亦即为本地的8K RAM空间,这在non-paged RAM中已经定义过了,故不重复了。
4) 最后强调一点:当CPU直接访问8k本地空间时,RPAGE无效,硬件直接映射到全局地址为0xF_E000~0xF_FFFF;当CPU访问4K本地空间时,RPAGE有效,CPU将其内容理解为页面号(F8~FF)。注意对应全局地址为0xF_E000~0xF_FFFF。
|
|
|
|
|
|
- UID
- 517889
- 性别
- 男
|
感谢楼上的,俺最近也在用xd。如果能结合一个例子就更好了。 |
|
|
|
|
|
- UID
- 172853
- 性别
- 男
|
|
|
|
|
|
- UID
- 517905
- 性别
- 男
|
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
可以参考这个帖子: http://bbs.eccn.com/ecbbs/dispbbs.asp?boardID=3&ID=83424&page=1 |
|
|
|
|
|