|
大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是Cortex-M中斷向量表對(duì)齊原則。; [. s9 |7 W1 P1 P
今天這篇文章的內(nèi)容主要來自于五年前做 Kinetis K32W 系列雙核啟動(dòng)時(shí)的發(fā)現(xiàn),最近正好有同事碰到了 ARM Cortex-M 中斷向量表對(duì)齊問題,于是痞子衡想起了這事(感慨自己記性還挺好),翻出了五年前的郵件,將當(dāng)時(shí)測(cè)試結(jié)果重新整理成文。
+ n( C! g! @, z9 b前段時(shí)間痞子衡剛寫了篇 《Cortex-M中斷向量表原理及其重定向方法》,簡(jiǎn)單介紹了中斷向量表工作機(jī)制,今天咱們接著來聊聊這個(gè)中斷向量表對(duì)齊的事:5 I% \% u4 w F# X/ G6 E$ D. v! _
一、Cortex-M中斷向量表對(duì)齊原則中斷向量表就是一個(gè)集中保存系統(tǒng)全部中斷處理函數(shù)(xxxIRQHandler)地址的常量數(shù)組(函數(shù)地址要占 4 個(gè)字節(jié),因此數(shù)組中每個(gè)元素大小為 4 字節(jié)),表中元素編號(hào)如下:- G+ @9 C5 T0 j9 `
1. 中斷向量表第 0 - 1 個(gè)向量比較特殊,是程序初始 SP 和 PC 值
) y" T9 k+ w# q; q9 Y; \2. 中斷向量表第 2 - 15 個(gè)向量是系統(tǒng)中斷,IRQ 編號(hào)為 -14 到 -1% Q' [; q3 p( R6 L
3. 中斷向量表第 16 個(gè)向量開始是廠商自定義外設(shè)中斷,IRQ 編號(hào)為 0 到 n
0 D( o0 V9 S# ~1 a& c' w - 對(duì)于 Cortex-M0/0+/1, ARM 建議的 n 值最大為 15(實(shí)際一般廠商都會(huì)擴(kuò)展)7 G# V: Z' w) j! `, ~
- 對(duì)于 Cortex-M3/4/7/23, ARM 建議的 n 值最大為 239
9 U4 `- r/ O( j$ I; {9 Y - 對(duì)于 Cortex-M33/35P/55, ARM 建議的 n 值最大為 479 |
|