時(shí)分多線程技術(shù)在單片機(jī)中的應(yīng)用
在統(tǒng)籌考慮任務(wù)線程段的代碼量、外設(shè)響應(yīng)、系統(tǒng)響應(yīng)性能以及線程切換的數(shù)據(jù)保護(hù)量后,確定以lOms作線程時(shí)間片的切換單位。主要考慮以下幾方面因素:
(1)任務(wù)線程段代碼量的大小
根據(jù)各功能模塊大小,依據(jù)相關(guān)性以及時(shí)序等邏輯關(guān)系,在考慮各功能模塊內(nèi)聚性、線程切換運(yùn)算量的基礎(chǔ)上,進(jìn)行模塊分解、合并,組成線程執(zhí)行代碼段,以確保線程執(zhí)行代碼段(包括中斷服務(wù)程序的執(zhí)行時(shí)間)能在時(shí)間片內(nèi)完成,從而簡(jiǎn)化了控制模型,降低了多線程中上下文之間切換的復(fù)雜度。
例如處理鍵盤輸入,為實(shí)現(xiàn)鍵盤輸入的消抖動(dòng)干擾、冗余讀取鍵值以及持續(xù)按鍵與點(diǎn)擊按鍵功能。通過(guò)設(shè)置若干標(biāo)識(shí)變量,細(xì)分鍵值處理線程的時(shí)序作業(yè)步驟,使每個(gè)作業(yè)執(zhí)行時(shí)間片小于lOms,從而適應(yīng)時(shí)鐘片調(diào)度的時(shí)間約束條件,降低設(shè)計(jì)風(fēng)險(xiǎn)。
對(duì)按鍵的20~30ms防抖動(dòng)延時(shí),可通過(guò)設(shè)置標(biāo)識(shí)量keydelay,在時(shí)間片中斷服務(wù)程序中進(jìn)行延時(shí)計(jì)數(shù),而在主循環(huán)程序中就可進(jìn)行如下處理。
(2)外設(shè)響應(yīng)
在考慮MCU同各種外設(shè)交互的延時(shí)因素中,要綜合平衡外設(shè)延時(shí)時(shí)間、線程切換、時(shí)間片周期等因素對(duì)系統(tǒng)整體綜合性能的影響,最大限度地提升CPU利用率。
(3)A/D數(shù)據(jù)轉(zhuǎn)換速率
對(duì)所讀溫度、功率值的采樣頻率,根據(jù)C8051F005的片上A/D轉(zhuǎn)換速率以及數(shù)字濾波處理的信號(hào)冗余讀數(shù)要求,兼顧時(shí)間片大小。
3 特別注意事項(xiàng)
?、贂r(shí)間片中斷T2應(yīng)設(shè)最高優(yōu)先級(jí),以免其他中斷程序干擾時(shí)間片調(diào)度程序的實(shí)時(shí)性處理。
?、谥袛喾?wù)程序的調(diào)度算法應(yīng)盡量簡(jiǎn)短,提高系統(tǒng)的響應(yīng)能力。
?、圩⒁舛褩2僮鞯囊绯隹刂?。
?、芊峙湓跁r(shí)間片中的線程代碼段要有合理的組合與調(diào)度考慮,以均衡負(fù)擔(dān)CPU的時(shí)間片,降低設(shè)計(jì)風(fēng)險(xiǎn)。
?、菰诔跏蓟到y(tǒng)狀態(tài)時(shí),確保線程狀態(tài)標(biāo)識(shí)的創(chuàng)建,以及時(shí)間片中斷T2的使能。
?、奚髦靥幚碇袛喾?wù)程序執(zhí)行時(shí)間,避免擠占線程時(shí)間片的正常處理,引起控制紊亂、系統(tǒng)崩潰。
結(jié)語(yǔ)
針對(duì)日益復(fù)雜、多樣、高實(shí)時(shí)要求的應(yīng)用項(xiàng)目,本文提供了一種易于設(shè)計(jì)、功能便于擴(kuò)充的解決方案。由此也啟示我們,采用正確、靈活的設(shè)計(jì)方法,綜合運(yùn)用現(xiàn)有技術(shù),可有效提高單片機(jī)應(yīng)用系統(tǒng)性能,擴(kuò)大應(yīng)用領(lǐng)域,增強(qiáng)實(shí)時(shí)控制能力,降低開(kāi)發(fā)難度。
評(píng)論