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进行擦除、编写/写入等)时使用。

地址映射:CPU的寻址是对物理地址操作,但是单片机的RESET之后只有相对地址。相对地址,顾名思义,是个相对的,没有映射之前,CPU是找不到他的,也用不了相对地址的数据。

为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射。

 

按照地址是否位于分页段,可将地址分为未分页地址(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

 

转载于:https://www.cnblogs.com/wsc19950809/p/8603346.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值