cortex-m3关于中断向量和程序跳转一点问题

hliu2009 2017-08-24 09:46:28
问题1:我们知道cortex-m3单片机启动是从绝对地址0x0000 0000开始,绝对地址0x0000 0004存放的是程序的启动代码reset_handle,是不是单片机的中断向量表的存放就是以绝对地址为0x0000 0000开始的?
问题2:若程序烧写在Flash区,假设Flash首地址为0x0040 0000,那么0x0040 0004存放的也是中断向量表的reset_handle吗?如果是,这和绝对地址0x0000 0004的reset_handle有什么区别呢?
问题3:如果我烧写两段代码到flash区间,两段代码的起始绝对地址分别是0x0040 0000和0x0040 1000,是不是意味着两段代码各自有一个中断向量表在其Flash起始地址的开始,即0x0040 0004和0x0040 1004分别为程序1和程序2的reset_handle的入口地址,想要从程序1跳转到程序2,只需要在程序1中用指令跳转到0x0040 1004即可呢?
...全文
545 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ObrienHuang 2017-08-30
  • 打赏
  • 举报
回复
你有多个程序,那在程序的启动函数中需要对中断向量表进行重定向,否则程序遇到中断就跑飞了 ,具体设置的是这个寄存器SCB->VTOR
tianxj001 2017-08-25
  • 打赏
  • 举报
回复
所谓中断向量表,其实就是一个绝对跳转指令,跳转的目标,才是真正的中断服务程序,这个是由编译器在编译过程确定,并把绝对地址加载到向量表,而cortex-m3包括其他cortex-mx系列其向量表地址都是固定在00000000开始的一段固定地址。 烧写两段代码到flash区间,两段代码的起始绝对地址分别是0x0040 0000和0x0040 1000,只需要在程序1中用指令跳转到0x0040 1004,这是正确的,事实上我们各种子程序,调用时候,编译器就是这样操作的。 但是“是不是意味着两段代码各自有一个中断向量表在其Flash起始地址的开始”这个描述就是错误的。
Cortex-M3技术参考手册 第 1 章 概述.................................. 1.1 关于处理器..................... 1.2 处理器的组件................. 1.2.1 Cortex-M3 的层次和 1.2.2 处理器内核.......... 1.2.3 NVIC..................... 1.2.4 总线矩阵.............. 1.2.5 FPB........................ 1.2.6 DWT...................... 1.2.7 ITM........................ 1.2.8 MPU...................... 1.2.9 ETM...................... 1.2.10 TPIU.................... 1.2.11 SW/JTAG-DP...... 1.3 可配置的选项................. 1.3.1 中断...................... 1.3.2 MPU...................... 1.3.3 ETM.............................. 1.4 指令集汇总............................. 第 2 章 编程模型(programmer's mo 2.1 关于编程模型......................... 2.1.1 工作模式...................... 2.1.2 工作状态...................... 2.2 特权访问和用户访问............. 2.2.1 主堆栈和进程堆栈...... 2.3 寄存器 2.3.1 通用寄存器.................. 2.3.2 特殊用途的程序状态寄 2.4 数据类型................................. 2.5 存储器格式............................. 2.6 指令集..................................... 第 3 章 系统控制.................................. 3.1 处理器寄存器汇总................. 3.1.1 嵌套向量中断控制器的寄存器............. 3.1.2 内核调试寄存器..................................... 3.1.3 系统调试寄存器..................................... 3.1.4 调试接口的端口寄存器......................... 3.1.5 存储器保护单元的寄存器..................... 3.1.6 跟踪端口接口单元的寄存器................. 3.1.7 嵌入式跟踪宏单元的寄存器................. 第 4 章 存储器映射.............................................................. 4.1 关于存储器映射..................................................... 4.2 Bit-banding............................................................... 4.2.1 直接访问别名区.......................................... 4.2.2 直接访问 bit-band 区................................... 4.3 ROM 存储器表........................................................ 第 5 章 异常.......................................................................... 5.1 关于异常模型......................................................... 5.2 异常类型................................................................. 5.3 异常优先级............................................................. 5.3.1 优先级.......................................................... 5.3.2 优先级分组.................................................. 5.4 特权和堆栈............................................................. 5.4.1 堆栈.............................................................. 5.4.2 特权.............................................................. 5.5 占先......................................................................... 5.5.1 堆栈.............................................................. 5.6 末尾连锁(Tail-chaining).................................... 5.7 迟来......................................................................... 5.8 退出......................................................................... 第 7 章 电源管理........................................... 7.1 电源管理概述.................................. 7.2 系统电源管理.................................. 7.2.1 SLEEPING............................. 7.2.2 SLEEPDEEP.......................... 第 8 章 嵌套向量中断控制器....................... 8.1 NVIC 概述........................................ 8.2 NVIC 编程器模型............................ 8.2.1 NVIC寄存器映射................. 8.2.2 NVIC寄存器描述................. 8.3 电平中断与脉冲中断...................... 第 9 章 存储器保护单元............................... 9.1 MPU概述......................................... 9.2 MPU编程器模型............................. 9.2.1 MPU寄存器纵览.................. 9.2.2 描述 MPU寄存器................ 9.2.3 使用重叠寄存器访问 MPU. 9.2.4 子区域................................... 9.3 MPU访问权限.................................

27,511

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