打印

中断向量为什么要重定位

[复制链接]
5237|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuhany|  楼主 | 2011-6-15 17:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
shimx| | 2011-6-15 17:23 | 只看该作者
什么叫做重定位啊?

使用特权

评论回复
板凳
wuhany|  楼主 | 2011-6-15 17:34 | 只看该作者
顾名思义,我的理解就是改变中断向量保存的内存地址。

使用特权

评论回复
地板
dengdc| | 2011-6-15 17:36 | 只看该作者
中断向量重定位,第一次听说,关注中

使用特权

评论回复
5
易达口香糖| | 2011-6-15 18:44 | 只看该作者
把内核烧录到nandflash里面。这部分代码记作A,准备拷贝到内存中。A的代码在内存中的地址和nandflash中A的代码地址是不一样的。开始启动时,A代码在nandflash中执行,但是A代码的地址是内存中的地址,这时是无法找到A代码的,所以要重新定位,计算出A在nandflash中的地址。
我是这样理解的。

使用特权

评论回复
6
just_soso| | 2011-6-15 23:31 | 只看该作者
5# 易达口香糖

楼上正解,尤其对于程序经常在SDRAM,SRAM之间跳来跳去的一定需要中断向量重定位,不然中断响应就会错误

使用特权

评论回复
7
spark周| | 2011-6-16 13:38 | 只看该作者
是不是说启动完毕以后,所有的代码要搬到ram区,因为在flash执行的效率低下,即所谓重映射,把flash开始的相量地址映射到ram区开始位置

使用特权

评论回复
8
shimx| | 2011-6-16 13:40 | 只看该作者
我百度了一下,有这个定义,贴过来楼主看看吧:
 一、定义:重定位就是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程。他是实现多道程序在内存中同时运行的基础。重定位有两种,分别是动态重定位与静态重定位   二、分类   1、静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位。   2、动态重定位:它不是在程序装入内存时完成的,而是CPU每次访问内存时 由动态地址变换机构(硬件)自动进行把相对地址转换为绝对地址。   三、补充阅读:重定位是由操作系统安排的。   在装入程序前,会计算未使用的内存,然后将程序装入,并记下开始地址。在执行有相对地址的指令时,会将所有的地址加个刚才记下的开始地址,就叫重定位。   重定位与EXE文件无关。

使用特权

评论回复
9
jiaxw| | 2011-6-16 13:48 | 只看该作者
是不是把程序放在内存中一个新的位置,就叫做重定位啊。

使用特权

评论回复
10
heweibig| | 2011-6-16 13:49 | 只看该作者
程序默认从flash启动,在重定位之前必须有一个中断向量表防止异常发生

重定位就是把flash的所有代码搬到ram然后把ram映射到0x0

使用特权

评论回复
11
wuhany|  楼主 | 2011-6-16 14:04 | 只看该作者
嗯,大体明白了,多谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

879

主题

10435

帖子

4

粉丝