龍芯2k1000的中斷設(shè)計(jì)
1.前言
2.龍芯2k1000的中斷描述
2.1 mips設(shè)計(jì)上的通用中斷處理
2.2 龍芯中斷的設(shè)計(jì)
3.龍芯2k1000中斷的產(chǎn)生與處理
4.龍芯2k1000中斷處理概述
1.前言
中斷與異常在任何體系架構(gòu)的芯片上都不會(huì)完全一樣。在arm的m系列芯片上需要理解NVIC,這個(gè)相對(duì)較為容易,而對(duì)于高端一些的芯片,中斷的處理就會(huì)復(fù)雜許多。比如arm上的gic(Generic Interrupt Controller)。要使用好GIC則需要專門(mén)去讀這個(gè)外設(shè)的手冊(cè),然后寫(xiě)中斷控制。對(duì)于MIPS中斷控制的處理流程,就是本文描述的重點(diǎn)。
2.龍芯2k1000的中斷描述
龍芯2k1000最多支持64個(gè)中斷的觸發(fā)源,按照統(tǒng)一方式進(jìn)行管理。

這64個(gè)中斷控制器通過(guò)可以配置的中斷路由可以分配到CPU0與CPU1中。
在這64個(gè)中斷中又需要按照需要路由到4個(gè)隊(duì)列上。
2.1 mips設(shè)計(jì)上的通用中斷處理
在MIPS的中斷設(shè)計(jì)上,MIPS CPU會(huì)設(shè)計(jì)8個(gè)獨(dú)立中斷位。

其中,6個(gè)外部中斷(IP2 ~ IP7),2個(gè)軟中斷(IP0~IP1)。片上的計(jì)數(shù)器/定時(shí)器會(huì)連接到一個(gè)硬件中斷位上去。
2.2 龍芯中斷的設(shè)計(jì)
對(duì)于對(duì)于每個(gè)核上的IP0~IP3,其對(duì)應(yīng)的是 CP0_Status 的 IP2 到 IP5。IP7用于定時(shí)器中斷。

在中斷設(shè)計(jì)這一塊,這64個(gè)中斷又可以分為低32位與高32位,對(duì)于低32位可以將每個(gè)中斷路由到CPU0,Mailbox0,也就是對(duì)應(yīng)IP2。對(duì)于高32位,可以將每個(gè)中斷路由到CPU0,Mailbox0,也就是對(duì)應(yīng)IP3。

根據(jù)上述的寄存器配置每個(gè)中斷的路由即可。
3.龍芯2k1000中斷的產(chǎn)生與處理
在rt-thread上,將異常處理向量表通過(guò)鏈接腳本放到代碼段的頭部。

然后通過(guò)寫(xiě)中斷向量表地址到向量基地址寄存器中。

如果有中斷發(fā)生,則可以跳轉(zhuǎn)到中斷向量表去執(zhí)行相關(guān)的中斷處理程序。
MIPS上的中斷處理可以讀取c0 cause寄存器,得到mips發(fā)生中斷或者異常的原因。
因?yàn)榇藭r(shí)MIPS還只有7個(gè)中斷信息,需要再次讀取龍芯中斷控制器的中斷,才能準(zhǔn)確的得到中斷產(chǎn)生的原因。

最后可以通過(guò)rt-thread的中斷處理的回調(diào)函數(shù)處理具體的中斷信息。
4.龍芯2k1000中斷處理概述
龍芯2k1000利用mips上的8個(gè)中斷位,自己添加了一個(gè)中斷控制器,該中斷控制器可以配置中斷的路由方式,比如讓其路由到CPU0或者CPU1上,并且可以指定每個(gè)中斷路由到具體的mailbox上。
根據(jù)mailbox的設(shè)計(jì),當(dāng)中斷發(fā)生時(shí)首先通過(guò)mips上的c0 casue大致確定其中斷的原因,接著通過(guò)龍芯2k1000的中斷控制器,讀取狀態(tài)從而分析得到具體的外設(shè)中斷。
上述則是龍芯2k1000中斷處理邏輯。
責(zé)任編輯:xj
原文標(biāo)題:龍芯2k1000的中斷設(shè)計(jì)
文章出處:【微信公眾號(hào):嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
芯片
+關(guān)注
關(guān)注
463文章
54010瀏覽量
465972 -
龍芯
+關(guān)注
關(guān)注
3文章
428瀏覽量
32769 -
中斷
+關(guān)注
關(guān)注
5文章
917瀏覽量
43754 -
2K1000
+關(guān)注
關(guān)注
0文章
21瀏覽量
852
原文標(biāo)題:龍芯2k1000的中斷設(shè)計(jì)
文章出處:【微信號(hào):Embeded_IoT,微信公眾號(hào):嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Banana Pi 基于龍芯2K3000的國(guó)產(chǎn)信創(chuàng)工業(yè)計(jì)算網(wǎng)關(guān)設(shè)計(jì),采用無(wú)風(fēng)扇設(shè)計(jì)
國(guó)產(chǎn)化工控機(jī)突圍戰(zhàn):眾達(dá)科技龍芯2K3000如何啃下“硬骨頭”?
喜訊 | 眺望電子2K3000工控系列入選龍芯中科伙伴產(chǎn)品
龍芯教育生態(tài)論壇圓滿收官
飛凌嵌入式受邀亮相「2025龍芯產(chǎn)品發(fā)布暨用戶大會(huì)」
迅龍軟件受邀參加2025龍芯產(chǎn)品發(fā)布暨用戶大會(huì),發(fā)布基于龍芯2K3000的OrangePi Nova
龍芯2K3000 | 重塑工控嵌入式處理器性能邊界
【龍芯2K0300蜂鳥(niǎo)板試用】固件更新與測(cè)試
龍芯處理器支持WINDOWS嗎?
飛凌嵌入式攜手龍芯發(fā)布2K0300i核心板,全國(guó)產(chǎn)自主可控新選擇
龍芯2K0300開(kāi)發(fā)板軟件資料-新世界更新
基于龍芯2K0300-I的工業(yè)級(jí)核心板
龍芯2K0300-I工業(yè)級(jí)核心板,4個(gè)CANFD,雙千兆以太網(wǎng),10個(gè)串口,LCD顯示
龍芯2K3000/3B6000M處理器流片成功
K7815-1000(L) K7815-1000(L)
龍芯2k1000的中斷處理邏輯
評(píng)論