TI C64X DSP中斷向量表配置 硬體中斷

2021-04-19 06:36:09 字數 3795 閱讀 7877

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傳輸中,一組連...