异常向量表
来源:互联网 发布:尼康调色软件 编辑:程序博客网 时间:2024/09/21 09:05
今天网上下载了一个操作系统,编译,运行,木有反应。跟移植者讨论了下,后来发现是异常向量表表的问题。他并没有开启MMU,而我是bootloader引导下载.bin代码的。0地址处存放的是bootloader,操作系统本身也要从0地址处读取向量表的信息,包括reset中断,设置堆栈指针等一系列的问题。找不到中断向量表,那其他的步骤就无从谈起了。所以后来解决方法是使用的tq2440的bootloader中的menu choice 1 ,即将 此操作系统下载到 nandflash的bootloader分区。然后再将tq的开关调制从nandflash启动。那样就能够正常运行了。
至此,分析了下有无bootloader的读取中断向量表的情况:
有bootloader的时候,在bootloader的引导下,将程序下载到响应的地址,大于0x30000000(sdram区域),然后运行,此时发生异常时,到0地址处取异常向量表。因为此时程序是在sdram中的,如从0x30000000开始存放的,那异常向量表就在0x30000000处,此时如果发生异常的话,从0地址找就找不到,所以两种方法,一种开启MMU,映射0地址到0x30000000处,另外一种是在程序里面进行异常向量表的拷贝,拷贝到0地址。
在没有bootloader的时候,直接烧到0地址,但是在代码中执行了cp2sdram的操作,目标地址是0x30000000,此时有两个地方存着异常向量表,一是0地址,二是0x30000000处,没有进行MMU的时候程序读取的是0地址处的异常向量表,如果进行映射了的话,异常出现的时候,也还是去0地址找,但是此时0地址已经被MMU映射了,所以到相关映射的地址处寻找。
要点:发生异常,永远是去0地址找。(特指arm下)。
- 异常向量表
- 设置异常向量表
- bootloader 异常向量表
- 异常向量表
- 异常向量表
- 异常向量表
- u-boot异常向量表
- 二十三.异常向量表
- 异常向量表的设定
- Bootloader之异常向量表
- tiny6410异常向量表初始化
- 异常向量表的创建
- 异常向量表和中断向量表的区别
- ARM的异常及向量表
- ARM-linux异常向量表的建立
- bootload开发之异常向量表
- ARM异常向量表的学习
- 异常向量表的编程处理
- 将工程转成 arc
- 阻塞和非阻塞通信
- 在CodeBlocks环境下使用boost库
- 我看TechEd 2012之技术热点
- Linux Make(Makefile)由浅入深的学习与示例剖析
- 异常向量表
- strip命令用法
- 为什么要使用JavaScript(中文:重思JavaScript的好与坏)中英对比版本
- "现代篮球之父"
- 构造函数不能是虚函数的原因
- Yii Framework 开发教程(15) UI 组件 MultiFileUpload示例
- 国内网友设计诺基亚Lumia 930概念机
- 详解在IOS后台执行
- 汉武大帝经典台词