當前位置:首頁 > 單片機 > 單片機
[導讀]從分析重入堆棧的原理與不足出發(fā),通過把8051頁變量與重八問題相聯(lián)系,提出基于頁的重入函數(shù),并設計一種實時性和安全性較好的基于頁的805l多任務模型。

摘要 從分析重入堆棧的原理與不足出發(fā),通過把8051頁變量與重八問題相聯(lián)系,提出基于頁的重入函數(shù),并設計一種實時性和安全性較好的基于頁的805l多任務模型。從變量存取帶寬的角度,將該模型與重入堆棧方案進行對比,確定新模型中變量存取速度可獲得最高為3.75倍的提升;最后列出一些設計上的限制及對策。
關鍵詞 805l 重入堆棧 多任務模型 實時 頁變量


    隨著8051微控制器性能的不斷提高,使用多任務操作系統(tǒng)對單片機進行資源管理已成為當代開發(fā)的需要。由于受靜態(tài)鏈接的限制,8051系統(tǒng)的多任務開發(fā)需要處理代碼重入(reentrance)的問題。
    為了實現(xiàn)重入,通??梢岳肒eil C51的關鍵字reentrant,將函數(shù)聲明為重人類型。通過在重入堆棧分配局部變量,使函數(shù)具有可重入性;但該重入方案的實時性較差。
    為提高多任務系統(tǒng)的實時性,本文介紹一種新方案——基于頁的多任務模型。


1 重入函數(shù)的原理與不足
   
當使用Kcil C51的關鍵字reentrant來指定函數(shù)屆性時,即得重入函數(shù)(reentrant function)。
1.1 重入函數(shù)的原理
   
重入函數(shù)的原理是Keil C編譯器建立一個軟件操作的重入堆棧。重入函數(shù)能自動為不同的調(diào)用者在重入堆棧中分配獨立局部變量,使函數(shù)具備重入性。
    變量分配過程如圖l所示,函數(shù)人口首先申請存儲空間。函數(shù)返回前,必須將所申請的存儲空間歸還。變量分配和回收的位置都是重入堆棧的棧頂。
1.2 重入函數(shù)的不足
   
重入堆棧的最大缺點為效率低,Keil C51用戶手冊中已有明確記載。
    由圖l可作以下分析:首先,每次使用局部變量都需要計算變量地址,大大降低了變量存取速度,也消耗了處理器時間;其次,因為重入堆棧是純軟件實現(xiàn)的,因此反復進行的堆棧操作使重入函數(shù)的實時性進一步惡化。

2 基于頁的多任務模型原理與實現(xiàn)
2.1 原理
   
解決函數(shù)重入的關鍵在于局部變量的分配,可以從8051存儲器類型的分析和選擇入手。
    8051控制器能直接尋址的存儲器類型很豐富。在這些類型中,我們注意到了頁變量(pdata)及其與眾不同的特性。
(1)頁變量pdata
    根據(jù)Intel公司的用戶手冊,805l的頁存儲器就是指單字節(jié)地址方式操作的外部存儲器。使用單字節(jié)地址方式時,允許使用P2對外部數(shù)據(jù)來分頁,該方式的操作指令為“MOVX@Ri”。指令中R0或R1提供頁內(nèi)地址(低8位地址),P2寄存器隱藏地提供頁地址(高8位地址)。
    單字節(jié)地址方式將8051的64 KB外部存儲器分成256個頁面,如圖2所示。其硬件特征如下:①系統(tǒng)的256個頁面的存儲結構完全一致;②工作頁面可以被指定為這256頁中的任意一頁;③頁地址由P2隱式提供給地址總線,且頁地址可以由程序修改。

    工具方面,Keil C51專用關鍵字pdata表示單字節(jié)方式尋址的外部數(shù)據(jù)類型,pdata變量即頁變量。編譯后的頁變量具有以下特性:①頁變量操作嚴格對應單字節(jié)地址方式;②頁變量全部轉(zhuǎn)換成了靜態(tài)頁內(nèi)地址。
(2)頁函數(shù)
   
根據(jù)頁變量性質(zhì),只要函數(shù)的所有局部變量都被指定為頁變量類型,那么,函數(shù)所生成的代碼就可以工作于系統(tǒng)任一頁面上。
    當操作系統(tǒng)為一個函數(shù)分配多個頁面時,該函數(shù)與每一個頁面上的局部變量均構成一個進程。
    與重入函數(shù)不同,這類函數(shù)本身不能自動分配變量,因此沒有重入性。只有在操作系統(tǒng)的協(xié)助下,為其分配工作頁后,頁函數(shù)才是可重入的。頁函數(shù)中變量使用靜態(tài)地址,因此其存取速度得到大幅提升,改善了系統(tǒng)的實時性。
    為區(qū)別Keil C51定義的重入函數(shù)(reentrant func-tion),我們稱這種只使用頁變量的函數(shù)為“基于頁的重入函數(shù)(page-based reentrant function)”,簡稱為“頁函數(shù)”。
2.2 實現(xiàn)
   
根據(jù)原理分析中的可行性,筆者設計了名為Celia的基于頁的占先式8051多任務調(diào)度內(nèi)核。沿用μC/OS-II的結構框圖與處理流程,在TCB(Task Control Block,任務控制塊)中增加一個字節(jié)的頁面字段,并改寫了部分程序。有μC/OS-II為參照,使該調(diào)度內(nèi)核的設計可以很快完成。經(jīng)過在以W78P438為核心的平臺上實測,該系統(tǒng)調(diào)度正常,程序運行正確。這證明該重入方案可行。

