<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          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ò) 收藏

          (3)線程管理

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

            在以C8051F005芯片構(gòu)建的應(yīng)用系統(tǒng)中,為了縮短時(shí)間片中斷服務(wù)程序的執(zhí)行時(shí)間,提高系統(tǒng)的中斷響應(yīng)能力,任務(wù)線程調(diào)度以及上下文切換控制在T2時(shí)鐘中斷服務(wù)程序中實(shí)現(xiàn),以事件發(fā)生標(biāo)識(shí)TstateChange和線程標(biāo)識(shí)TimeSlice進(jìn)行線程調(diào)度。TstateChange用于控制主控循環(huán)方向,TimeSlice則用于調(diào)度就緒線程的執(zhí)行次序。

            為了降低系統(tǒng)功耗,提高系統(tǒng)可靠性,程序主控循環(huán)體在每個(gè)循環(huán)結(jié)束后都要使MCU進(jìn)入體眠狀態(tài),并以時(shí)間片T2中斷、其他異步中斷源或引腳觸發(fā)事件等喚醒MCU。而TstateChange狀態(tài)標(biāo)識(shí)量就是控制主控循環(huán)方向,以區(qū)分時(shí)間片任務(wù)線程調(diào)度與非T2等的異步中斷事件。其主控循環(huán)流程如圖1所示,其線程控制可以用如下程序結(jié)構(gòu)實(shí)現(xiàn)。

            

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

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

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

            

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



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();