|
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是Cortex-M中断向量表对齐原则。* w" R' W; l3 l9 i. N0 M ~
今天这篇文章的内容主要来自于五年前做 Kinetis K32W 系列双核启动时的发现,最近正好有同事碰到了 ARM Cortex-M 中断向量表对齐问题,于是痞子衡想起了这事(感慨自己记性还挺好),翻出了五年前的邮件,将当时测试结果重新整理成文。
* ]$ ^; B+ @- @" ?2 T前段时间痞子衡刚写了篇 《Cortex-M中断向量表原理及其重定向方法》,简单介绍了中断向量表工作机制,今天咱们接着来聊聊这个中断向量表对齐的事:
7 R( g3 C" ^& }/ j9 C一、Cortex-M中断向量表对齐原则中断向量表就是一个集中保存系统全部中断处理函数(xxxIRQHandler)地址的常量数组(函数地址要占 4 个字节,因此数组中每个元素大小为 4 字节),表中元素编号如下:
# d! f2 _3 F1 g0 b- d1. 中断向量表第 0 - 1 个向量比较特殊,是程序初始 SP 和 PC 值
' p; c# s# _+ @8 z$ g2. 中断向量表第 2 - 15 个向量是系统中断,IRQ 编号为 -14 到 -1" d1 K5 I! ]/ N" W
3. 中断向量表第 16 个向量开始是厂商自定义外设中断,IRQ 编号为 0 到 n H! b- l/ a1 d8 n. Z
- 对于 Cortex-M0/0+/1, ARM 建议的 n 值最大为 15(实际一般厂商都会扩展)
- a4 @+ b, t2 [$ G$ B6 \/ K$ R - 对于 Cortex-M3/4/7/23, ARM 建议的 n 值最大为 239% P# [# n: t9 {
- 对于 Cortex-M33/35P/55, ARM 建议的 n 值最大为 479 |
|