當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]1 概述在嵌入式RTOS(Real Time Operating System)領(lǐng)域,日本T-Engine組織推出的T-Kernel以其開源免費(fèi),小體積強(qiáng)實(shí)時(shí)性內(nèi)核,統(tǒng)一的接口規(guī)范等特點(diǎn)顯出了優(yōu)勢(shì);ADI. Blackf

1 概述

在嵌入式RTOS(Real Time Operating System)領(lǐng)域,日本T-Engine組織推出的T-Kernel以其開源免費(fèi),小體積強(qiáng)實(shí)時(shí)性內(nèi)核,統(tǒng)一的接口規(guī)范等特點(diǎn)顯出了優(yōu)勢(shì);ADI. Blackfin系列處理器在嵌入式控制和數(shù)字信號(hào)處理領(lǐng)域應(yīng)用非常廣泛,同時(shí)結(jié)合了MCU(Micro Controller Unit)和DSP特點(diǎn),非常適合于運(yùn)行RTOS系統(tǒng)。

本文分析T-Kernel內(nèi)核調(diào)度原理和Blackfin處理器內(nèi)核結(jié)構(gòu),歸納了T-Kernel在Blackfin處理器BF533系統(tǒng)移植過程中的三個(gè)主要問題:中斷管理,任務(wù)切換和系統(tǒng)調(diào)用入口三個(gè)模塊的實(shí)現(xiàn)方法,并討論了系統(tǒng)穩(wěn)定性和實(shí)時(shí)性的測試以保證系統(tǒng)的穩(wěn)定性和實(shí)時(shí)性。

2 T-Kernel概述

2.1 T-Kernel的系統(tǒng)結(jié)構(gòu)

 


圖1 T-Kernel的位置

T-Kernel的系統(tǒng)結(jié)構(gòu)如圖1所示,各功能模塊是以子系統(tǒng)(subsystem)的形式存在的,如設(shè)備管理模塊。

T-Kernel的內(nèi)核是系統(tǒng)默認(rèn)的子系統(tǒng),它為應(yīng)用層提供系統(tǒng)服務(wù)(SVC)接口,同時(shí)管理著其他子系統(tǒng)。子系統(tǒng)為應(yīng)用層提供擴(kuò)展服務(wù)(Extended SVC)調(diào)用接口。系統(tǒng)中各子系統(tǒng)運(yùn)行在相互獨(dú)立的地址空間中,保證了系統(tǒng)的模塊化,易于擴(kuò)充和裁減。

2.2 T-Kernel的系統(tǒng)狀態(tài)和任務(wù)調(diào)度

T-Kernel規(guī)范[1]中對(duì)系統(tǒng)狀態(tài)做了明確的劃分和定義,移植相關(guān)的狀態(tài)有:(1)任務(wù)態(tài) (Task Portion),指系統(tǒng)運(yùn)行在應(yīng)用層最高優(yōu)先級(jí)的就緒任務(wù)中;(2)任務(wù)無關(guān)態(tài) (Task Independent Portion),指系統(tǒng)的中斷和異常處理過程。任務(wù)無關(guān)態(tài)具有最高的執(zhí)行優(yōu)先權(quán),可以中斷其它狀態(tài)的執(zhí)行。

T-Kernel內(nèi)核采用了基于優(yōu)先級(jí)的可搶先調(diào)度策略,優(yōu)先級(jí)相同的任務(wù)采用先進(jìn)先出的時(shí)間片輪轉(zhuǎn)調(diào)度,允許任務(wù)動(dòng)態(tài)更改優(yōu)先級(jí)。

T-Kernel的任務(wù)調(diào)度和切換是分離的過程。內(nèi)核中維護(hù)著按照優(yōu)先級(jí)排列的就緒任務(wù)TCB(Task Control Block)指針鏈表隊(duì)列。全局指針ctxtsk指向當(dāng)前運(yùn)行任務(wù)的TCB。有更高優(yōu)先級(jí)任務(wù)就緒時(shí),全局指針schedtsk指向其TCB,此為任務(wù)調(diào)度過程;任務(wù)調(diào)度發(fā)生后,必須在條件滿足時(shí),系統(tǒng)觸發(fā)軟中斷異常進(jìn)行任務(wù)切換,將ctxtsk更新為schedtsk,程序轉(zhuǎn)入新任務(wù)運(yùn)行。