3 基于頁的多任務模型性能分析
   
基于頁的多任務模型的程序結構與μC/OS-II基本一致,其區(qū)別主要是頁函數(shù)與重入函數(shù)的區(qū)別,因此,這里主要分析頁變量存取與重入堆棧變量存取的性能對比。
3.1 優(yōu)點
(1)更高的變量存取帶寬
    8051為8位總線接口,單字節(jié)存取是其基本操作。研究單字節(jié)變量的存取帶寬可以從根本上說明頁變量的優(yōu)點。
    805l系統(tǒng)操作外部存儲器使用的是MOVX指令。執(zhí)行該指令需要2個機器周期。在標準8051中,1個機器周期為12/fOSC,則總線帶寬如式(1)所示。其中fOSC為晶振頻率。

   
    如圖l,重入函數(shù)操作單字節(jié)變量i=0xaa,共需要15個機器周期。其中僅計算變量地址就需要12個機器周期。因此,重入堆棧的實際存取帶寬如式(2)所示。

   

    相對地,頁函數(shù)中變量地址是確定的。因為不需要計算地址的額外操作,其變量操作速度比重入堆棧有大幅提高。如圖3所示,頁函數(shù)中操作單字節(jié)變量只需要4個機器周期。頁變最的實際存取帶寬如式(3):

   

    各種帶寬的對比如下:

   
    進一步分析可知,操作多字節(jié)變量時,重入函數(shù)也只需要計算一次變量地址。故進行單字節(jié)變量存取時,重入堆棧的存取帶寬就是最低值。
    綜上所述,相對重入堆棧,存取單字節(jié)變量過程中,頁函數(shù)的帶寬加速比達到最大值Rmax=3.75,如式(4)所示。這表示相對于過去的重入函數(shù),頁函數(shù)具有更高的執(zhí)行效率和實時性。

   
    另外,如果頁函數(shù)不需要計算和操作重入堆棧指針,則不需要圖1中函數(shù)入口和出口處的指針操作(C?ADDXBP),可再次節(jié)省22個(首尾各11)指令周期。
(2)較好的安全性
    配置頁面的工作是由操作系統(tǒng)完成的。在使用基于頁的多任務開發(fā)中,任務本身不能更換頁面;因此,私有變量的操作只在當前頁進行,不會影響到其他頁或其他任務。這樣的程序封裝體現(xiàn)了較好的安全性。
3.2 存在問題與解決方法
(1)容量的限制
    8051的硬件決定了頁面大小為256字節(jié),不可變更。這使得“頁面容量限制”成為基于頁的多任務開發(fā)中最需要考慮的問題。
    存儲器的一頁為256字節(jié),與最小模式下8051的內(nèi)部數(shù)據(jù)空間(IDATA空間)大小相同。因此,筆者認為頁變量的256字節(jié)能滿足最小模式任務的需要。
    對于需求超過256字節(jié)的任務,可在頁面外的外部存儲器中申請后備空間。只要指向后備空間的指針在頁面內(nèi),則該后備空間仍是私有的,滿足重入條件,其結構示意圖如圖4所示。雖然后備存取區(qū)使用指針操作,但不需要計算變量地址,因此后備存儲區(qū)存取速度優(yōu)于重入堆棧。

(2)工具的限制
   
目前,Keil C51開發(fā)工具不提供多任務以及多頁面支持。這主要體現(xiàn)在兩點:
    ①需要新的函數(shù)庫。現(xiàn)有的大量函數(shù)庫不支持頁函數(shù)方式重入。準確地說,大部分函數(shù)庫不支持任何方式的重入——即使使用重入堆棧,函數(shù)庫問題也依然存在。目前的解決方法只有程序員根據(jù)需要編寫新的頁函數(shù)庫。
    ②一個項目中只允許存在一個pdata頁面,不能按任務將變量安排在不同的邏輯頁面上。其后果是,多任務開發(fā)中,編譯鏈接工具只在同一個頁面中分配所有任務的頁變量,導致存儲器迅速溢出。
    問題②的解決方案是:為使每個任務具有自己的工作頁,為每個任務單獨建立工程,并使用COMPACT方式進行編譯。各個任務工程之間和操作系統(tǒng)之間使用絕對地址表傳遞系統(tǒng)調(diào)用和任務入口地址。絕對地址表是對一些系統(tǒng)調(diào)用的約定地址。
    這些不便之處是暫時的、可克服的。


結語
    8051主要應用領域為實時控制,因此努力提高系統(tǒng)實時性是開發(fā)者不斷追求的目標。筆者從提高實時性的角度出發(fā),提出了一種基于頁的多任務模型。相對于目前重入堆棧多任務模型,它具有較好的實時性,也是處理重入問題的一種新思路。
    本模型已經(jīng)過Keil C5l仿真工具的一般性測試,并在W78P438芯片上實測成功,相信其結果適用于全部8051及兼容系列??紤]到8051依然廣泛應用在多任務開發(fā)中,本文中的新模型值得推廣。

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

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

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

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

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

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

關鍵字: 亞馬遜 解密 控制平面 BSP

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

關鍵字: 騰訊 編碼器 CPU

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

關鍵字: 華為 12nm EDA 半導體

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

關鍵字: 華為 12nm 手機 衛(wèi)星通信

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

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

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

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

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

關鍵字: BSP 信息技術
關閉
關閉