关于

STM32

中断向量表的位置

、重定向问题

首先我们需要跳到

main

函数,这个就不多说了。那么,中断发生后,又

是怎么跑到中断入口地址的呢?从

stm32f10x.s

可以看到,已经定义好了一大堆

的中断响应函数,这就是中断向量表,标号

__Vectors

,表示中断向量表入口地

址,例如:

AREA RESET, DATA, READONLY ;

定义只读数据段,实际上是在

CODE

区(假设

STM32

FLASH

启动,则此中断向量表起始地址即为

0x8000000

)

EXPORT

__Vectors

IMPORT

OS_CPU_SysTickHandler

IMPORT

OS_CPU_PendSVHandler__Vectors

DCD

__initial_sp

;

Top

of

Stack

DCD

Reset_Handler

;

Reset

Handler

DCD

NMI_Handler

;

NMI

Handler

DCD

HardFault_Handler

;

Hard

Fault

Handler

DCD

MemManage_Handler

;

MPU

Fault

Handler

DCD

BusFault_Handler

;

Bus

Fault

Handler

DCD

UsageFault_Handler

;

Usage

Fault

Handler

这个向量表的编写是有讲究的,跟硬

件一一对应不能乱写的,

CPU

找入口地址就靠它了,

bin

文件开头就是他们的

地址,参考手册

RM0008

10.1.2

节可以看到排列。我们再结合

CORTEX-M3

的特性,他上电后根据

boot

引脚来决定

PC

位置,比如

boot

设置为

flash

启动,

则启动后

PC

跳到

0x08000000

。此时

CPU

会先取

2

个地址,第一个是栈顶地址,

第二个是复位异常地址,故有了上面的写法,这样就跳到

reset_handler

。那么

这个

reset_handler

的实际地址是多少

.

?下面的一堆例如

Nmi_handler

地址又是

多少呢?发生中断是怎么跑到这个地址的呢?下面挨个讲解。

1

、我们可以通

过反向来得知这些入口地址,查看工程下的

map

文件就可以看到了,这个地址

keil

里面设置的

target->flash

起始地址息息相关,实际上我们不太需要关心,

让编译器分配,中断向量表放的就是他们的地址。

2

、对比

ARM7/ARM9

内核,

Cortex-M3

内核则是固定了中断向量表的位置而起始地址是可变化的。

3

、进到

arm9 中断向量 重定位_关于STM32中断向量表的位置 、重定向问题相关推荐

  1. arm9 中断向量 重定位_STM32中断向量表的位置,重定向

    这篇文章已经说了 STM32 的启动过程: http://blog.csdn.net/lanmanck/article/details/8252560 我们也知道怎么跳到main函数了,那么,中断发生 ...

  2. arm9 中断向量 重定位_ARM的启动和中断向量表

    ARM中的异常与中断总共有7种 按响应优先级从高到低 按中断向量表顺序 复位 复位 数据中止 未定义指令中断 FIQ SWI IRQ 预取指令中止 预取指令中止 数据中止异常 未定义指令.SWI IR ...

  3. 共享可写节包含重定位_深度探索win32可执行文件格式

    深度探索win32可执行文件格式 Matt Pietrek 翻译:姜庆东 摘要:对可执行文件的深入认识将带你深入到系统深处.如果你知道你的exe/dll里是些什么东东,你就是一个更有知识的程序员.作为 ...

  4. 共享可写节包含重定位_理解重定位

    一.段的概念 段是程序的组成元素.将整个程序分成一个一个段,并且给每个段起一个名字,然后在链接时就可以用这个名字来指示这些段,使得这些段排布在合适的位置. 一个程序通常包含以下五个段: 代码段(.te ...

  5. STM32中断向量表的位置,重定向

    http://blog.csdn.net/u012722571/article/details/47295245 lanmanck原创] 这篇文章已经说了STM32的启动过程: http://blog ...

  6. STM32 中断向量表的位置 、重定向

    [lanmanck原创] 这篇文章已经说了STM32的启动过程: http://blog.csdn.net/lanmanck/article/details/8252560 我们也知道怎么跳到main ...

  7. 共享可写节包含重定位_未经许可成都街头现共享电动单车?哈啰出行:只是测试...

    6月20日,在成都郫都区港通北三路上,出现了大量电动共享单车."能否使用,没有牌照会不会被交警拦下来?"尽管又出了一个新的公共出行工具,过往市民都提出了这样的担忧. ↑未经许可 成 ...

  8. 共享可写节包含重定位_今年双11好房也打折!贝壳兰州站“11.11新房节” 5日开启...

    随着双十一的临近,各大平台都陆续吹响了 " 买买买 " 的号角,而和相比往年,今年的双十一的有点不一样,好房子也能真打折.据悉,11 月 5 日起,贝壳找房将开启 "11 ...

  9. 共享可写节包含重定位_艾瑞咨询:2020年数说双11电商购物节报告

    回复"2020数说双11电商购物节"获取完整版报告 <2020年数说双11电商购物节报告>基于艾瑞十八年对互联网流量研究的研究经验.数据积累以及艾瑞数据监测工具多平台网 ...

最新文章

  1. 动态编译MySQL plugin
  2. php获取d盘,软件装c盘和d盘的区别
  3. VTK:Filtering之SurfaceFromUnorganizedPoints
  4. Nginx + Tomcat 配置负载均衡集群
  5. JAVA跟MYSQL数据库交互_【编写Java程序实现与Mysql数据库的连接,并交互性的实现简单查询,删除,修改,排序,显示等操作】...
  6. jfinal poi
  7. Redis工作笔记-Set类型
  8. JavaScript继承详解(三)
  9. 什么是迁移学习 (Transfer Learning)?这个领域历史发展前景如何?【文末彩蛋】...
  10. Nginx+PHP+MySQL+Ubuntu14.04 64位环境搭建
  11. python的socket模块简单_Python使用socket模块实现简单tcp通信
  12. AR的那些有用的工具
  13. 如何进入ThinkSystem系列服务器SAS RAID阵列配置界面
  14. 数据分析师mysql面试题_30个sql面试题及答案(数据分析师福利)
  15. ccf---导弹防御系统
  16. 经济法期末模拟试卷及答案
  17. 安卓手机使用Termux运行java环境
  18. Eqs POJ - 1840
  19. 阿里云短信一条价格包含验证码短信/短信通知/推广短信
  20. 轻松搞定个人虚拟桌面部署之2-安装远程桌面服务

热门文章

  1. matlab人民币识别,MATLAB-OCR 用MATLAB实现人民币纸币金额的识别与统计 - 下载 - 搜珍网...
  2. python写windows程序_【Python学习】Python 写Windows Service服务程序
  3. linux shell脚本判断文件行数,判断文件是否存在的shell脚本代码
  4. 事务超时时间无效_什么是ZooKeeper?ZooKeeper分布式事务详解
  5. word把选择答案弄到题目里_word中把选择题的正确答案自动填到括号里技巧
  6. lua pcall 返回值_Redis和Lua整合
  7. java读取mysql配置文件_Linux运维:MySQL读写分离解决方案
  8. (stl排序+检索)大理石在哪
  9. malloc动态分配数组以及指针数组大小
  10. python字符串用法_笔记:python字符串的使用