S12(X)系列MCU的存储器分页访问机制

Posted wsc19950809

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了S12(X)系列MCU的存储器分页访问机制相关的知识,希望对你有一定的参考价值。

本文由“汽车电子expert成长之路”公众号中“S12(X)系列MCU的片上存储器资源与分页访问机制详解”文章整理得来

最近接触S12MCU中关于FLASH的擦写相关知识,需要捋清楚几个概念。  (16位单片机  具体内存分配看 MC9S12G系列芯片手册中 40 页

本地地址(Local Address):也称为局部地址,指内核CPU能够线性访问的地址,对于16位MCU来说就是0x0000~0xFFFF的64KB地址空间;

逻辑地址(Logic Address):  也可以称为虚拟地址,是链接文件.prm和内存映射文件.map以及默认的编译结果S19文件所使用的地址。为分页号 + 分页窗口(Paging Window)组成的24-bit间断地址空间,对逻辑地址的访问需要使用__far指针。

全局地址(Global Address):也称为物理地址(Physical Address),是芯片在设计时给P-Flash分配的线性连续地址空间,一般在多P-Flash进行操作(比如编写P-Flash驱动程序,对P-Flash进行擦除、编写/写入等)时使用。

按照地址是否位于分页段,可将地址分为未分页地址(Non-paged address/non-bank address)及分页地址(paged/bandked address)

   ① 分页地址:其实就是逻辑地址。根据不同的器件,其可能存在P-Flash分地址、RAM分页地址和EEPROM/D-Flash分页地址。

        P-Flash分页地址:其地址空间是16KB对齐的的间断地址,由P-Flash分页号+Flash分页窗口地址(0x8000~0xBFFF,本地地址的第三个和16KB地址空间)组成。Flash分页号(Page Number)保存在存储器映射控制器PPAGE寄存器(地址为0x0015)中,用于在通过分页窗口访问Flash时索引逻辑地址。

        RAM分页地址:其地址空间为4KB对齐的间断地址,由RAM分页号+RAM分页窗口地址(0x1000~0x1FFFF,其在本地地址的第一个16KB地址空间)组成。RAM分页号(Page Number)保存在存储器映射控制RPAGE寄存器(地址为0x0016)中,用于在通过分页窗口访问RAM时索引逻辑地址。

        EEPROM分页地址:其地址空间为1KB对齐的间断地址,由EEPROM分页号+EEPROM分页窗口地址(0x0800~0x0BFF,其在本地地址的第一个16KB地址空间)组成。EEPROM分页号(Page Number)保存在存储器映射控制器EPAGE寄存器(地址为0x0017)中,用于在通过分页窗口访问EEPROM时索引逻辑地址。

              

   ② 未分页地址:本地地址中除了分页窗口(0x8000~0xBFFF,第三个16KB地址空间)之外的48KB地址空间都被称为未分页区。

逻辑地址直接由分页号+分页窗口组成,该地址容易得到。例如 Page E的Flash对应的逻辑地址为0xE8000~0xEBFFF。

全局地址由逻辑地址计算得出:

       分页段: 全局地址 = ( 分页号  <<  14 )  |  ( 本地地址  -  0x8000 )

       非分页段: 全局地址 =  本地地址 | 0x30000

以上是关于S12(X)系列MCU的存储器分页访问机制的主要内容,如果未能解决你的问题,请参考以下文章

MC9S2XS28单片机基本知识点

python s12

freescale飞思卡尔 HC9S12 系列单片机 Flash擦写详解之Flash控制器指令执行

STM32F103的MCU简介

操作系统-虚拟存储器

stm32F103RCT6概括