廖盛澨++林嘉義++林厚健
摘要:該文主要介紹了嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)μC/OS-II,分析了其工作原理,講述了將μC/OS-II 移植 DSP 的微處理器的開(kāi)發(fā)板中的過(guò)程,以及在此基礎(chǔ)上實(shí)現(xiàn)了μC/OS-II
在伺服電機(jī)控制系統(tǒng)中的應(yīng)用。
關(guān)鍵詞:μC/OS-II;DSP;移植;伺服控制
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)07-0247-02
1 概述
制造業(yè)日益發(fā)展的今天,電機(jī)控制技術(shù)在工業(yè)控制方面顯得尤為重要,對(duì)伺服控制系統(tǒng)的改進(jìn)對(duì)提高生產(chǎn)率有著極大的幫助。然而,工業(yè)控制特別是伺服控制系統(tǒng)以及其他運(yùn)動(dòng)控 制系統(tǒng)中,對(duì)系統(tǒng)的響應(yīng)時(shí)間有嚴(yán)格的要求,這些系統(tǒng)也稱實(shí)時(shí)系統(tǒng)。通常情況下,伺服系統(tǒng) 采用前后臺(tái)系統(tǒng),應(yīng)用程序是一個(gè)大的循環(huán),由于處理器是單核的,所以事件都是順序執(zhí)行 的。這種方法有致命的缺點(diǎn)就是系統(tǒng)的穩(wěn)定性和實(shí)時(shí)性很差,編程難度大;又因?yàn)樗欧到y(tǒng) 對(duì)系統(tǒng)響應(yīng)時(shí)間非常嚴(yán)格,它要同時(shí)完成采樣、控制、計(jì)算、通訊等任務(wù), 如果有一個(gè)實(shí)時(shí) 多任務(wù)操作系統(tǒng)來(lái)對(duì)其進(jìn)行管理和調(diào)度,對(duì)于提高伺服系統(tǒng)的穩(wěn)定性的實(shí)時(shí)性是非常好的。 為此,本文提出基于μC/OS-II 和 DSP 的伺服電機(jī)控制系統(tǒng),以嵌入式實(shí)時(shí)操作系統(tǒng)做系統(tǒng) 的調(diào)度,應(yīng)該可以滿足伺服控制系統(tǒng)對(duì)系統(tǒng)的實(shí)時(shí)性的要求,同時(shí)采用高速處理器 DSP 作為 整個(gè)系統(tǒng)的 CPU,可以提高運(yùn)算效率,大幅減少響應(yīng)時(shí)間。為此我們需要做倆件事,一是將μC/OS-II 系統(tǒng)移植到 DSP 控制板上,二是實(shí)現(xiàn)多任務(wù)的伺服電機(jī)的控制。μC /OS-II 一個(gè)可裁剪、可移植、完整的、可固化的搶占式實(shí)時(shí)多任務(wù)內(nèi)核。
μC/OS-II絕大部分的代碼是用 ANSII 的 C 語(yǔ)言編寫(xiě)的,包含一小部分匯編代碼,使之可供不同架構(gòu)的 微處理器使用。除此之外,μC/OS-II 還有占用空間小、實(shí)時(shí)性優(yōu)良、執(zhí)行效率高和可擴(kuò)展 性等優(yōu)點(diǎn)。μC /OS-II 包含了實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)間管理、任務(wù)間通信同步(信號(hào)量, 郵箱,消息 隊(duì)列)和內(nèi)存管理等功能,且最小可將其可裁剪到 2KB。
TMS320F2812 是 TI 推出的一款專門針對(duì)電機(jī)控制的 DSP 芯片,是目前國(guó)際市場(chǎng)上最先 進(jìn)、功能最強(qiáng)大的 32 位定點(diǎn) DSP 芯片之一。它既具有嵌入式控制功能和強(qiáng)大的事件管理能 力,又具有強(qiáng)大的數(shù)字信號(hào)處理能力。TMS320F2812 最高運(yùn)行頻率為 150Mhz,采用流水線進(jìn) 程,但是單純的 DSP 控制很難再滿足對(duì)電機(jī)控制的各種需求,因此,將 μC/OS-II 一直到DSP 中,可以滿足實(shí)時(shí)控制的需要。移植要對(duì)源代碼進(jìn)行修改,對(duì)有關(guān) CPU 底層的文件進(jìn)行 重新編寫(xiě)。
2 μC/OS-II 的內(nèi)核結(jié)構(gòu)
μC/OS-II 主要包括:與處理器相關(guān)文件、與應(yīng)用相關(guān)文件和實(shí)時(shí)操作系統(tǒng)內(nèi)核文件等。由于實(shí)時(shí)操作系統(tǒng)內(nèi)核文件在移植中不需要改動(dòng),所以,以下主要講 解處理器相關(guān)文件和與應(yīng)用相關(guān)的文件:
1) 與處理器相關(guān)文件
移植主要是要重新編寫(xiě)該部分。它是與硬件相關(guān)的代碼,處理器不同,代碼也不盡相同。 這部分在 μC/OS-II 源代碼中有三個(gè)文件:OS_CPU_A. ASM、OS_ CPU_C. C 和 OS_ CPU. H文件。
OS_CPU_A. ASM:該文件需要根據(jù)處理器的寄存器進(jìn)行修改,必須用貼近底層的匯編語(yǔ)言來(lái) 編寫(xiě)。主要包括四個(gè)函數(shù):OSTickISR()、OSStartHigh Rdy ()、OSIntCtx Sw()和 OSCtxSw ()。
OS_ CPU_C. C: 該文件包含 6 個(gè)函數(shù),但最重要的函數(shù)是 OSTaskStkInit(),其他 5 個(gè)函數(shù) 是對(duì)內(nèi)核擴(kuò)展時(shí)用的。OSTaskStkInit()是任務(wù)對(duì)戰(zhàn)初始化函數(shù),對(duì)用戶任務(wù)的堆棧進(jìn)行初 始化,使建立好的進(jìn)入就緒態(tài)任務(wù)的堆棧和系統(tǒng)發(fā)生中斷并且和環(huán)境變量保存完畢時(shí)的堆棧 結(jié)構(gòu)一致。
OS_ CPU. H: 定義了預(yù)處理器的數(shù)據(jù)類型定義,還包括了堆棧增長(zhǎng)方向定義、堆棧單位定義、
開(kāi)關(guān)中斷的宏定義以及進(jìn)行上下文切換的宏定義等。 其中,堆棧的單位與 CPU 的寄存器長(zhǎng)度一致 ,堆棧一般是由高地址逐漸向低地址增長(zhǎng)的。
2) 與應(yīng)用相關(guān)文件 該部分包含兩個(gè)文件:OS_CFG.H和INCLUDES.H。OS_CFG.H主要用來(lái)配置內(nèi)核,
用戶可以根據(jù)自己的需要對(duì)內(nèi)和進(jìn)行裁剪,用來(lái)設(shè)置系統(tǒng)的基本情況。例如,系統(tǒng)的最大任務(wù)數(shù)、是否開(kāi)啟任務(wù)掛起功能等。代碼的裁剪可通過(guò)修改文件OS_CFG.H的相應(yīng)的宏定義#define OS_???_EN的值來(lái)設(shè)置,當(dāng)為1時(shí),該服務(wù)就會(huì)開(kāi)啟。INCLUDES.H包含了用戶和內(nèi)核的頭文件。
3 μC/OS-II 在 TMS320F2812 中的移植
1) μC/OS-II 在 TMS320F2812 上移植的可能性
要使 μC/OS-II 在目標(biāo)處理器上正常運(yùn)行,該處理器必須滿足以下需要:
處理器支持中斷,能產(chǎn)生定時(shí)中斷;
用 C 語(yǔ)言可以開(kāi)關(guān)中斷;
處理器的 C 編譯器能產(chǎn)生可重入代碼;
處理器擁有將堆棧指針和其他 CPU 寄存器的內(nèi)容讀出的指令
TMS320F2812 芯片完全滿足以上條件,為 μC/OS-II 移植到該平臺(tái)提供了可能,并且 TI 公
司擁有自己的 DSP 開(kāi)發(fā)軟件—Code Composer,它包含編譯器、連接器及斷位器,集調(diào)試、 編譯和編輯于一體,完全能夠勝任將 μC/OS-II 移植到 TMS320F2812 處理器上去。
2) μC/OS-II 在 TMS320F2812 上的移植
在函數(shù) OSTaskStkInit()中,由于堆棧的特點(diǎn)是 DSP2812 的堆棧由高向低增長(zhǎng),最高 處是任務(wù)的入口參數(shù),接下來(lái)是程序計(jì)數(shù)(PC)指針和程序狀態(tài)字。在任務(wù)切換時(shí)需要對(duì)臨時(shí) 寄存器進(jìn)行保護(hù)。在知道了堆棧的構(gòu)造后,需要編寫(xiě)任務(wù)切換函數(shù)(OS_TASK_SW 和 OSIntxSw
函數(shù))和啟動(dòng)函數(shù)(Osstar 函數(shù)) 。主要是這兩個(gè)函數(shù)需要對(duì)程序的堆棧進(jìn)行管理,
OS_TASK_SW 函數(shù)編寫(xiě)時(shí)需要主要的是在任務(wù)切換前需要保護(hù)現(xiàn)場(chǎng),而 OSIntxSw()不需要 保護(hù)現(xiàn)場(chǎng),因?yàn)橹袛喑绦蚴褂?C 語(yǔ)言編寫(xiě)的。
主要移植內(nèi)容:
修改 OS_CPU_C.C 中 6 個(gè)操作系統(tǒng)相關(guān)的函數(shù)。這些函數(shù)有 OSTask-StkInit 、 OSTaskSta-tHook、OSTaskDelHook、OSTaskSwHook、OSTaskCreateHook 和 OSTimeTickHook。
重點(diǎn)移植的是第一個(gè)函數(shù)。
修改 INCLUDES.H 文件,不同處理器、不同編譯器、不同庫(kù)函數(shù)都需要修改 INCLUDES.H 文件, 需要注意的是頭文件之間有包含關(guān)系和條件編譯的關(guān)系,需要安排好頭文件之間的順序。
3) 測(cè)試移植代碼
為目標(biāo)處理器完成嵌入式系統(tǒng) μC/OS-II 的移植之后,接下來(lái)的工作就是要測(cè)試
μC/OS-II 是否能正常工作,因?yàn)樯婕按a的跟蹤和調(diào)試,這可能是最為繁瑣的一步???以使用多種測(cè)試技術(shù)測(cè)試移植的代碼,這里主要通過(guò) 4 個(gè)步驟測(cè)試代碼:
確保 C 編譯器,連接器和匯編編譯器正常工作; 調(diào)試及驗(yàn)證 OSStartHighRdy 函數(shù)和 OSTaskStInit 函數(shù); 調(diào)試及驗(yàn)證 OSCtxSw 函數(shù);
調(diào)試及驗(yàn)證 OSTickISR 和 OSIntCtxSw 函數(shù);
4 基于 μC/OS-II 和 TMS320F2812 在伺服控制系統(tǒng)中的應(yīng)用
在現(xiàn)有的 TMS320F2812 電機(jī)控制板上,已經(jīng)將 μC/OS-II 成功運(yùn)行,接下來(lái)將該嵌入式 系統(tǒng)運(yùn)用在伺服控制系統(tǒng)中,實(shí)現(xiàn)對(duì)伺服控制系統(tǒng)實(shí)時(shí)性和穩(wěn)定性的提升。
在該多任務(wù)系統(tǒng)中,建立五個(gè)任務(wù),中斷擁有最高的優(yōu)先級(jí),保證了中斷的實(shí)時(shí)性,中斷恢復(fù)在系統(tǒng)參數(shù)設(shè)置后,A/D 轉(zhuǎn)換由中斷喚醒。軟件方案大概思路如下:在主函數(shù)中需要 建立起始任務(wù) StartTask(),再由起始任務(wù)建立一系列的郵箱和信號(hào)量:?jiǎn)拘焰I盤任務(wù)、喚 醒液晶顯示任務(wù)、喚醒 AD 任務(wù)、喚醒 regulator 任務(wù)和喚醒時(shí)鐘中斷任務(wù),接下來(lái),用
OSTaskCreate()函數(shù)建立 5 個(gè)對(duì)應(yīng)的任務(wù),接下來(lái)運(yùn)行系統(tǒng),查看伺服系統(tǒng)是否工作正常。
5 總結(jié)
μC/OS-II 作為可靠的、精簡(jiǎn)的多任務(wù)實(shí)時(shí)操作系統(tǒng),在廣泛的嵌入式領(lǐng)域具有廣闊的 應(yīng)用前景。本文首先將 μC/OS-II 移植到 DSP 電機(jī)控制板中,驗(yàn)證了其移植的正確性,再將 該控制板用在伺服控制系統(tǒng)中,以多任務(wù)的模式實(shí)現(xiàn)了電壓環(huán)調(diào)節(jié)、A/D 轉(zhuǎn)換和顯示任務(wù)等。 證明了 μC/OS-II 用在伺服系統(tǒng)中,相比傳統(tǒng)的裸板具有更強(qiáng)的實(shí)時(shí)性和穩(wěn)定性,并為實(shí)現(xiàn) 更復(fù)雜的智能算法提供了更方便的平臺(tái)。
參考文獻(xiàn):
[1] 李逃昌.基于 DSP 的壓鑄機(jī)實(shí)時(shí)壓射控制器研究[D].阜新:遼寧工程技術(shù)大學(xué),2008.
[2] 陳濤,彭俠夫,葉瑰昀.基于μC/OS-Ⅱ的永磁同步電動(dòng)機(jī)伺服系統(tǒng)軟件設(shè)計(jì)[J].微電 機(jī),2007(5):52-54.
[3] 冉明,邢漢承.基于μC/OS-II 的嵌入式系統(tǒng)的設(shè)計(jì)[J].微機(jī)發(fā)展,2005(1):91-93.
[4] 何湘智,吳暉,周偉. μ C/OS- Ⅱ 在 TMS320F2812 上的移植研究 [J]. 現(xiàn)代電子技 術(shù),2010(4):86-88.
[5] 張?zhí)焖?,李正熙,孫德輝.基于嵌入式操作系統(tǒng) Uc/os—ii 和 DSP 的伺服電機(jī)多任務(wù)控制[C]//中國(guó)金屬學(xué)會(huì).冶金自動(dòng)化信息網(wǎng)年會(huì)論文集.中國(guó)金屬學(xué)會(huì),2004:3.