3 Blackfin處理器概述

Blakcfin處理器內(nèi)核包含雙算術(shù)處理單元的DSP引擎,執(zhí)行RISK指令集,結(jié)合了優(yōu)異的數(shù)字信號(hào)處理功能和完善的控制功能。.

Blackfin內(nèi)核相關(guān)的寄存器除了堆棧和返回地址寄存器:SP(Stack Pointer),F(xiàn)P(Frame Pointer),RETS(Subroutine Return Address Register),RETI(Interrupt Return Address Register),通用數(shù)據(jù)寄存器R0~R7,通用地址寄存器P0~P7,還包含數(shù)字信號(hào)處理相關(guān)寄存器 L0~L3,LB0~LB1,LC0~LC1,LT0~LT1,ASTAT,A0~A1,I0~I3, B0~B3,M0~M3. 在任務(wù)切換和中斷前后處理中,需要進(jìn)行寄存器保存恢復(fù)及相應(yīng)的設(shè)置[2]。

Blackfin處理器內(nèi)核支持15個(gè)優(yōu)先級(jí)的中斷。ILAT寄存器顯示當(dāng)前觸發(fā)的中斷;IMASK寄存器控制各優(yōu)先級(jí)中斷的使能和禁止;IPEND寄存器顯示當(dāng)前執(zhí)行的中斷,其第4位IPEND[4]是全局中斷的使能和禁止位。T-Kernel運(yùn)行在第15級(jí)(最低)中斷處理程序中,這樣系統(tǒng)運(yùn)行于Supervisor Mode,可以獲得對(duì)處理器操作的最大權(quán)限[2]。

T-Kernel系統(tǒng)運(yùn)行在ADSP-BF533 EZ-KIT LITE開發(fā)板,開發(fā)環(huán)境是ADI VisualDSP++4.5 Environment.

4 T-Kernel在BF533上的移植

4.1 系統(tǒng)中斷管理

T-Kernel對(duì)處理器中斷資源進(jìn)行動(dòng)態(tài)管理,在運(yùn)行時(shí)任務(wù)可以動(dòng)態(tài)更改中斷向量表、注冊(cè)和取消中斷,通過系統(tǒng)服務(wù)tk_def_int(Define Interrupt Handler) 來實(shí)現(xiàn)。

在中斷管理模塊的移植中,需要考慮以下三點(diǎn):

(1)保證中斷狀態(tài)寄存器IMASK的全局性

在進(jìn)行上下文保存恢復(fù)和臨界區(qū)管理時(shí),必須維持IMASK寄存器為全局變量。如果每個(gè)任務(wù)都擁有一個(gè)局部的IMASK值,則一個(gè)任務(wù)等待的中斷可能在另一個(gè)任務(wù)運(yùn)行時(shí)被禁止,造成系統(tǒng)對(duì)中斷無法實(shí)時(shí)響應(yīng)。同時(shí),tk_def_int函數(shù)需要實(shí)現(xiàn)不同任務(wù)對(duì)各級(jí)中斷定義的互斥功能,以保證全局 IMASK的有效和系統(tǒng)的穩(wěn)定。

(2)中斷前后處理

中斷前后處理是中斷管理移植的關(guān)鍵,影響到系統(tǒng)穩(wěn)定性和中斷處理的實(shí)時(shí)性。它對(duì)于任務(wù)是不可見過程,執(zhí)行不能被中斷。其主要操作包括:保存和恢復(fù)上下文;設(shè)置標(biāo)志變量標(biāo)示任務(wù)無關(guān)態(tài)的嵌套;更改堆棧指針使中斷子程序運(yùn)行在處理器內(nèi)部RAM;取得當(dāng)前觸發(fā)的最高優(yōu)先級(jí)中斷號(hào)對(duì)應(yīng)的子程序地址進(jìn)行調(diào)用;在中斷后處理判斷是否進(jìn)行任務(wù)切換。

