|
大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是Cortex-M中斷向量表對齊原則。 G. m" p. y4 s* W4 o
今天這篇文章的內(nèi)容主要來自于五年前做 Kinetis K32W 系列雙核啟動時的發(fā)現(xiàn),最近正好有同事碰到了 ARM Cortex-M 中斷向量表對齊問題,于是痞子衡想起了這事(感慨自己記性還挺好),翻出了五年前的郵件,將當(dāng)時測試結(jié)果重新整理成文。( a4 s8 B: [4 Y R, A3 L# z: \3 A
前段時間痞子衡剛寫了篇 《Cortex-M中斷向量表原理及其重定向方法》,簡單介紹了中斷向量表工作機制,今天咱們接著來聊聊這個中斷向量表對齊的事:1 X5 U# t" p0 h* w0 O
一、Cortex-M中斷向量表對齊原則中斷向量表就是一個集中保存系統(tǒng)全部中斷處理函數(shù)(xxxIRQHandler)地址的常量數(shù)組(函數(shù)地址要占 4 個字節(jié),因此數(shù)組中每個元素大小為 4 字節(jié)),表中元素編號如下:. z: _: F2 _1 s8 f
1. 中斷向量表第 0 - 1 個向量比較特殊,是程序初始 SP 和 PC 值
( |; C( f# q B v0 k/ ]& |2 N2. 中斷向量表第 2 - 15 個向量是系統(tǒng)中斷,IRQ 編號為 -14 到 -15 M6 d8 E7 w) t9 n- D, A2 p
3. 中斷向量表第 16 個向量開始是廠商自定義外設(shè)中斷,IRQ 編號為 0 到 n9 y" @5 e, g8 V% G- N" i. |
- 對于 Cortex-M0/0+/1, ARM 建議的 n 值最大為 15(實際一般廠商都會擴展)+ ?9 }: F! n3 P
- 對于 Cortex-M3/4/7/23, ARM 建議的 n 值最大為 239
. t8 Z# ~7 s; D - 對于 Cortex-M33/35P/55, ARM 建議的 n 值最大為 479 |
|