学习微机原理。老师总是在将空间的概念,前段时间研究了一下。今天看到这个帖子。不错。。 之前以为哈佛结构和冯 诺依曼结构 从存储器上就能够分开,看到这个。。其实应当是总线的区别
原帖地址 :
http://blog.chinaaet.com/detail/29768
ARM Cortex-M4 为32 位处理器内核。内部的数据是32 位的,寄存楞是32 位的,存储器接口也是32 位的。ARM Cortex-M4 采用哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行进行。这样一来数据访问就不再占用指令总线,从而提升了性能.为实现这一特性, ARM Cortex-M4 内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间〈一个统一的存储器系统).下表列出了CPU 不同频率、不同封装的K60 系列微控制器的存储器大小。
3.png (354.09 KB, 下载次数: 0)
下载附件
2014-12-24 13:03 上传
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字节对齐的。
大牛,这只是一篇学习笔记
一周热门 更多>