2、要在不影响指搭陪此令执行速度的同时实现地址变换,必须有硬件地址变换机构的支持,即须在系统中增设一个重定位寄存器,用它来存放程序在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。
程首闹序永远是从“0”地址开始运行的。记住!还是不好描述。这样消巧说吧,举个嵌入式例子,
我要做这样一件事情:我需要将片外FLASH的程序,加载到SDRAM里运行。怎么做?
第一部,我会写一个启动程序者桥罩,启动程序的作用,就是将FLASH的内容,搬到SDRAM。
此时的程序运行地址,就是启动文件的地址(ROM地址),比如0x00开始。
将数据搬至SDRAM后,我需要运行SDRAM的程序怎么办?(SDRAM地址比如是0X20000000)
第二步:地址重映射,将SDRAM的地址,重新映射成,0x00, 即举例的ROM,和SDRAM地址发送了交换
这个是重定位地址。即SDRAM的地址入口变为0x00.
第三部,芯片会重新启动,从“0”地址开始运行,即使从,我们的SDRAM里开始运行了,也就是FLASH的程序了。
不知道这样说你能明白不?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)