嵌入式系統的製作方法
2023-05-04 07:21:21
>USERUNDSVCIRQFIQUSER--------OS_B線程請求SWIIRQ中斷OS_B線程FIQ中斷OS_B線程UND從最後一個OS_A線程或DSR返回----DSR或空閒線程請求SWIIRQ中斷OS_A線程、DSR或空閒線程FIQ中斷OS_A線程、DSR或空閒線程SVC從快速SWI返回在慢SWI期間----IRQ中斷快速SWIFIQ中斷快速SWIIRQ如果不存在活動的OS_A線程或DSR,從IRQ返回如果存在活動的OS_A線程或DSR,從IRQ返回--------FIQ中斷IRQFIQ如果沒有活動的OS_A線程或DSR,從FIQ返回如果活動的OS_A線程或DSR,從FIQ返回----如果IRQ被中斷,從FIQ返回----表1下面的例子描述不同作業系統OS_A、OS_B中執行的線程之間消息的傳輸。圖7a和7b以簡化示意圖表示這種消息傳輸機制。消息驅動器MD(messagedriver)是作業系統OS_A、OS_B公用的,也是消息隊列MQ1、MQ2公用的。第二作業系統OS_B的運行線程THB1調用消息驅動器MD,將所傳送消息(例如一條正文消息)和目標線程THA1的符號作為參數傳輸(圖7a箭頭701)。消息驅動器MD將該消息轉移到第一消息隊列MQ1(箭頭702)並最好生成一個軟體中斷(SWI),這個中斷激活一個基本如本說明書前文據圖6所述的中斷處理-只不過該中斷是由軟體中斷SWI而不是普通中斷IRQ引起的。離開中斷處理程序導致激活第一作業系統的調度程序SCH_A,目標線程在由優先級確定的時間被執行(箭頭703)。這個目標線程讀取第一消息隊列MQ1中的消息(箭頭704)並例如將該消息傳輸到一個無線電通道。在第一作業系統的應用程式中,能執行一個被延遲服務例程DSR,由此可能例如以下列方式(圖7b)將消息傳輸到第二作業系統OS_B的線程。在第二作業系統OS_B中,運行線程THB2已經生成了一個消息請求並一直等待著該消息(箭頭705)。該消息請求引起一個軟體中斷SWI,中斷處理程序檢查中斷的原因後斷定第二作業系統OS_B的線程THB2正在帶來來自第一作業系統OS_A的線程THA2的消息。中斷處理後,調用第一作業系統OS_A的調度程序SCH_A(706)。在輪到所希望的線程THA2運行後,該線程生成一個消息並將其添加到第二消息隊列MQ2(箭頭707)。此外,線程THA2還生成一個被延遲服務例程DSR(箭頭708)。在運行了第一作業系統OS_A的各線程後,這個被延遲服務例程DSR緊接著就被處理,其中由線程THA2添加的該被延遲服務例程DSR將第二作業系統OS_B的線程的狀態改變為等待執行(就緒)(箭頭709)。第二作業系統OS_B的調度程序SCH_B按照其調度原則控制各線程的執行。當發過傳輸請求的線程THB2運行時(710),它通過消息驅動器MD的連接接口從第二消息隊列MQ2讀取消息。在實際實施例中,消息隊列MQ1、MQ2最好能按優先級來配置。這意味著,高優先級的接收線程的消息比較低優先級的消息更快經過隊列。另一種可選方案是,採用比本例中的第一MQ1和第二消息隊列MQ2更多的消息隊列。總而言之,可以注意到,本發明能實現在一個處理器下運行一個或多個作業系統OS_A、OS_B。一個目標是使公用部件最少,也能在這種通信設備1中運行現行技術水平的應用程式。作業系統OS_A、OS_B的公用部件主要是中斷處理程序,中斷處理程序中形成了與作業系統OS_A、OS_B的聯繫。在上面的例子中,消息驅動器MD也是公用的。在實際的嵌入式相同1中,有可能為不同的作業系統OS_A、OS_B配置許多公用的中斷處理程序(中斷服務例程)。每次可以有對應一種中斷的其中一個中斷處理程序是活動的,即,例如對應快速中斷FIQ的一個,對應普通中斷IRQ的一個和對應軟體中斷SWI的一個。這樣就有可能將為該中斷配置的另一個中斷處理程序變為活動的中斷處理程序。應當指出,兩個作業系統OS_A、OS_B在處理器2的系統中運行也能以這樣的方式實現,例如由第二作業系統OS_B的線程THB1、THB2、THB_IDLE來形成第一作業系統的線程,諸如空閒線程THA_IDLE或超級線程,其中與所有與第二作業系統OS_B有關的運行線程THB1、THB2、THB_IDLE都在這個線程中執行。以對應的方式,有可能由第一作業系統OS_A的線程THA1、THA2、THA_IDLE來形成第二作業系統的線程,諸如空閒線程THB_IDLE或超級線程511,其中與所有與第一作業系統OS_A有關的運行線程THA1、THA2、THA_IDLE都在這個線程中執行。另一個可選方案是,第一作業系統OS_A的每個線程THA1、THA2、THA_IDLE以獨立於第二作業系統OS_B的超級線程511的形式形成,第二作業系統OS_B把這些線程作為單獨的超級線程(未予示出)來處理。如本說明書前文所述,這些超級線程的響應時間,通常比普通線程的響應時間短得多。響應時間的要求最高的任務仍然能得到運行,方法是為它們生成例如與定時器的中斷處理程序相聯繫的中斷處理,其中在轉而執行這些任務時不必使用調度功能。就第一作業系統OS_A的每個線程THA1、THA2、THA_IDLE以第二作業系統OS_B中獨立的超級線程511的形式實現的情況來說,如果希望在第一作業系統OS_A的不同線程THA1、THA2、THA_IDLE之間傳輸數據,就要求按照第二作業系統OS_B的信號傳輸。相反,當第一作業系統OS_A的線程THA1、THA2、THA_IDLE是以一個超級線程511的形式實現的時,數據傳輸就能通過使用第一作業系統OS_A的消息傳輸方法而以更簡單的方式實現。本發明並不僅限於上述各實施例,可以在後附權利要求的範圍內修改。權利要求1.一種包含至少一個用於運行作業系統(OS_A、OS_B)的處理器(2)的嵌入式系統(1),特徵在於,嵌入式系統(1)進一步包含-用於在處理器(2)中運行至少兩個作業系統(OS_A、OS_B)的裝置(17、401、412);-包含第一組線程(THA1、THA2、THA-IDLE)的第一作業系統(OS_A);-包含第二組線程(THB1、THB2、THB_IDLE)的第二作業系統(OS_B);-用於向處理器(2)生成中斷(FIQ、IRQ、SWI)的裝置(nFIQ、nIRQ、nSWI);-檢查裝置(401、603、617),用於檢查已經到達處理器(2)的中斷(FIQ、IRQ、SWI)影響哪個線程(THA1、THA2、THB1、THB2、THA_IDLE、THB_IDLE)的執行;-傳輸裝置(401、412、603、609、617),用於將中斷數據傳輸給與影響處理器(2)所接收中斷(FIQ、IRQ、SWI)的線程(THA1、THA2、THB1、THB2、THA_IDLE、THB-IDLE)有關的作業系統(OS_A、OS_B)。2.按照權利要求1的嵌入式系統(1),特徵在於,所述檢查裝置(401、603、617)包含至少一個、至少部分為所述至少兩個作業系統(OS_A、OS_B)所公用的中斷處理程序(603、607)。3.按照權利要求1或2的嵌入式系統(1),特徵在於,它包含移動站功能和數據處理功能,所述至少兩個作業系統(OS_A、OS_B)中,第一作業系統(OS_A)涉及移動站功能的運行,第二作業系統(OS_B)涉及數據處理功能的運行。4.按照權利要求3的嵌入式系統(1),特徵在於,包含至少一個至少部分涉及移動站功能的用戶接口(UI1)和至少一個至少部分涉及數據處理功能的用戶接口(UI2)。5.按照權利要求4的嵌入式系統(1),特徵在於,涉及移動站功能的用戶接口(UI1)和涉及數據處理功能的用戶接口(UI2)包含至少部分公用的顯示器(10、15)。6.按照權利要求4或5的嵌入式系統(1),特徵在於,涉及移動站功能的用戶接口(UI1)和涉及數據處理功能的用戶接口(UI2)包含至少部分公用的數據提供裝置(9、14)。7.按照權利要求1至6的任一項的嵌入式系統(1),特徵在於,它包含用於在沒有第一作業系統(OS_A)的線程(THA1、THA2、THA_IDLE)正在運行時將第一作業系統(OS_A)的執行轉到第二作業系統(OS_B)的執行的裝置(2,THA_IDLE)。8.按照權利要求1至7的任一項的嵌入式系統(1),特徵在於,它包含用於在對處理器(2)的中斷(FIQ、IRQ、SWI)影響第一作業系統(OS_A)下的至少一個線程(THA1、THA2、THA_IDLE)的運行時從執行第二作業系統(OS_B)轉而運行第一作業系統(OS_A)的裝置(2,SCH_A)。9.按照權利要求1至8的任一項的的嵌入式系統(1),特徵在於,至少第一作業系統(OS_A)是實時作業系統。10.按照權利要求1至9的任一項的的嵌入式系統(1),特徵在於,處理器(2)至少包含下列方式-用戶方式(USER方式);-特權方式(SVC方式);-不定方式(UND方式);-一個或多個中斷方式(FIQ方式、IRQ方式、SWI方式);並且安排第一作業系統(OS_A)至少部分地在不定方式(UND方式)中運行,安排第二作業系統(OS_B)至少部分地在用戶方式(USER方式)中運行,安排中斷處理程序(603、617)在某個中斷方式(FIQ方式、IRQ方式、SWI方式)中運行。11.按照權利要求1至10的任一項的嵌入式系統(1),特徵在於,第一組線程的線程中的一個線程(THA1、THA2、THA-IDLE)包含第二作業系統(OS_B)。12.按照權利要求2至10的任一項的的嵌入式系統(1),特徵在於,它包含至少兩個用於至少一個中斷(FIQ、IRQ、SWI)的中斷服務例程,並包含用於從這至少兩個中斷服務例程中選擇一個與中斷(FIQ、IRQ、SWI)一起使用的裝置(2)。13.一種用於在嵌入式系統(1)的處理器(2)中執行作業系統(OS_A、OS_B)的方法,特徵在於,在該方法中-在所述處理器(2)中執行至少兩個作業系統(OS_A、OS_B);-涉及第一作業系統(OS_A)時,執行第一組線程(THA1、THA2、THA_IDLE);-涉及第二作業系統(OS_B)時,執行第二組線程(THB1、THB2、THB_IDLE);-向處理器(2)生成中斷(FIQ、IRQ、SWI);-檢查已經到達處理器(2)的中斷影響哪個線程(THA1、THA2、THB1、THB2、THA_IDLE、THB_IDLE)的執行;-將處理器(2)所接收中斷(FIQ、IRQ、SWI)的信息傳輸給與影響處理器(2)所接收中斷(FIQ、IRQ、SWI)的線程(THA1、THA2、THB1、THB2、THA_IDLE、THB_IDLE)有關的作業系統(OS_A、OS_B)。14.按照權利要求13的方法,特徵在於,在檢查處理器(2)所接收中斷(FIQ、IRQ、SWI)時,至少使用一個至少部分為至少兩個作業系統(OS_A、OS_B)所公用的中斷處理程序。15.按照權利要求13的方法,特徵在於,在嵌入式系統(1)中,執行移動站功能和數據處理功能,所述至少兩個作業系統(OS_A、OS_B)中,第一作業系統(OS_A)涉及移動站功能的執行,第二作業系統(OS_B)涉及數據處理功能的執行。16.按照權利要求15的方法,特徵在於,移動站功能由第一用戶接口(UI1)使用,數據處理功能由第二用戶接口(UI2)使用。17.按照權利要求16的方法,特徵在於,移動站功能和數據處理功能在至少部分公用的顯示器(10、15)上顯示。18.按照權利要求16或17的方法,特徵在於,為使用移動站功能和數據處理功能,通過至少部分公用的裝置(9、14)來提供數據。19.按照權利要求13至18的任一項的方法,特徵在於,在沒有第一作業系統(OS_A)的線程(THA1、THA2、THA_IDLE)正在運行時,進行從第一作業系統(OS_A)的執行到執行第二作業系統(OS_B)的轉換。20.按照權利要求13至19的任一項的方法,特徵在於,在處理器(2)所接收的中斷影響第一作業系統(OS_A)下的至少一個線程(THA1、THA2、THA-IDLE)的執行時,進行從第二作業系統(OS_B)的執行到執行第一作業系統(OS_A)的轉換。21.按照權利要求13至20的任一項的方法,特徵在於,至少第一作業系統(OS_A)是實時作業系統。22.按照權利要求13至21的任一項的方法,特徵在於,在第一組線程的一個線程(THA1、THA2、THA_IDLE)中執行第二作業系統(OS_B)。23.按照權利要求22的方法,特徵在於,為第一組線程的每個線程(THA1、THA2、THA-IDLE)確定優先級,為了增加第二作業系統(OS_B)的執行時間,可以提高其中執行第二作業系統(OS_B)的線程的優先級。24.一種包含至少一個用於運行作業系統(OS_A、OS_B)的處理器(2)的通信設備(1),特徵在於,通信設備(1)進一步包含-用於在處理器(2)中運行至少兩個作業系統(OS_A、OS_B)的裝置(17、401、412);-包含第一組線程(THA1、THA2、THA-IDLE)的第一作業系統(OS_A);-包含第二組線程(THB1、THB2、THB_IDLE)的第二作業系統(OS_B);-用於向處理器(2)生成中斷(FIQ、IRQ、SWI)的裝置(nFIQ、nIRQ、nSWI);-檢查裝置(401、603、617),用於檢查已經到達處理器(2)的中斷(FIQ、IRQ、SWI)影響哪個線程(THA1、THA2、THB1、THB2、THA_IDLE、THB_IDLE)的執行;-傳輸裝置(401、412、603、609、617),用於將中斷數據傳輸給與影響處理器(2)所接收中斷(FIQ、IRQ、SWI)的線程(THA1、THA2、THB1、THB2、THA_IDLE、THB_IDLE)有關的作業系統(OS_A、OS_B)。25.按照權利要求24的通信設備(1),特徵在於,檢查裝置(401、603、617)包含至少一個、至少部分為至少兩個作業系統(OS_A、OS_B)所公用的中斷處理程序(603、607)。26.按照權利要求24或25的通信設備(1),特徵在於,它包含移動站功能和數據處理功能,這至少兩個作業系統(OS_A、OS_B)中,第一作業系統(OS_A)涉及移動站功能的運行,第二作業系統(OS_B)涉及數據處理功能的運行。27.按照權利要求26的通信設備(1),特徵在於,包含至少一個至少部分涉及移動站功能的用戶接口(UI1)和至少一個至少部分涉及數據處理功能的用戶接口(UI2)。28.按照權利要求27的通信設備(1),特徵在於,涉及移動站功能的用戶接口(UI1)和涉及數據處理功能的用戶接口(UI2)包含至少部分公用的顯示器(10、15)。29.按照權利要求27或28的通信設備(1),特徵在於,涉及移動站功能的用戶接口(UI1)和涉及數據處理功能的用戶接口(UI2)包含至少部分公用的數據提供裝置(9、14)。30.按照權利要求24至29的任一項的通信設備(1),特徵在於,它包含用於在沒有第一作業系統(OS_A)的線程(THA1、THA2、THA_IDLE)正在運行時將第一作業系統(OS_A)的執行轉到第二作業系統(OS_B)的執行的裝置(2,THA_IDLE)。31.按照權利要求24至30的任一項的通信設備(1),特徵在於,它包含用於在對處理器(2)的中斷(FIQ、IRQ、SWI)影響第一作業系統(OS_A)下的至少一個線程(THA1、THA2、THA_IDLE)的運行時從執行第二作業系統(OS_B)轉而運行第一作業系統(OS_A)的裝置(2,TH1_SCH_A)。32.按照權利要求24至31的任一項的的通信設備(1),特徵在於,至少第一作業系統(OS_A)是實時作業系統。33.按照權利要求24至32的任一項的的通信設備(1),特徵在於,處理器(2)至少包含下列方式-用戶方式(USER方式);-特權方式(SVC方式);-不定方式(UND方式);-一個或多個中斷方式(FIQ方式、IRQ方式、SWI方式);並且安排第一作業系統(OS_A)至少部分地在不定方式(UND方式)中運行,安排第二作業系統(OS_B)至少部分地在用戶方式(USER方式)中運行,安排中斷處理程序(603、617)在某個中斷方式(FIQ方式、IRQ方式、SWI方式)中運行。34.按照權利要求24至33的任一項的通信設備(1),特徵在於,第一組線程的線程中的一個線程(THA1、THA2、THA_IDLE)包含第二作業系統(0S_B)。全文摘要一種包含至少一個用於運行作業系統(OS-A、OS-B)的處理器(2)的嵌入式系統(1)。嵌入式系統(1)進一步包含:用於在處理器(2)中運行至少兩個作業系統(OS-A、OS-B)的裝置(17、401、412);包含第一組線程(THA1、THA2、THA-IDLE)的第一作業系統(OS-A);包含第二組線程(THB1、THB2、THB-IDLE)的第二作業系統(OS-B);用於向處理器(2)生成中斷(FIQ、IRQ、SWI)的裝置(nFIQ、nIRQ、nSWI);用於檢查已經到達處理器(2)的中斷(FIQ、IRQ、SWI)影響哪個線程(THA1、THA2、THB1、THB2、THA-IDLE、THB-IDLE)的執行的裝置(401、603、617);用於將中斷數據傳輸給與影響處理器(2)所接收中斷(FIQ、IRQ、SWI)的線程(THA1、THA2、THB1、THB2、THA-IDLE、THB-IDLE)有關的作業系統(OS-A、OS-B)的裝置(401、412、603、609、617)。文檔編號G06F9/48GK1294706SQ99804263公開日2001年5月9日申請日期1999年1月21日優先權日1998年1月21日發明者R·倫凱,V·薩裡寧,J·坎託拉,J·萊斯克萊,K·萊姆皮寧,A·普爾霍寧申請人:諾基亞行動電話有限公司