<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > T-Kernel在Blackfin處理器上的移植分析

T-Kernel在Blackfin處理器上的移植分析

作者: 時(shí)間:2012-03-20 來(lái)源:網(wǎng)絡(luò ) 收藏

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

4.3系統調用入口移植

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

圖3 系統調用處理流程

5 移植測試

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

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

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

任務(wù)切換時(shí)間

搶占時(shí)間(中斷觸發(fā))

中斷延遲時(shí)間

信號量混洗時(shí)間

cycles

1716

1662

424

1584

運行時(shí)間(600MHz)

2.9us

2.7us

0.7 us

2.6us

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

6 總結

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

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

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

參考文獻

[1] 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 System Call, page:www.onghu.com/te 2006

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

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

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

NO.8 P.19-21 2005


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: T-Kernel Blakfin T-Engine RTOS移植

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>