當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...