系統(tǒng)為中斷程序分配獨(dú)立的內(nèi)部堆棧,使中斷程序運(yùn)行的地址空間獨(dú)立于任務(wù)和虛擬存儲(chǔ)地址,加快了中斷程序的處理速度,在系統(tǒng)進(jìn)入省電模式停止了外部存儲(chǔ)器時(shí)也不影響對(duì)中斷喚醒的響應(yīng)。在T-Kernel系統(tǒng)中,中斷處理屬于任務(wù)無關(guān)態(tài),其執(zhí)行優(yōu)先級(jí)高于任務(wù)態(tài),在中斷處理程序中發(fā)生的任務(wù)調(diào)度,需要延遲到中斷結(jié)束才能進(jìn)行切換。當(dāng)任務(wù)無關(guān)態(tài)運(yùn)行無嵌套,系統(tǒng)允許任務(wù)切換,schedtsk不等于ctxtsk三個(gè)條件滿足時(shí),中斷結(jié)束后即轉(zhuǎn)入任務(wù)切換。

(3)T-Kernel的系統(tǒng)時(shí)鐘中斷

T-Kernel的系統(tǒng)時(shí)鐘中斷使用Blackfin內(nèi)核的core timer 6號(hào)中斷。其前后處理步驟與(2)相同,為了保證系統(tǒng)穩(wěn)定性和實(shí)時(shí)性,一般為系統(tǒng)時(shí)鐘的中斷程序分配單獨(dú)的堆棧,使其在高速內(nèi)部RAM中執(zhí)行。

4.2 任務(wù)切換模塊的移植

任務(wù)切換包括任務(wù)間上下文切換和中斷到任務(wù)上下文切換,前者在臨界區(qū)結(jié)束時(shí)觸發(fā)軟中斷進(jìn)入dispatch_entry()完成,后者則在中斷后處理中調(diào)用tk_ret_int()開始執(zhí)行。

 


圖2 任務(wù)切換流程圖

dispatch_entry()和tk_ret_int()的處理過程都是保存ctxtsk任務(wù)的上下文,替換ctxtsk為schedtsk,恢復(fù)其上下文,執(zhí)行流程如圖2所示。二者的不同在于dispatch_entry()軟中斷的優(yōu)先級(jí)為14級(jí),而tk_ret_int()在中斷后處理中被調(diào)用,仍處于中斷過程,其優(yōu)先級(jí)由中斷處理程序的優(yōu)先級(jí)決定;這樣可能出現(xiàn)tk_ret_int()嵌套dispatch_entry()的情況,所以在從tk_ret_int()切入新任務(wù)或低功耗狀態(tài)之前需要判斷是否需要清除IPEND寄存器中斷執(zhí)行的標(biāo)志。當(dāng)沒有就緒任務(wù)時(shí),schedtsk值為空,系統(tǒng)轉(zhuǎn)入低功耗狀態(tài)。[!--empirenews.page--]

T-Kernel系統(tǒng)中的每個(gè)任務(wù)可以定義一個(gè)特定的任務(wù)異常處理程序,任務(wù)異常處理被觸發(fā)后,優(yōu)先于該任務(wù)得到執(zhí)行。

4.3系統(tǒng)調(diào)用入口移植

T-Kernel對(duì)應(yīng)用層調(diào)用系統(tǒng)服務(wù)和擴(kuò)展服務(wù)進(jìn)行了限制,只能調(diào)用相應(yīng)的接口函數(shù)(以tk_***_***()命名的API),在接口函數(shù)中觸發(fā)軟中斷進(jìn)入Call_entry(),在Call_entry()函數(shù)中才能取得實(shí)際服務(wù)函數(shù)(以_tk_***_***()命名)的入口地址執(zhí)行[3]。處理流程如圖3所示。系統(tǒng)調(diào)用可能發(fā)生在中斷過程中,所以Call_entry()軟中斷異常的優(yōu)先級(jí)需要設(shè)為最高。Fncd是每個(gè)服務(wù)函數(shù)唯一的標(biāo)識(shí)碼,從中可以判斷出該函數(shù)是系統(tǒng)服務(wù)還是子系統(tǒng)的擴(kuò)展系統(tǒng)服務(wù),后者需要通過svc_ientry()函數(shù)調(diào)用。

 


