质量是什么意思简单点:如果要求程序在MMU使能状态下运行,即系统工作在虚拟地址模式

来源:百度文库 编辑:偶看新闻 时间:2024/04/30 00:31:48

在上述系统初始化过程中有以下两点需要注意,如果处理不好就可能出现程序跑飞的情况。

1)如果需要将程序从flash搬移到DRAM中运行

在现代嵌入式系统中,由于DRAM的速度比flash的速度快很多,所以除了极少数对性能要求不高但对成本要求很高的系统把程序放在flash中并一直在flash中运行外,大部分嵌入式系统都是将程序从flash芯片搬到DRAM芯片中运行,这样就会存在一个问题,因为我们编译链接程序都是将程序链接到程序最后运行的场所DRAM中的地址上,但是系统启动时只能从flash中读取指令,所以从系统启动读取的第一条指令到进入到DRAM运行前的程序代码是与地址无关的,如果要跳转到某个标号处运行,必须是基于pc的,不能是绝对跳转指令,因为此时程序存放的位置与其所链接到的位置不同,如果使用跳转指令,程序将跑飞。

2)如果要求程序在MMU使能状态下运行,即系统工作在虚拟地址模式

MMU使得系统能够更好地管理内存,因为MMU可以将同一段物理内存映射到多段虚拟地址空间上,而且可以将物理上不连续的内存映射到连续的虚拟内存空间(减少内存碎片),另外MMU还可以控制虚拟内存区段的缓冲特性和访问权限,所以MMU可以提高内存的使用效率,使程序仿佛能够使用比实际物理内存容量多得多的内存空间,提高系统性能,同时也增加了系统的安全性,所以在带有MMU功能的处理器系统中,一般都应该使能MMU,充分利用其功能。这样一来也会导致一个和上面相同的问题,因为在使用MMU的系统中,各种物理存储空间的实际物理地址与对应的虚拟地址设置得各不相同,包括flashDRAM的物理地址与虚拟地址。系统启动时MMU被禁止,系统运行在实模式即物理地址模式,但程序却被编译链接到了虚拟地址上,这样在使能MMU之前,存放在flashDRAM中的程序的实际地址(物理地址)与其链接到的地址是不相同的,所以从系统启动到MMU使能之间的程序代码也应该是与地址无关的,如果要跳转到某个标号处运行,必须是基于pc的,不能是绝对跳转指令,否则程序也将跑飞。

怎样才能使电脑在睡眠状态下提示是否关闭正在运行的程序? 在Windows下运行程序的窗口最小化后,该程序处于( )状态。 WINDOWS在待机,休眠,等待的状态下,运行的程序是不是继续 C#做的程序在哪些操作系统下能运行 怎样使程序在后台运行,在系统的托盘里面不显示程序状态图标 为什么有些程序能在WINXP SP2下运行 但不能在WINDOWS2000下运行 电脑休眠状态下 程序拧运行吗? 谁会用C语言编出一段不少于50行的程序 要求输出结果是一个图形 ?必须能在TC环境下运行 在BIOS中如何设置能让DDR400的内存运行在266的状态下 计算机在有网络的状态下即在QQ聊天时运行速度慢,而且QQ程序占CPU每次都是57%或者更高,这 是什么原因? 如何把VS.NET2003下的能运行程序改在VC++6.0下运行 笔记本电脑在使用状态下,把盖合上后怎么才能让里面的程序继续运行 如何使VB程序在非活动状态(后台运行)时响应"KeyPress"? 电脑在睡眠状态的时候程序能不能运行? 在运行中能运行哪些程序? 如何能使电脑在待机状态下,下载文件? 一些英文软件为什么在英文状态下运行要比在中文状态下稳定? 如何使用虚拟光驱制作dos启动?这样的话在安全模式下能运行吗?或在哪种状态下运行恢复系统? PQmagic要在什么状态下才能运行 ? 为什么网络命令在DOS状态下不能运行 如何在不进入系统的状态下运行CHKDSK? 为什么getchar()不能在图形状态下运行? 怎样在纯DOS状态下运行GHOST??????? 如何在windows下运行Azureus程序