新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 時(shí)分多線程技術(shù)在單片機(jī)中的應(yīng)用

時(shí)分多線程技術(shù)在單片機(jī)中的應(yīng)用

作者: 時(shí)間:2011-08-10 來(lái)源:網(wǎng)絡(luò) 收藏
2 確定時(shí)間片長(zhǎ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ù)雜度。

  例如處理鍵盤(pán)輸入,為實(shí)現(xiàn)鍵盤(pá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)行如下處理。

  

時(shí)分多線程技術(shù)在單片機(jī)中的應(yīng)用

  (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ù),可有效提高應(yīng)用系統(tǒng)性能,擴(kuò)大應(yīng)用領(lǐng)域,增強(qiáng)實(shí)時(shí)控制能力,降低開(kāi)發(fā)難度。


上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