打印

高分求简单问题的详解

[复制链接]
1600|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
golden_finger|  楼主 | 2010-7-15 19:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有两个关于ARM的问题:
1,系统上电是从地址0开始执行指令还是什么位置,如果是地址0,那这个0是flash的0还是sdram的0?还是系统内部的0?
2,我看很多初始化的文件定义中断服务地址都是定义在0x33ffff00,或者0x33ffffff之类, 这个地址是怎么计算的 ? 中断不是应该在地址0处定义的?
我只有50分,为了这两个问题都给出来  !
谢谢大家的

相关帖子

沙发
centimetre| | 2010-7-15 20:48 | 只看该作者
恩,你要多去看看arm的书。
上电后从0开始取指令。具体这个0是对应的flash,ram还是内部的啥东东,和具体芯片相关。去找具体芯片的手册看。
第二个问题,也是和具体芯片有关系。

www.cmtekchina.com

使用特权

评论回复
板凳
hgjinwei| | 2010-7-16 07:38 | 只看该作者
总结一下2楼观点:与芯片有关。

使用特权

评论回复
地板
xinzha| | 2010-7-16 22:19 | 只看该作者
pc在复位的时候一定指向0,不论这里是什么,所以一般情况下bootloader要求是直接可寻址的nor flash或者eeprom而不能是nand flash,当然也有例外,某些芯片的0地址是sram,在系统复位之后由内部的逻辑将nand中前面几k的内容读到sram中,不论如何,0地址必须是直接可寻址的,并且内容是正确的初始化代码。
至于中断服务,arm中主要有两种做法,一种是vic,一种是非vic,lz所说的应该属于vic(vectored interrupt controller),在这种机制中,arm的异常处理程序不用去查找发生了什么中断,而是直接拿向量中断控制器的寄存器中的地址作为中断处理入口,而这个寄存器的地址在哪儿就是厂商自己的问题了。

使用特权

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

本版积分规则

14

主题

28

帖子

1

粉丝