ti c64x dsp中斷向量表配置(硬體中斷)
2007-04-09 11:29
1. 編寫中斷服務例程
在.c原始檔中編寫isr函式c_intxx,用於中斷處理,如:
interrupt void c_intxx (void)
注:對於硬體中斷而言,xx = 00~15。
2.初始化中斷向量表,並在記憶體段中的中斷向量表中配置好對應的中斷向量
首先是把中斷向量表定位到某一記憶體段中,我們可以在cmd檔案中配置中斷向量表的記憶體對映,如:
memory
sections
然後建立乙個.a**檔案,用以配置中斷向量表中的中斷向量,我們需要宣告一些全域性變數,以便其他原始檔可以引用這些變數或者引用其他原始檔的變數,如:
.global _vectors
.global _c_int00
.global _vector1
.global _vector2
.global _vector3
.global _vector4
.global _vector5
.global _vector6
.global _vector7
.global _c_int08; 對應main()函式的c_int08中斷服務例程(假設處理的是edma中斷)
.global _vector9
.global _vector10
.global _vector11
.global _vector12
.global _vector13
.global _vector14
.global _vector15
因為引用了rts的_c_int00中斷,即reset中斷,因此需要引入這個符號:
.ref _c_int00
vec_entry .macro addr
stw b0,*--b15
mvkl addr,b0
mvkh addr,b0
b b0
ldw *b15++,b0
nop 2
nop
nop
.endm
為了初始化中斷向量表中的中斷向量,可以定義乙個虛擬的中斷向量:
_vec_dummy:
b b3
nop 5
接下來就可以配置中斷向量表了:
.sect 「.vecs」
.align 1024
_vectors:
_vector0: vec_entry _c_int00;reset中斷
_vector1: vec_entry _vec_dummy;nmi不可遮蔽中斷
_vector2: vec_entry _vec_dummy;保留中斷1
_vector3: vec_entry _vec_dummy;保留中斷2
_vector4: vec_entry _vec_dummy ;外部中斷int4
_vector5: vec_entry _vec_dummy ;外部中斷int5
_vector6: vec_entry _vec_dummy;外部中斷int6
_vector7: vec_entry _vec_dummy ;外部中斷int7
_vector8: vec_entry _c_int08 ;edma控制器中斷edmaint,對應於c_int08 isr
_vector9: vec_entry _vec_dummy;jtagrtdx中斷
_vector10: vec_entry _vec_dummy;emif_sdram_timer中斷
_vector11: vec_entry _vec_dummy;mcbsp_0_receive中斷
_vector12: vec_entry _vec_dummy;mcbsp_1_tran**it中斷
_vector13: vec_entry _vec_dummy;host_port_host_to_dsp中斷
_vector14: vec_entry _vec_dummy;timer0中斷
_vector15: vec_entry _vec_dummy;timer1中斷
3. 在c程式中指定定義的中斷向量表,並且啟用cpu中斷功能
extern far void vectors();//之所以為vectors,因為c編譯器編譯後自動改名其為_vectors
引用了中斷向量表之後,就可以設定中斷了:
irq_setvecs(vectors); //指向a**中定義的中斷向量表
irq_nmienable();
irq_globalenable();
irq_map(irq_evt_edmaint, 8);//對映事件到指定的物理中斷號
irq_reset(irq_evt_edmaint);
4.啟動中斷源,如edma控制器的中斷
至此,中斷服務例程c_int8就可以為edmaint中斷服務了,其它硬體中斷向量的配置同理。
**http://hi.baidu.com/yutou410/blog/item/bed743389be7d32297ddd8ed.html,謝謝原作者
TI C64X DSP中斷向量表的配置(硬體中斷)
收藏1.編寫中斷服務例程 在.c原始檔中編寫isr函式c intxx,用於中斷處理,如 interrupt void c intxx void 注 對於硬體中斷而言,xx 00 15。2 初始化中斷向量表,並在記憶體段中的中斷向量表中配置好對應的中斷向量 首先是把中斷向量表定位到某一記憶體段中,我們...
TI C66x DSP 指令集 之 跳轉指令B
跳轉指令用於實現程式流程的跳轉,在 arm 同樣在ti c66x dsp 程式中有兩種方法可以實現程式流程的跳 使用專門的跳轉指令 如 b指令 直接向程式計數器 pc寫入跳轉位址值 通過向程式計數器 pc寫入跳轉位址值,可以實現在 4gb的位址空間中的任意跳轉,在跳轉之前結合使用 mov lr,pc...
Ti 64xDSP的EDMA基本概念
1 基本概念 l元素傳輸 element transfer 在1d傳輸中,從源到目的的單個資料元素的傳輸,每個同步事件觸發乙個元素的傳輸。l幀 frame 在1d傳輸中,一組元素組成一幀,元素可以連續也可以有間隔 通過元素索引 乙個同步事件可以觸發一幀的傳輸。l陣列 array 在2d傳輸中,一組連...