|
大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是Cortex-M中斷向量表對齊原則。
+ N, n% \0 [8 g; `0 k今天這篇文章的內(nèi)容主要來自于五年前做 Kinetis K32W 系列雙核啟動時的發(fā)現(xiàn),最近正好有同事碰到了 ARM Cortex-M 中斷向量表對齊問題,于是痞子衡想起了這事(感慨自己記性還挺好),翻出了五年前的郵件,將當(dāng)時測試結(jié)果重新整理成文。* N1 M, m+ q' O7 M* ?: b! X
前段時間痞子衡剛寫了篇 《Cortex-M中斷向量表原理及其重定向方法》,簡單介紹了中斷向量表工作機制,今天咱們接著來聊聊這個中斷向量表對齊的事:
* I$ N9 H( U& p3 Y) u一、Cortex-M中斷向量表對齊原則中斷向量表就是一個集中保存系統(tǒng)全部中斷處理函數(shù)(xxxIRQHandler)地址的常量數(shù)組(函數(shù)地址要占 4 個字節(jié),因此數(shù)組中每個元素大小為 4 字節(jié)),表中元素編號如下:$ r) L- }/ M2 E/ \) J
1. 中斷向量表第 0 - 1 個向量比較特殊,是程序初始 SP 和 PC 值
3 X4 e& H4 R& `( |4 o8 H2. 中斷向量表第 2 - 15 個向量是系統(tǒng)中斷,IRQ 編號為 -14 到 -1/ }9 i% A' j) h6 a' Y3 W
3. 中斷向量表第 16 個向量開始是廠商自定義外設(shè)中斷,IRQ 編號為 0 到 n
' j4 q0 z9 Q8 ~ - 對于 Cortex-M0/0+/1, ARM 建議的 n 值最大為 15(實際一般廠商都會擴展)
# _/ Z9 V& E5 M! ~, p - 對于 Cortex-M3/4/7/23, ARM 建議的 n 值最大為 2396 J% u9 z e. i+ t" V0 I) Y/ k
- 對于 Cortex-M33/35P/55, ARM 建議的 n 值最大為 479 |
|