请问arm的bootloader和中断向量表是什么关系?他们的存放地址是哪里?上电以后是从boot

请问arm的bootloader和中断向量表是什么关系?他们的存放地址是哪里?上电以后是从bootloader开始执行还是从中断入口执行?... 请问arm的bootloader和中断向量表是什么关系?他们的存放地址是哪里?上电以后是从bootloader开始执行还是从中断入口执行? 展开
 我来答
shencanzhijian
2015-02-07 · TA获得超过2447个赞
知道小有建树答主
回答量:440
采纳率:66%
帮助的人:141万
展开全部
中断向量表是一个地址集合,什么样的地址呢?就是当处理器运行程序时出状况了,它就得想办法应对状况,怎么应对呢?去哪里应对呢?这个向量表就是它要去的地方,比如发生中止异常abort时,处理器就会跳到向量表中的第5个向量,也就是0x0000_0010处去执行,至于在这个地址去执行什么,程序员说了算。
而bootloader,只是一个平台初始化文件,或者说只是一个初始化程序,通常是要对处理器中的堆栈、MMU、看门狗、TLB、缓存等硬件进行一个初始设置,或者是对应用程序的所有参数(比如数据段.data全局变量.bss等)等软件环境进行一个初始设置,以便操作系统(没有操作系统时,直接执行应用程序)进行正常启动。和我们PC机的boot程序是基本相同的。
因此,中断向量表是处理器进行异常处理的一些入口地址集合,而bootloader是进行初始化的一段程序。上电以后,基本上市面上所有处理器都是从地址0x00000000处开始执行的,这个地址就是中断向量表中的复位向量了,还有,对于大部分ARM来说,向量表是不会变的,始终是在地址空间的最前端,这个不是存储在哪里,而是固化在硬件中的,但是在地址空间最前端映射的设备,却不是固定不变的,你可以将ROM、RAM及外部FLASH映射在这些地址,那么就可以把中断向量表对应的处理程序放在ROM、RAM、及FLASH中了。而bootloader,肯定是放在ROM、FLASH这些非易失性存储器中的,上电后bootloader所在的存储器肯定映射在0x00000000处,因此CPU就可以顺利找到并执行之。
追问
看您的解释,是中断向量表和bootloader都是在0x00000000这个地址?
追答
对,中断向量表肯定是始终位于CPU地址空间的0地址,bootloader是存储在某个存储器中,然后这个存储器再映射到地址空间0处。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式