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