<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è) > 嵌入式系統 > 時(shí)分多線(xiàn)程在單片機系統中的應用研究

時(shí)分多線(xiàn)程在單片機系統中的應用研究

——
作者:王江寧 呂軍 時(shí)間:2007-11-07 來(lái)源:?jiǎn)纹瑱C及嵌入式系統應用 收藏

    概要闡述了中以時(shí)分輪轉調度算法實(shí)現多線(xiàn)程的開(kāi)發(fā)模式,呈現了一種合理、有效的構建方法,并以功能模塊結構提供了一個(gè)便于維護的系統框架。為日益復雜、多樣和實(shí)時(shí)要求更高的應用項目,提供了一種易于設計和功能擴充的解決方案。 

    引 言 
    

    隨著(zhù)IT技術(shù)的飛速發(fā)展,應用系統幾乎覆蓋了社會(huì )生活的各個(gè)角落,從消費電子、通信網(wǎng)絡(luò )、工業(yè)控制、汽車(chē)到軍事等領(lǐng)域皆可覓其蹤影;而在硬件、軟件以及網(wǎng)絡(luò )技術(shù)日益成熟的今天,其應用形式正呈現多樣性和復雜性。尤其是SoC、可配置內核等性能的出現,其可裁剪性使系統設計成本大大降低,減小了系統設計工作量,為應用提供了便利,在產(chǎn)品設計、更新?lián)Q代等應用方面也備受青睞。 
     

    為適應這些紛繁的應用需求.本文就技術(shù)在單片機中的應用進(jìn)行了介紹。該方法為構建低成本、高效、便于維護的單片機系統提供了良好的體系框架結構和設計思想。 

    1 結構應用 
     

    通常,在單片機應用的各種控制系統中,都或多或少地存在著(zhù)諸如現場(chǎng)數據采集、控制量輸出、工作狀態(tài)檢測以及數據傳輸等各種同外設的交互過(guò)程;而各類(lèi)外設與Mcu的響應速度不匹配,是制約系統整體性能的重要因素。面對這種交互瓶頸,運用架構可獲得良好的效果。 
     

    特別是對于系統與外設頻繁進(jìn)行數據交互的場(chǎng)合,能顯著(zhù)提升系統的實(shí)時(shí)響應能力。這里采用的是以時(shí)分輪轉調度算法實(shí)現在單片機系統中的多任務(wù)控制目標。 


    1.1 時(shí)分輪轉調度算法的多線(xiàn)程實(shí)現 
     

    時(shí)分輪轉調度算法是以多個(gè)線(xiàn)程輪流占用cPu的執行時(shí)間來(lái)實(shí)現的。在外設交互頻繁的應用場(chǎng)合中,可有效地解決響應速度不匹配所造成的CPU等待外設響應的時(shí)間消耗問(wèn)題,從而提高M(jìn)CU運算部件的利用率。 
     

    而在多線(xiàn)程的調度切換過(guò)程中,要對上一個(gè)線(xiàn)程的運行環(huán)境進(jìn)行保護,并為下一個(gè)線(xiàn)程做好準備。就單片機系統而言,要嚴格實(shí)現真正意義上的實(shí)時(shí)多線(xiàn)程控制,會(huì )受到容量、中斷源、指針等一系列系統資源的條件限制。 
     

    本文是以C8051F005單片機構建的應用系統。它是以805l內核為基礎的,沒(méi)有太多空間用于存放或保護任務(wù)切換時(shí)的現場(chǎng)數據(如程序指針、程序狀態(tài)字、累加器等),也難于應用搶占式實(shí)時(shí)任務(wù)切換的實(shí)現激勵機制,同時(shí)MCU速率也有限。 
     

    針對單片機存在的這些資源瓶頸,運用時(shí)分輪轉算法作為多線(xiàn)程控制算法架構,以非搶占式異步處理方法,在合理分配、運用通用工作寄存器組的情況下,通過(guò)整合或細分功能模塊結構,將控制程序劃分為各線(xiàn)程任務(wù),以縮短CPU的閑置時(shí)間;并將每個(gè)線(xiàn)程的執行時(shí)間控制在時(shí)間片內,以降低上下文切換的復雜度,從而降低開(kāi)發(fā)風(fēng)險。 


    1.2 多線(xiàn)程的管理策略及應用 


    (1)時(shí)間片長(cháng)度 
     

    通過(guò)對控制功能、時(shí)序的合理組合,以時(shí)間片長(cháng)度劃分的程序片段,應確保每個(gè)線(xiàn)程的執行代碼段在“時(shí)間片”內完成,以此降低線(xiàn)程任務(wù)的控制復雜度和設計風(fēng)險。具體實(shí)施原則詳見(jiàn)第2節。 


    (2)線(xiàn)程協(xié)調方式 
     

    通過(guò)設置標識量,將各時(shí)間片內的線(xiàn)程任務(wù)協(xié)調起來(lái)。例如,在鍵盤(pán)輸入中的消抖動(dòng)延時(shí)和鍵值冗余讀取、在A(yíng)/D數據采集中的采樣觸發(fā)與數值讀取,以及SPI的數據傳輸等功能塊,都可進(jìn)行任務(wù)線(xiàn)程的作業(yè)步驟細分。通過(guò)設置線(xiàn)程的階段標識量,協(xié)調前后時(shí)間片的線(xiàn)程執行步調。 


    (3)線(xiàn)程管理 
     

    在時(shí)鐘中斷服務(wù)程序中,用任務(wù)號調度線(xiàn)程執行次序。根據控制目標、設備狀態(tài)以及當前線(xiàn)程的執行結果,選擇下一步將要執行的任務(wù)號;而各任務(wù)線(xiàn)程執行在主控循環(huán)程序中完成。也就是說(shuō),把時(shí)間片驅動(dòng)以及任務(wù)調度與任務(wù)線(xiàn)程處理過(guò)程分開(kāi),這樣有利于構建靈活、高效的軟件框架結構,提高系統的實(shí)時(shí)響應能力與可維護性。 
    

    在以C8051F005芯片構建的應用系統中,為了縮短時(shí)間片中斷服務(wù)程序的執行時(shí)間,提高系統的中斷響應能力,任務(wù)線(xiàn)程調度以及上下文切換控制在T2時(shí)鐘中斷服務(wù)程序中實(shí)現,以事件發(fā)生標識TstateChange和線(xiàn)程標識TimeSlice進(jìn)行線(xiàn)程調度。TstateChange用于控制主控循環(huán)方向,TimeSlice則用于調度就緒線(xiàn)程的執行次序。 
    
    為了降低系統功耗,提高系統可靠性,程序主控循環(huán)體在每個(gè)循環(huán)結束后都要使MCU進(jìn)入體眠狀態(tài),并以時(shí)間片T2中斷、其他異步中斷源或引腳觸發(fā)事件等喚醒MCU。而TstateChange狀態(tài)標識量就是控制主控循環(huán)方向,以區分時(shí)間片任務(wù)線(xiàn)程調度與非T2等的異步中斷事件。其主控循環(huán)流程如圖1所示,其線(xiàn)程控制可以用如下程序結構實(shí)現。 

    

 
    該體系框架優(yōu)點(diǎn)在于:可方便地構建控制關(guān)系并行的多線(xiàn)程架構;任務(wù)線(xiàn)程的執行時(shí)間明確;同時(shí)對調整任務(wù)線(xiàn)程執行時(shí)序、維護功能模塊提供了便利。 
     

    缺陷是:由于構成的是非搶占式控制方式,在線(xiàn)程調度處理上不能確保時(shí)間關(guān)鍵的異步事件優(yōu)先執行,這也是其器件內核的固有缺陷。 




    2 確定時(shí)間片長(cháng)度 
     

    在統籌考慮任務(wù)線(xiàn)程段的代碼量、外設響應、系統響應性能以及線(xiàn)程切換的數據保護量后,確定以lOms作線(xiàn)程時(shí)間片的切換單位。主要考慮以下幾方面因素: 


    (1)任務(wù)線(xiàn)程段代碼量的大小 
     

    根據各功能模塊大小,依據相關(guān)性以及時(shí)序等邏輯關(guān)系,在考慮各功能模塊內聚性、線(xiàn)程切換運算量的基礎上,進(jìn)行模塊分解、合并,組成線(xiàn)程執行代碼段,以確保線(xiàn)程執行代碼段(包括中斷服務(wù)程序的執行時(shí)間)能在時(shí)間片內完成,從而簡(jiǎn)化了控制模型,降低了多線(xiàn)程中上下文之間切換的復雜度。 
    

    例如處理鍵盤(pán)輸入,為實(shí)現鍵盤(pán)輸入的消抖動(dòng)干擾、冗余讀取鍵值以及持續按鍵與點(diǎn)擊按鍵功能。通過(guò)設置若干標識變量,細分鍵值處理線(xiàn)程的時(shí)序作業(yè)步驟,使每個(gè)作業(yè)執行時(shí)間片小于lOms,從而適應時(shí)鐘片調度的時(shí)間約束條件,降低設計風(fēng)險。 
     

    對按鍵的20~30ms防抖動(dòng)延時(shí),可通過(guò)設置標識量keydelay,在時(shí)間片中斷服務(wù)程序中進(jìn)行延時(shí)計數,而在主循環(huán)程序中就可進(jìn)行如下處理。 


    (2)外設響應 
     

    在考慮MCU同各種外設交互的延時(shí)因素中,要綜合平衡外設延時(shí)時(shí)間、線(xiàn)程切換、時(shí)間片周期等因素對系統整體綜合性能的影響,最大限度地提升CPU利用率。 


    (3)A/D數據轉換速率 
     

    對所讀溫度、功率值的采樣頻率,根據C8051F005的片上A/D轉換速率以及數字濾波處理的信號冗余讀數要求,兼顧時(shí)間片大小。 

    3 特別注意事項 
     

       ①時(shí)間片中斷T2應設最高優(yōu)先級,以免其他中斷程序干擾時(shí)間片調度程序的實(shí)時(shí)性處理。
       ②中斷服務(wù)程序的調度算法應盡量簡(jiǎn)短,提高系統的響應能力。
       ③注意堆棧操作的溢出控制。
       ④分配在時(shí)間片中的線(xiàn)程代碼段要有合理的組合與調度考慮,以均衡負擔CPU的時(shí)間片,降低設計風(fēng)險。
       ⑤在初始化系統狀態(tài)時(shí),確保線(xiàn)程狀態(tài)標識的創(chuàng )建,以及時(shí)間片中斷T2的使能。
       ⑥慎重處理中斷服務(wù)程序執行時(shí)間,避免擠占線(xiàn)程時(shí)間片的正常處理,引起控制紊亂、系統崩潰。 

    結語(yǔ) 
   

    針對日益復雜、多樣、高實(shí)時(shí)要求的應用項目,本文提供了一種易于設計、功能便于擴充的解決方案。由此也啟示我們,采用正確、靈活的設計方法,綜合運用現有技術(shù),可有效提高單片機應用系統性能,擴大應用領(lǐng)域,增強實(shí)時(shí)控制能力,降低開(kāi)發(fā)難度。 
     

    當前,隨著(zhù)IT業(yè)的硬件技術(shù)不斷提升,探求高效軟件方法同樣是不容忽視的問(wèn)題。雖然一些低效、存在速度瓶頸的程序問(wèn)題.會(huì )隨著(zhù)時(shí)問(wèn)推移因硬件技術(shù)的提升而化解,但編寫(xiě)高效軟件是鍛煉、提升編程人員技術(shù)水平的途徑,有極強的技術(shù)性,需要有的放矢、長(cháng)期的代碼實(shí)踐,才能磨礪出編寫(xiě)高效代碼的技巧、方法和能力。在資源、設計成本、交貨時(shí)間允許的日常設計中,應進(jìn)行多重算法的優(yōu)劣選擇,而不要簡(jiǎn)單地使用頭腦中首位閃現的方案。 

 

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(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>