時分多線程技術(shù)在單片機中的應(yīng)用
本文就時分多線程技術(shù)在單片機中的應(yīng)用進行了介紹。該方法為構(gòu)建低成本、高效、便于維護的單片機系統(tǒng)提供了良好的體系框架結(jié)構(gòu)和設(shè)計思想。
1 時分多線程結(jié)構(gòu)應(yīng)用
通常,在單片機應(yīng)用的各種控制系統(tǒng)中,都或多或少地存在著諸如現(xiàn)場數(shù)據(jù)采集、控制量輸出、工作狀態(tài)檢測以及數(shù)據(jù)傳輸?shù)雀鞣N同外設(shè)的交互過程;而各類外設(shè)與Mcu的響應(yīng)速度不匹配,是制約系統(tǒng)整體性能的重要因素。面對這種交互瓶頸,運用時分多線程架構(gòu)可獲得良好的效果。
特別是對于系統(tǒng)與外設(shè)頻繁進行數(shù)據(jù)交互的場合,能顯著提升系統(tǒng)的實時響應(yīng)能力。這里采用的是以時分輪轉(zhuǎn)調(diào)度算法實現(xiàn)在單片機系統(tǒng)中的多任務(wù)控制目標。
1.1 時分輪轉(zhuǎn)調(diào)度算法的多線程實現(xiàn)
時分輪轉(zhuǎn)調(diào)度算法是以多個線程輪流占用cPu的執(zhí)行時間來實現(xiàn)的。在外設(shè)交互頻繁的應(yīng)用場合中,可有效地解決響應(yīng)速度不匹配所造成的CPU等待外設(shè)響應(yīng)的時間消耗問題,從而提高MCU運算部件的利用率。
而在多線程的調(diào)度切換過程中,要對上一個線程的運行環(huán)境進行保護,并為下一個線程做好準備。就單片機系統(tǒng)而言,要嚴格實現(xiàn)真正意義上的實時多線程控制,會受到容量、中斷源、指針等一系列系統(tǒng)資源的條件限制。
本文是以C8051F005單片機構(gòu)建的應(yīng)用系統(tǒng)。它是以805l內(nèi)核為基礎(chǔ)的,沒有太多空間用于存放或保護任務(wù)切換時的現(xiàn)場數(shù)據(jù)(如程序指針、程序狀態(tài)字、累加器等),也難于應(yīng)用搶占式實時任務(wù)切換的實現(xiàn)激勵機制,同時MCU速率也有限。
針對單片機存在的這些資源瓶頸,運用時分輪轉(zhuǎn)算法作為多線程控制算法架構(gòu),以非搶占式異步處理方法,在合理分配、運用通用工作寄存器組的情況下,通過整合或細分功能模塊結(jié)構(gòu),將控制程序劃分為各線程任務(wù),以縮短CPU的閑置時間;并將每個線程的執(zhí)行時間控制在時間片內(nèi),以降低上下文切換的復雜度,從而降低開發(fā)風險。
1.2 多線程的管理策略及應(yīng)用
(1)時間片長度
通過對控制功能、時序的合理組合,以時間片長度劃分的程序片段,應(yīng)確保每個線程的執(zhí)行代碼段在“時間片”內(nèi)完成,以此降低線程任務(wù)的控制復雜度和設(shè)計風險。具體實施原則詳見第2節(jié)。
(2)線程協(xié)調(diào)方式
通過設(shè)置標識量,將各時間片內(nèi)的線程任務(wù)協(xié)調(diào)起來。例如,在鍵盤輸入中的消抖動延時和鍵值冗余讀取、在A/D數(shù)據(jù)采集中的采樣觸發(fā)與數(shù)值讀取,以及SPI的數(shù)據(jù)傳輸?shù)裙δ軌K,都可進行任務(wù)線程的作業(yè)步驟細分。通過設(shè)置線程的階段標識量,協(xié)調(diào)前后時間片的線程執(zhí)行步調(diào).
評論