购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6.1 内存的分配和部署

不同的控制器芯片内存RAM的大小不一,内存的地址范围也不同,可供用户管理和使用的区域也有所不同。下面以Kinetis系列MK60DN512ZVLQ10控制器和CW v10.5嵌入式软件集成开发平台下,链接文件intflash.ld对RAM的分配和部署情况进行说明。K60微控制器RAM

共有128 KB,地址范围为0x1FFF0000~0x2000FFFF,如图2-6所示。

在链接文件intflash.ld配置下,定义RAM的末地址end_of_kd只到0x2000FFF0,预留了15字节,防止内存块地址对齐时出现地址越界的发生。同样,_KERNEL_DATA_END也定为0x2000FFF0。从0x1FFF0000开始的一段区域用于存放从Flash复制来的数据,系统启动时startup.c文件会初始化这段数据区,该区包括中断向量表、.DATA和.BSS等数据。在采用段式内存管理的架构中,BSS段是英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,BSS段属于静态内存分配;另一个.data段用来存放程序已初始化的全局变量;而函数内的局部变量都在栈上分配空间。

在_KERNEL_DATA_START接下来的一段区域用于MQX内核数据区,相当于MQX操作系统的安装表区,所有的动态中断向量链表、任务管理链表、I/O驱动管理、消息管理、内存池管理等,都在KERNEL_DATA中登记安装,该区域在MQX启动过程中进行初始化。_KERNEL_ DATA_START是在链接文件intflash.ld中定义的变量,它的地址值随着不同工程定义的全局变量的多少会发生改变,但对某一个具体的工程,编译后从.xMAP映像文件中可以看到它的具体地址。从start到_KERNEL_DATA_END的这大段区域是用户可用的内存区,用于创建内存池进行内存管理的区域。

图2-6 MK60DN512ZVLQ10的RAM部署 rAbhFdP8eZfQZL7W8BqUIjdYK2wCBPNDCJdy42pLiLij9Z2PevxYhe5KtOaO+c/h

点击中间区域
呼出菜单
上一章
目录
下一章
×