時分多線程技術在單片機中的應用
(3)線程管理
在時鐘中斷服務程序中,用任務號調度線程執行次序。根據控制目標、設備狀態以及當前線程的執行結果,選擇下一步將要執行的任務號;而各任務線程執行在主控循環程序中完成。也就是說,把時間片驅動以及任務調度與任務線程處理過程分開,這樣有利于構建靈活、高效的軟件框架結構,提高系統的實時響應能力與可維護性。
在以C8051F005芯片構建的應用系統中,為了縮短時間片中斷服務程序的執行時間,提高系統的中斷響應能力,任務線程調度以及上下文切換控制在T2時鐘中斷服務程序中實現,以事件發生標識TstateChange和線程標識TimeSlice進行線程調度。TstateChange用于控制主控循環方向,TimeSlice則用于調度就緒線程的執行次序。
為了降低系統功耗,提高系統可靠性,程序主控循環體在每個循環結束后都要使MCU進入體眠狀態,并以時間片T2中斷、其他異步中斷源或引腳觸發事件等喚醒MCU。而TstateChange狀態標識量就是控制主控循環方向,以區分時間片任務線程調度與非T2等的異步中斷事件。其主控循環流程如圖1所示,其線程控制可以用如下程序結構實現。

該體系框架優點在于:可方便地構建控制關系并行的多線程架構;任務線程的執行時間明確;同時對調整任務線程執行時序、維護功能模塊提供了便利。
缺陷是:由于構成的是非搶占式控制方式,在線程調度處理上不能確保時間關鍵的異步事件優先執行,這也是其器件內核的固有缺陷。

評論