把中斷路由到對應的cpu上

2021-08-05 20:39:41 字數 2021 閱讀 8950

當cpu使能後(使能時就會進行初始化),就可以正行執行了,當然也包括處理中斷,但是這個時候,中斷還沒有路由到對應的cpu上。

這裡呢就分析一下中斷是怎麼路由到它自己對應的cpu上的。

看一下函式呼叫:

usrroot-->usrsmpinit-->usrenablecpu-->usrsmpcpuenablehook-->vxbinttocpuroute-->vxbdevmethodrun-->vxbintctlrcpureroute-->vxbmipssbintctlrcpureroute

整理的函式正確執行後,中斷就路由到對應的cpu上了。

看一下最後乙個函式做了什麼動作:

local status vxbmipssbintctlrcpureroute

(vxb_device_id pdev,

void * destcpu)}

}/*記錄已經使能的cpu*/

pvxbpmipssbintctlrdrvctrl->enabledcpus |= (1 << (int)destcpu);

return (ok);

}

看一下上面使用的一些巨集操作:

/*獲取中斷函式*/

#define mips_sbe_isr(pent,inputpin,func) \

/*獲取乙個引腳的輸出引腳*/

#define mips_sbe_outputpin(pent,inputpin,outputpin) \

/*獲取乙個引腳中斷要路由到哪個cpu*/

#define mips_sbe_destcpu(pent,inputpin,destcpu) \

掛接到對應cpu的函式:

local status sb1intconnectcore

(int intrsource, /* interrupt level / sb1 source number */

int intrline, /* interrupt output line */

int cpunum /* core number to operate on */){

#ifdef south_bridge2h

if(intrsource == ht1_int0)

intrsource = sys_int0;

#endif

/*設定對應的中斷的額路由暫存器,根據輸入的引數設定要路由到哪個cpu核哪個輸出引腳上,核間通訊暫存器*/

mips_sb64((((unsigned int)(sb1_int_ctlr(bcm1***intmapbaseh)))+intrsource),(1<<(intrline+4))|(1<

使能對應核的cpu上的中斷:

local status sb1intenablecore

(int intrsource,

int cpunum){

status retstatus;

#ifdef south_bridge2h

if(intrsource == ht1_int0)

intrsource = sys_int0;

#endif

retstatus = ok;

/*設定對應中斷的使能暫存器置位,這裡的暫存器是核間通訊暫存器*/

mips_sw64((unsigned int)sb1_int_ctlr(bcm1***intmaskl),(unsigned int)(1<

把OpenCV移植到ZedBoard上的那些事

前面我們已經基本了解了什麼是opencv,這一片我們首先明確,移植opencv到zedboard上需要兩大過程。1 opencv在ubuntu上的安裝與測試 2 opencv在zedboard上的移植與測試 我們直接說第二步,第一步網上有許多教程。我們首先要明確 移植opencv需要在交叉編譯環境已...

把你的Project發布到GitHub上

1 在github上建立倉庫 要使用github,肯定要註冊github帳戶,然後建立乙個倉庫。至於如何使用在github上建立倉庫,參考 我在github上建立了乙個倉庫 example。2 建立並配置ssh github是乙個公共倉庫管理平台,你建立的public的倉庫是所有人可見的。如果你要將...

把VS上的flask應用部署到heroku

跟著教程製作並改編了簡單的web應用,第乙個想到的當然是部署到託管 通常來說部署有三種選擇,第一種是自己找個機子搭乙個伺服器,不太現實哈,第二種和第三種其實都算雲伺服器的內容,一種是租個虛擬機器,從頭開始搭建環境,常用的azure,aws,還有國內的阿里雲等都提供了這樣的解決方案,通常被稱為 iaa...