欢迎来到天天文库
浏览记录
ID:6571137
大小:29.50 KB
页数:2页
时间:2018-01-18
《嵌入式系统内存结构分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、内存结构:学习新系统执行环境的第一步都是相似的,就是系统如何使用内存。下图粗略的描述了Motorola68K系列通用微处理器的内存映象,很具有代表性。系统空间代码空间ROM数据空间I/O空间………….RAM数据空间堆栈0x000000000xFFFFFFF嵌入式系统内存一般为线性内存,不需要段页式管理,物理地址等于逻辑地址,所能寻址空间即为物理地址空间大小。I/O空间左边的都可以用ROM实现,而右边的可以用RAM实现。系统空间:MOTOROLA68K系列通用微处理器为异常保留向量表的1024字节内存空间9256个长字)。异常向量是硬连线地址,处理器用其标识出在系统遇到中断或其他异常时
2、将运行哪段代码。由于68K中每个向量都设为4字节长,所以他可以支持256个异常向量。代码空间:在系统空间之上的代码空间存放着指令。一般要把系统和代码空间存放在同一个物理ROM设备中,使它们紧紧挨在一起是非常有意义的。数据空间:在代码空间之上,ROM数据空间存放常量数值,如错误信息或其他字符串。在数据空间之上内存结构没有绝对严格的规则,而更多依赖于硬件设计时的定义。因而,图中的内存模型仅是个例子,并不意味着要按这种方式来做。RAM的三个基本区域需要标明:栈、自由内存(RAM数据空间)和堆栈:栈用来保存当前运行状态和所有暂停运行的进程上下文。因此,栈包含所有的活动局部或自动变量以及函数和
3、中断的返回地址。只有提供栈空间,程序才能进行中断服务和函数调用。栈一般位于内存的高端,这是因为68K系列以递减内存设置栈,也就是栈按从上向下的方向增长。把栈放在RAM右端意味着栈的逻辑底在RAM地址的最高处,它被赋予内存空间的最高值并向下增长。自由内存(RAM数据空间):所有静态分配的读写变量都放在自由内存中。全局变量是最常见的形式,C语言中的“static”型变量也放在这里。堆:所有动态分配的(使用new或malloc)的对象和变量都放在堆中。无效内存空间:图中的省略部分表示无效的地址空间,但不能指向任何内存。I/O空间:最后的内存组成部分是映射到内存的外部设备。图中,这些设备放在
4、I/O空间区域。68K不为设备分配单独的地址空间,这些I/O设备被认为是存在于RAM和ROM之间另外一些空白内存区域的地址中的。
此文档下载收益归作者所有