KPS-600/20-REL調度算法的改進
2.1 實時系統的調度策略
KPS-600/20-REL在操作系統的多任務調度算法的設計上,要根據系統的具體需求來確定調度策略。實時調度策略按不同的方法可以分為:靜態/動態,基于優先級/不基于優先級,搶占式/非搶占式,單處理器/多處理器。其中,靜態是指在任務的整個生命期內優先級保持不變,任務的優先級是在系統建立任務時確定的;動態是指在任務的生命期內,隨時確定或改變它的優先級別,以適應系統工作環境和條件的變化。
KPS-600/20-REL系統采用的是靜態優先級分配策略,由用戶來為每個任務優先級。雖然任務的優先級可通過OSTaskChangePrio()函數改變,但函數功能簡單,僅以用戶的新優先級來替換任務當前的優先級。隨著實時嵌入式技術的發展,對嵌入式系統的實時性要求越來越高,多樣化的調度方法己成為一種趨勢。本文討論動態優先級調度中的*算法截止期zui早優先算法的改進及其在μC/OS-II中的實現。
2.2 調度算法的改進
截止期zui早優先算法是動態優先級調度算法中的*算法。在截止期zui早優先算法中,系統按任務的截止期給每個任務分配優先級。任務的截止期越早其優先級越高,反之亦然。為此,在本文所述截止期zui早優先算法的改進中.需在μC/OS-II系統中增加表l所列的項目。
KPS-600/20-REL在截止期zui早優先算法中,需要用戶為任務其截止期。在本改進中,將OSTaskCreate()和OSTaskCreateExt()中的數INT8U Prio改為INT8U deadline,并在函數內定義局部變量INT8U Prio來記錄分配給任務的優先級。該算法改進也要在系統中增加OSTaskPrioCreate()函數,函數優先級分配的方法是按任務的截止期分配。該模塊流程如圖l所示。
在對就緒任務優先級進行調整時,該模塊首先在數組中對任務的優先級完成調整并記錄任務優先級的調整情況。在執行此函數后,就緒任務隊列中任務的優先級可能會改變,園此還需要在μC/OS-II系統中添加prio_adjust()函數。該函數應用μC/OS-II系統原有的函數OSTaskChangePrio()來更新就緒任務,代碼如下: 為防止多個任務同時調用OSTaskPrioCreate()函數造成混亂,這段代碼應按臨界資源來處理,需要在調用前關中斷,調用后再開中斷
VEXTA STEPPING MOTOR 5-PHASE PK564AW2-H100
YASKAWA AC SERVO MOTOR SGMAH-04A1A21
HPC1644,PRT3052-0-C PCB BOARD
IXXAT iPC-I 165 CH45-10-20 V2.10 BOARD
SAMSUNG 400W AC SERVO MOTOR CSM-04BB2ANT3 WORKING
YASKAWA AC SERVO MOTOR SGM-01A312B WORKING
YASKAWA SERVOPACK DRIVER MOTOR SGDA-01AS,SGM-01A312 CNC WORKING
MMT MICRO MOTION TECHNOLOGY STAGE D1-618-L5W
PANASONIC AC SERVO MOTOR MSMA021A5N WORKING
PANASONIC AC SERVO MOTOR MSMA022C1T
PANASONIC AC SERVO MOTOR MSM021P1E
SIEMENS SIMATIC,S7-300,CPU315-2 DP,6ES7 315-2AF03-0AB0,6ES7-0KJ00-0AA0
M.T.I.INSTRUMENTS DIVISION AS1021SAI
THK LM SYSTEM SHS-35R NEW
YASKAWA AC SERVO MOTOR SGMAS-02A2A4C WORKING
ONO SOKKI BOARD 44MR092 4M0115A,B7 MR 003
LEICA MIS200, LENS MODULE#1