码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-03-19 17:35:31      阅读:415      评论:0      收藏:0      [点我收藏+]

标签:编译   写入   成长   公众号   number   log   对齐   mcu   cpu   

本文由“汽车电子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的存储器分页访问机制

标签:编译   写入   成长   公众号   number   log   对齐   mcu   cpu   

原文地址:https://www.cnblogs.com/wsc19950809/p/8603346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!