新闻中心
联系我们
Contact us
Contact us
- 总部电话010-51727811
- 客服热线400 779 6696
- 更多联系信息
虚拟存储的嵌入式存储系统(一)
时间:2012-11-09 09:23 来源:飞客数据恢复 作者:飞客数据恢复工程师
嵌入式系统由嵌入式硬件和固化在硬件平台中的嵌入式软件组成。传统的小规模嵌入式系统,软件多采用前后台的方法,通常应用于实时性要求不高的简单场合;对于复杂的应用场合,较为普遍的做法是给系统配上嵌入式实时操作系统(RTOS),这样不仅能够使系统具有良好的实时性能,降低软件编制的工作量,还可以提高整个系统的稳定性。此外,为了简化用户程序,系统通常要提供一些必要的库函数供用户调用。同前后台系统相比,这种实时嵌入式系统增加了系统存储空 间的开销。Intel 8051系列及各种兼容的单片机因其极高的性价比、丰富的库函数和长期的技术积累等背景而被广泛应用于各种嵌入式领域中。受传统单片机寻址空间的限制,嵌 入式应用中经常需要进行存储空间扩展。本文借鉴传统计算机系统设计中的虚拟存储技术,以8051单片机为例提出一种采用页面分组和虚拟接口技术扩展存储空 间的方法。本方法与Keil C编译器具有良好的兼容性。
1、存储系统的组织
虚拟存储系统
计算机系统中常采用虚拟存储技术来扩展存储系统容量,页式虚拟存储器是常用的一种组织方法。在这种方法下,整个虚拟地址空间和主存空间均被分成容量相等的 若干页,地址变换机构(通常是一个快速地址变换表)建立了虚拟空间到主存空间虚页到实页的映射。
虚拟存储系统利用计算机CPU中的一组寄存器堆作为页表基址寄存器,与页表一起给出用户程序地址。实际计算机系统的页式虚拟存储要比这复杂得多,还需考虑
单片机嵌入式系统程序存储区扩展
受虚拟存储系统启发,我们把上述方法作了一些修改以应用于嵌入式系统中。由于系统设计选用的外部程序存储器容量为256k,而一般单片机(如 8051系列)的寻址空间为64k,为简单起见,以64k为一页,将256k虚拟地址分为4页映射到单片机的64k空间。嵌入式系统中地址变换机构可被简 化:单片机没有专用的页表基址寄存器,可以通过额外的端口线(如P1.0,P1.1,P1.2等)作为基址指定不同的页面,页表查询可用一个跳转表实现。 然而页面切换前后必须保证能够正确访问到跳转表,因此所有64k页面都需要有一个完全相同的代码段用来存放跳转表和中断矢量等公共资源。
为提高存储器利用率可采用特殊的结构,其中公共段中存放了高32k段之间相互调用所需要的跳转表。各段相互调用之前应先跳转到公共段,执行页面切换后再跳转到被调 用程序的入口,这就实现了18位虚拟地址到16位主存地址的变换。不妨以P1.0,P1.1,P1.2作为页面基址来指定不同的页,相应的跳转表程序结构 如下:
ADDR:CLR EA ;关中断
SETB/CLR P1.0 ;切换页面
SETB/CLR P1.1
SETB/CLR P1.2
SETB EA ;开中断
JMP REAL_ADDR ;跳转
在公共段(256k存储芯片的低32k)中存放操作系统和提供给用户的其他库函数,其他各段用来存放嵌入式系统的用户程序。
以上考虑了复位时页面应切换到公共代码区。Keil C51编译器是单片机开发应用中非常流行的一种高效编译器,它支持上述页面分组技术。
1、存储系统的组织
虚拟存储系统
计算机系统中常采用虚拟存储技术来扩展存储系统容量,页式虚拟存储器是常用的一种组织方法。在这种方法下,整个虚拟地址空间和主存空间均被分成容量相等的 若干页,地址变换机构(通常是一个快速地址变换表)建立了虚拟空间到主存空间虚页到实页的映射。
虚拟存储系统利用计算机CPU中的一组寄存器堆作为页表基址寄存器,与页表一起给出用户程序地址。实际计算机系统的页式虚拟存储要比这复杂得多,还需考虑
单片机嵌入式系统程序存储区扩展
受虚拟存储系统启发,我们把上述方法作了一些修改以应用于嵌入式系统中。由于系统设计选用的外部程序存储器容量为256k,而一般单片机(如 8051系列)的寻址空间为64k,为简单起见,以64k为一页,将256k虚拟地址分为4页映射到单片机的64k空间。嵌入式系统中地址变换机构可被简 化:单片机没有专用的页表基址寄存器,可以通过额外的端口线(如P1.0,P1.1,P1.2等)作为基址指定不同的页面,页表查询可用一个跳转表实现。 然而页面切换前后必须保证能够正确访问到跳转表,因此所有64k页面都需要有一个完全相同的代码段用来存放跳转表和中断矢量等公共资源。
为提高存储器利用率可采用特殊的结构,其中公共段中存放了高32k段之间相互调用所需要的跳转表。各段相互调用之前应先跳转到公共段,执行页面切换后再跳转到被调 用程序的入口,这就实现了18位虚拟地址到16位主存地址的变换。不妨以P1.0,P1.1,P1.2作为页面基址来指定不同的页,相应的跳转表程序结构 如下:
ADDR:CLR EA ;关中断
SETB/CLR P1.0 ;切换页面
SETB/CLR P1.1
SETB/CLR P1.2
SETB EA ;开中断
JMP REAL_ADDR ;跳转
在公共段(256k存储芯片的低32k)中存放操作系统和提供给用户的其他库函数,其他各段用来存放嵌入式系统的用户程序。
以上考虑了复位时页面应切换到公共代码区。Keil C51编译器是单片机开发应用中非常流行的一种高效编译器,它支持上述页面分组技术。