圖3 T-Kernel系統(tǒng)調(diào)用處理流程

5 移植測試

移植測試工作主要分為穩(wěn)定性測試和實(shí)時(shí)性測試兩部分。測試的目的是保證移植工作的正確性。

通過新建15個(gè)不同優(yōu)先級(jí)的任務(wù)進(jìn)行休眠暫停請(qǐng)求異常處理和請(qǐng)求信號(hào)量等操作,同時(shí)定義計(jì)時(shí)器中斷喚醒任務(wù),可以測試系統(tǒng)的穩(wěn)定性。移植系統(tǒng)的實(shí)時(shí)性可以通過任務(wù)的建立時(shí)間,結(jié)束時(shí)間,任務(wù)的切換時(shí)間,搶占時(shí)間,中斷延遲時(shí)間,信號(hào)量混洗時(shí)間等指標(biāo)來確定。

任務(wù)切換時(shí)間為系統(tǒng)在兩個(gè)具有相同優(yōu)先級(jí)獨(dú)立任務(wù)之間切換所需的時(shí)間。搶占時(shí)間定義為系統(tǒng)控制從低優(yōu)先級(jí)任務(wù)轉(zhuǎn)移到高優(yōu)先級(jí)任務(wù)所花費(fèi)的時(shí)間。中斷延遲時(shí)間指從中斷響應(yīng)到中斷子程序語句得到執(zhí)行的時(shí)間間隔。信號(hào)量混洗時(shí)間指一個(gè)信號(hào)被釋放到等待該信號(hào)量的任務(wù)被激活的時(shí)間延遲[6]。部分的測試結(jié)果如表5.1所示。移植代碼編譯為速度優(yōu)化100%,時(shí)間單位是Blackfin處理器cycles寄存器所記錄的運(yùn)行時(shí)鐘周期??梢钥吹?,系統(tǒng)運(yùn)行在600MHz時(shí)的性能指標(biāo)都在微秒級(jí)。

 

表1 部分適時(shí)性測試時(shí)間結(jié)果

6 總結(jié)

本文針對(duì)Blackfin處理器(BF533)平臺(tái)上移植T-Kernel的應(yīng)用需求,分析和歸納了移植的主要過程,總結(jié)了中斷管理、任務(wù)切換和系統(tǒng)調(diào)用接口三部分的移植方法,對(duì)系統(tǒng)的穩(wěn)定性和實(shí)時(shí)性進(jìn)行相應(yīng)的測試以保證移植工作的正確性。移植過程揭示了T-Kernel內(nèi)核任務(wù)調(diào)度的原理和技術(shù)細(xì)節(jié),對(duì)于其它RTOS的開發(fā)有很大的借鑒意義。

文中所討論的移植方法,沒有包括對(duì)于MMU(Memory Management Unit)管理模塊的移植,因?yàn)樵诮^大多數(shù)嵌入式實(shí)時(shí)性應(yīng)用中,由于對(duì)速度和資源的限制,并不開啟處理器的MMU功能,如果在數(shù)據(jù)和信息處理的應(yīng)用中有需求,可以針對(duì)特定處理器的MMU模塊進(jìn)行相關(guān)代碼的移植。

(特別感謝上海易律電子劉湘毅的技術(shù)支持)

參考文獻(xiàn)

[1] T-Engine Forum T-Kernel Specification Version 1.00.00 2005

[2] ADI ADSP-BF533 Blackfin Processor Hardware Reference Revision 3.0 Feb 2004

[3] Mohit Sindhwani, Anatomy of a T-Engine System Call, page:www.onghu.com/te 2006

[4]T-Engine Forum T-Kernel Implementation guide to New Hardware Rev.1.00.01 2006.06.2

[5]黃天戍,李秀紅 RTOS數(shù)據(jù)采集系統(tǒng)中實(shí)時(shí)處理與高速性的設(shè)計(jì)考慮[J] 微計(jì)算機(jī)信息 No.28 P.95-97 2005

[6] 李慶誠,顧健 嵌入式實(shí)時(shí)操作系統(tǒng)性能測試方法研究 單片機(jī)與嵌入式系統(tǒng)應(yīng)用

NO.8 P.19-21 2005

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