garfield

【原创】kinetis处理器k60存储器映像

0
阅读(4897)

ARM Cortex-M4 为32 位处理器内核。内部的数据是32 位的,寄存楞是32 位的,存储器接口也是32 位的。ARM Cortex-M4 采用哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行进行。这样一来数据访问就不再占用指令总线,从而提升了性能.为实现这一特性, ARM Cortex-M4 内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间〈一个统一的存储器系统).下表列出了CPU 不同频率、不同封装的K60 系列微控制器的存储器大小。

image

    Flex 存储器是飞思卡尔的新一代布储器技术,为需要片上EEPROM、额外程序或数据的开发者提供了多样化的解决方案。Flex 存储器和SRAM 一样简单快速,当用做高耐久性擦写EEPROM 时,在完成程序运行和擦除功能时不需妥用户或者系统干预。同时, Flex 存储器能提供平行于主程序闪存的额外间存(FlexNVM ) 用于叙据或有程序存储. Flex 存储器使用户能完全配置Fle剧VM 和FlexRAM模块,从而为应用提供最均衡的存储器资源。用户可配置的参数包括:EEPROM 大小、擦写次数、写大小和额外程序/数据闪存的大小。FlexNVM可被用做EEPROM配置的一部分、额外的程序或者数据闪存,也可以一部分用做闪存同时另一部分被用做增强型EEPROM 备份。FlexRAM 能被用做EEPROM 配置的一部分或者额外的系统RAM 。
    Kinetis 系列的MCU 内部有32 根地址线,可寻址4GB 空间,地址范围为OxOOOO OOOO~OxFFFF
FFFF. K60 系列微控制器的存储器空间地址映像如发2-5 所示。从学习及应用角度,读者主要了解程序及变量等资源存放情况。

image

image

1、中断向量表、程序代码及常量的存放地址

中断向量表、程序代码及常量存放于flash中,k60的中断向量表、程序代码及常量的存放区域是0x0000_0000-0x0fff_ffff。k60的程序代码编译连接后,中断向量表将从0x0000_0000地址开始存放,程序代码从0x0000_0410开始存放。存放完代码空间后,常量紧随其后。

MK60N512VMD100芯片的实际flash存储器大小是512kb。其地址范围是0x0000_0000-0x0007_ffff。中断向量表、程序代码及常量的实际存放地址、存放长度在连接命令文件中规定。

2、全局变量、局部变量的存放地址

全局变量及局部变量存放于ram中,k60系列处理器的ram地址分为两个部分,第一部分称为sram_l,地址范围是0x1800_0000-0x1fff_ffff,共128mb;第二部分被称为sram_u,地址范围是0x2000_0000-0x200f_ffff,共1mb

mk60n512vmd100芯片的实际ram存储器的大小是128kb,其地址范围是0x1fff_0000-0x2000_ffff。在连接命令文件中可以看到ram的分配情况。

k60芯片初始化时将在flash区域0x0000_0000位置开始的中断向量表复制到ram的起始位置0x1fff_0000中,长度为410个字节。在此之后,ram存放用户sdata、data、bss段等数据段,在这些数据段存放完后紧接着就是堆和栈的地址空间,堆默认大小是4kb,栈默认大小是1kb,用户可以通过链接命令自行配置大小。

在链接命令文件中,应将堆栈指针sp配置在实际ram存储器的最高地址。进栈时,堆栈指针向ram地地址方向移动。出栈时,堆栈指针sp向ram高地址方向移动。堆栈指针sp的最低两位永远是0,堆栈总是4字节对齐的。