摘 要:本文介紹了一種基于us/OS-II嵌入式操作系統和TMS320LF2407A DSP的低壓斷路器新型智能控制器的設計,對us/OS-II嵌入式操作系統、嵌入式系統的硬件設計和軟件開發進行了介紹,并對us/OS-II在TMS320LF2407A芯片上的移植進行了重點介紹。樣機現場試驗表明,該控制器可靠性高,試驗結果達到預期的設計要求,具有廣闊的應用前景。
0. 引言
斷路器的智能操作是斷路器智能化發展過程中的一個全新的概念。智能控制器是實現智能操作的核心部件[1],其基本任務是通過對電網參數的采集和處理,給出相應的控制信息。此外,智能控制器通過現場總線可以和計算機連接,進行遠程監控管理。智能控制器的核心部分是軟件設計。目前,我國的大多數控制器的軟件設計都是采用主循環程序和中斷服務程序相配合的設計方法。而近年來嵌入式系統的使用越來越成熟,其中us/OS-II嵌入式操作系統由于源代碼公開化,內核體積小,可移植性好等原因,受到廣泛的應用。本文采用了TI公司的DSP芯片TMS320LF2407A作為嵌入式系統硬件,將us/OS-II嵌入式操作系統移植到DSP芯片中,提高了系統的運行效率和可靠性。
1. us/OS-II嵌入式操作系統
嵌入式系統是執行專用功能并被內部計算機控制的設備或系統,操作系統以及應用軟件集成于計算機硬件系統之中,即系統的應用軟件和系統的硬件一體化,嵌入式系統具有軟件代碼少,高度自動化,響應速度快等特點,特別是適合于要求實時和多任務處理的情況。
us/OS-II嵌入式操作系統是一個完整的、源代碼公開的、可移植的、固化的、可裁剪的占先式實時多任務內核,它是一種不可剝奪型內核,所以在任務調度是必須先設定任務的優先級。us/OS-II包括以下幾個部分:內核管理、任務管理、時間管理、事件控制塊、信號量管理、郵箱管理等。
us/OS-II中創建的任務有5種狀態[2],分別是:睡眠態、等待態、就緒態、運行態、中斷服務態。us/OS-II是占先式內核,每個任務都要設置優先級,優先級最高的任務可以先進入CPU運行,其它任務只能先在就緒狀態中等待。us/OS-II最多可以創建多達64個任務(實際可以使用的是56個,因為前4個和后4個任務優先級被保留做系統升級用)。
2. 嵌入式系統的硬件設計
2.1 智能控制器總體結構及工作原理
智能控制器硬件系統的總體結構如圖1所示。該控制器的主要任務是采集電網上的電流和電壓信號,經過信號處理電路的調理后,使信號變換成DSP的輸入標準電壓0到3.3V,DSP控制器通過對采集來的信號進行分析,正確的發出動作指令,并通過CAN總線向監控計算機發送相關數據,實現遠程監控管理。系統構成主要包括DSP及其外圍電路所構成的最小系統、A/D信號采集與處理電路,液晶顯示電路,電源,脫扣電路等部分。DSP的外圍電路包括晶振、濾波回路和片外RAM連接選擇存儲空間時使用的一些門電路。
2.2 TMS320LF2407A芯片及其開發環境CCS2.2簡介
TMS320LF2407A是專為基于控制的應用而設計的,它將高性能的DSP內核和豐富的微控制器的外設集成于單片中,從而成為傳統的微控制器的理想替代。TMS320LF2407A DSP控制器的外設包括[3]:①事件管理器②CAN接口③A/D通道模數轉換④SPI串行外設接口⑤SCI串行通信接口⑥通用雙向I/O引腳。CCS2.2是CCS系列中的最新版本,有很多既方便又強大的功能。主要包括:①支持同時載入多個工程文件②增加了單步調試命令③編譯器有所加強,對語法的檢查更加嚴格④通過建立庫工程,支持編譯函數文件成為庫文件
3. 嵌入式系統的軟件設計
3.1 us/OS-II在2407上的移植
us/OS-II在2407上的實現移植是嵌入式系統軟件設計的關鍵所在,主要工作是對移植相關的OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C三個文件的編寫以及對OS_CFG.H配置的正確設定。
在對OS_CFG.H配置中根據嵌入式實時系統的實際需要,對最低優先級OS_LOWEST_PRIO、最多任務控制塊OS_MAX_EVENTS、最多任務數OS_MAX_TASKS進行設置,對需要使用的功能進行選擇置位。
對OS_CPU.H文件的編寫主要包括對以下4個宏進行設置:
① OS_ENTER_CRITICAL()
② OS_EXIT_ CRITICAL()
③ OS_STK_GROWTH
④ OS_TASK_SW()
其中,OS_ENTER_CRITICAL()和OS_EXIT_ CRITICAL()是關于關中斷和開中斷的設置,由于在TMS320LF2407A中C編譯器可以嵌入匯編語言,所以本文設置:
#define OS_ENTER_CRITICAL() asm(" SETC INTM") //關中斷
#define OS_EXIT_CRITICAL() asm(" CLRC INTM") //開中斷
OS_STK_GROWTH是關于堆棧的使用方式,由于TMS320LF2407A中堆棧是從低地址向高地址遞增的,所以本文設置:
#define OS_STK_GROWTH 0
OS_TASK_SW()是在任務切換中使用的,任務切換其實就是將原來任務的相關寄存器值入棧保存,以便以后這個任務被再次調用時可以恢復原先的相關寄存器值。本文設置OS_TASK_SW()作為中斷調用軟中斷指令OSCtxSw。
對OS_CPU_C.C文件的編寫包括編寫以下10個C語言函數:
① OSTaskStkInit()② OSTaskCreatHook()③ OSTaskDelHook()④ OSTaskSwHook()
⑤ OSTaskIdleHook()⑥ OSTaskStatHook()⑦ OSTimeTickHook()⑧ OSIintHookBegin()
⑨ OSInitHookEnd()⑩ OSTCBInitHook()
在本文的實時