3.2.2μC/OS-Ⅱ在140DDI84100中的移植實(shí)現(xiàn)
μC/OS-Ⅱ的移植條件是:該處理器有堆棧,有CPU內(nèi)部寄存器入棧、出棧指令;使用的C編譯器支持內(nèi)嵌匯編(inlineasseInbly)或者該C語言可擴(kuò)展,可連接匯編模塊,使得關(guān)中斷、開中斷能在C語言程序中實(shí)現(xiàn)。
140DDI84100符合其移植條件。μC/OS-Ⅱ的移植集中在3個(gè)文件,頭文件os_cpu.h,匯編文件os_cup_a.s,C代碼文件os_cpu_c.c。其中os_cpu.h主要包含編譯器相關(guān)的數(shù)據(jù)類型的定義、堆棧類型的定義以及幾個(gè)宏定義和函數(shù)說明。而os_cpu_c.c中則包含與移植有關(guān)的c函數(shù),包括堆棧的初始化函數(shù)和一些鉤子(hook)函數(shù)的實(shí)現(xiàn)。os_cpu-a.s中則包含與移植有關(guān)的匯編語言函數(shù),包括開/關(guān)中斷、上下文切換、時(shí)鐘中斷服務(wù)程序等。移植中關(guān)鍵的功能模塊實(shí)現(xiàn)如以下所述。
移植工作包括以下幾個(gè)內(nèi)容:①用繃efine設(shè)置一個(gè)常量的值(OS-CPU.H);②聲明數(shù)據(jù)類型(OS-CPU.H);③用#define聲明三個(gè)宏(OS.CPU.H);④用c語言編寫六個(gè)簡單的函數(shù)(OS—CPIJ-C.C);⑤編寫四個(gè)匯編語言函數(shù)(OS-CPU_ASM)。
3.3140DDI84100軟件結(jié)構(gòu)設(shè)計(jì)
在軟件設(shè)計(jì)時(shí),盡量使軟件和硬件脫離,改變傳統(tǒng)的嵌入式軟件過多依賴硬件的模式。針對保護(hù)裝置的實(shí)際情況,把整個(gè)系統(tǒng)分成保護(hù)、A/D采樣、自檢、顯示、通信等幾個(gè)任務(wù),劃分原則是在考慮系統(tǒng)實(shí)時(shí)性和軟件效率的前提下盡量減少任務(wù)間的耦合,使功能清晰。任務(wù)確定以后,賦予每個(gè)任務(wù)*的ID號,并按照實(shí)時(shí)性要求對各個(gè)任務(wù)i其優(yōu)先級,本設(shè)計(jì)中把保護(hù)任務(wù)設(shè)置成較高優(yōu)先級。進(jìn)入運(yùn)行狀態(tài)后,在主任務(wù)中啟動其他任務(wù),例如顯示、A/D采樣、通信等。在這些任務(wù)中又可啟動另外的任務(wù)。下面給出了主程序的任務(wù)創(chuàng)建和資源分配的部分代碼。
設(shè)計(jì)中的任務(wù)調(diào)度機(jī)制采用優(yōu)先級調(diào)度模式:140DDI84100CPU被分配給zui高優(yōu)先級任務(wù),如果幾個(gè)任務(wù)優(yōu)先級相同,CPU就被分配給入就緒隊(duì)列的任務(wù)。如果一個(gè)任務(wù)在執(zhí)行過程中,另外一個(gè)優(yōu)先級更高的任務(wù)進(jìn)入就緒狀態(tài),則原來正在進(jìn)行的任務(wù)進(jìn)入就緒狀態(tài),新任務(wù)進(jìn)入運(yùn)行狀態(tài)。
μC/OS-Ⅱzui多可支持56個(gè)任務(wù)。實(shí)現(xiàn)各種功能的保護(hù)程序按照功能劃分成了一個(gè)個(gè)的任務(wù),每一種任務(wù)實(shí)現(xiàn)一種功能,任務(wù)之間相互獨(dú)立,只通過實(shí)時(shí)操作系統(tǒng)R1DS(Real—TimeOperatingSystem)機(jī)制交換信息。這從根本上保證了軟件的可靠性和實(shí)時(shí)性。
4結(jié)束語
隨著140DDI84100處理器技術(shù)的不斷發(fā)展和應(yīng)用的不斷推廣,ARM處理器在電力系統(tǒng)中必將得到更廣泛的應(yīng)用。而嵌入式實(shí)時(shí)操作系統(tǒng)RTOS在微機(jī)保護(hù)的應(yīng)用,為實(shí)現(xiàn)復(fù)雜的保護(hù)功能提供了可能。文中討論的基于嵌入式AT9lRM9200微處理器的微機(jī)保護(hù)裝置已完成現(xiàn)場調(diào)試,初步試運(yùn)行效果表明,該設(shè)計(jì)是成功的,受到用戶方的認(rèn)可,有望得到大力推廣。
A06B-0501-B755 FANUC SERVO*1YR.WRTY*
TDM1.2-50-300-W?1-220 INDRAMAT DRIVE
A06B-0859-B200#?3000 FANUC AC SPINDLE MOTOR
A06B-0257-B200#?0100 FANUC
TMM5100 ESIS PINSTAMP MARKER
A06B-0147-B188 FANUC
A06B-0147-B177 FANUC
A06B-0147-B184#?F000 FANUC
A06B-0147-B677 FANUC AC SERVO MOTOR
A06B-0147-B684 FANUC AC SERVO MOTOR
A06B-0147-B688 FANUC AC SERVO MOTOR
60 CONTROL GAGING
HVR02.2-W025N INDRAMAT DRIVE *1YR. WRTY*
TDM2.1-30-300-W?0-50101 INDRAMAT CONTROLLER **1YR. WRTY
DDC01.2-N200A-D?A02-01-FW INDRAMAT CONTROLLER *1YRWRTY*
TDM2.1-30-300-W?1-115 INDRAMAT
TDM2.1-30-300-W?O INDRAMAT
DLOG DIGITAL KEYPAD DLOG
TRANS-01M1.0000 INDRAMAT CONTROL MODULE
A06B-0153-B184#?7000 FANUC
A06B-0502-B756 FANUC * 1 YR WARRANTY*