电竞比分网-中国电竞赛事及体育赛事平台

分享

RH850實踐:中斷入門

 開心果NeedCar 2024-05-31 發(fā)布于上海

汽車領域使用的芯片中,中斷系統(tǒng)已然是標配。掌握中斷系統(tǒng)是一個工程師的基本技能。了解一個事物,最好的方式就是實踐。本文,基于RH850 F1KM,聊一聊"中斷"。中斷系統(tǒng)主要包含三個部分:中斷觸發(fā)源、中斷控制及中斷處理,示意如下:

講到中斷,本質是在討論CPU的行為,即:中斷針對CPU。在沒有中斷系統(tǒng)之前,CPU按照命令時序,順序執(zhí)行。為了能讓CPU處理更緊急的任務(eg:剎車任務),設計了中斷,即:讓正在運行的CPU停下當前任務,去處理更高優(yōu)先級的任務,示意如下:

1、中斷基地址及中斷函數(shù)入口地址

在一個具有中斷系統(tǒng)的芯片中,每個CPU會有一個中斷向量表基地址寄存器(eg:INTBP, Base address of the interrupt handler address table)。
那么,中斷向量表地址寄存器存儲的地址是多少呢?答:用戶自定義,即:中斷向量表寄存器存儲的地址,可根據(jù)芯片資源自行設定,eg:0x00000200,這個地址將成為中斷向量表的基地址。注意,該地址一般需要放在PFlash內存區(qū)。知道了中斷向量表入口位置,即可通過每個中斷的偏移(Offset)查找到對應中斷函數(shù)入口地址。
(一)CPU如何找到中斷函數(shù)入口地址
如上提到:CPU會對應一個中斷向量表基地址寄存器(eg:INTBP),而INTBP存放著中斷向量表的基地址,同時,中斷向量表存放著每個中斷函數(shù)的入口地址,示意如下:

中斷向量表基地址可以在鏈接文件中設定,也可以在頭文件(eg:*.h)等位置設定。

2、中斷函數(shù)注冊

中斷函數(shù)的處理,需要注冊中斷函數(shù),即:將目標中斷函數(shù)放入指定位置。具體操作:
(一)編寫中斷函數(shù)
中斷函數(shù)需要用#pragma進行聲明,示意如下:
#pragma INTERRUPT inticup2pe_DataFlashRq_handler(vect=359)void inticup2pe_DataFlashRq_handler(void){    /* do something*/}
使用#pragma聲明,也可以用如下方式:
#pragma ghs interruptvoid inticup2pe_DataFlashRq_handler(void){    /* do something*/}
(二)在啟動文件(*.850)中注冊中斷函數(shù)
  ......  .offset (IRQ_TABLE_START+0x059C)  #if (INTICUP_DATAFLASHPRQT_ENABLE > 0x00000000)    .extern _inticup2pe_DataFlashRq_handler    .word _inticup2pe_DataFlashRq_handler  #else    .word __unused_isr  #endif  ......

注意:鏈接文件注冊中斷函數(shù)時,函數(shù)前需要添加下劃線"_"

3、中斷觸發(fā)方式及中斷控制

在RH850中,中斷觸發(fā)方式可以是Level(eg:"1"),也可以是Edge觸發(fā)(eg:上升沿、下降沿或者雙邊沿)。在芯片的datasheet中,每個中斷源的觸發(fā)方式會給出具體約束,每個中斷源在中斷向量表中的偏移地址、中斷Channel也會給出具體約束,示意如下:

對于每個中斷,中斷優(yōu)先級、中斷觸發(fā)方式等需要通過中斷控制寄存器(Interrupt Control Registers)配置。

(一)中斷使能

中斷的使能包含兩個部分:

1、中斷觸發(fā)源使能,即:使能對應中斷源的觸發(fā)能力

2、中斷控制的使能,即:中斷控制單元使能,使其可以接收中斷源的請求,并把仲裁后的結果傳遞給CPU。

示意如下:

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多