時間:2008-09-02 09:17:00來源:ronggang
圖2 主從處理器連接圖[/align]
最主要的部分是與處理器有關(guān)部分的代碼,包括一個頭文件OS_CPU.H、一個C代碼文件OS_CPU_C.C 及一個匯編文件OS_CPU_A.ASM,將其移植到MSP430F149處理器上,需要修改這3個與體系結(jié)構(gòu)相關(guān)的文件,代碼量大約是500行。下面分別介紹這3個文件的移植。
OS_CPU.H這部分代碼包括數(shù)據(jù)類型定義、堆棧單位定義、堆棧增長方向定義、關(guān)中斷和開中斷的宏定義以及進行任務(wù)切換的宏定義等。其中,為了在不同的工作模式下調(diào)用系統(tǒng)的底層接口函數(shù)不受訪問權(quán)限的限制,使用軟中斷SWI。堆棧的單位與CPU的寄存器長度一致,結(jié)構(gòu)常量OS_STK_GROWTH置1,表示堆棧從由高地址向低地址增長。
OS_CPU_C.C要求編寫六個簡單的c函數(shù):OSTaskSiklnit();OSTaskCreateHook();OSTaskDelHook();OSTaskSwHook();OSTaskStatHook();OSTimeTickHook()唯一必要的函數(shù)是OSTaskStklnit(),其它五個函數(shù)必須聲明但沒必要包含。對于OSTaskStklnit()而言,OSTaskCreate()和OSTaskCreateExt()通過調(diào)用OSTaskStkInit()來初始化任務(wù)的堆棧結(jié)構(gòu),OSTaskStkInit()返回堆棧指針所指的地址,OSTaskCreate()會獲得該地址并將它保存到任務(wù)控制塊(OS TCB)中。
CPU_ A.ASM要求編寫四個簡單的匯編語言函數(shù):OSStartHighRdy();OSCtxSw();
OSIntCtxSw();OSTickISR()。將所有與處理器相關(guān)的代碼放到OS_CPU_C.C文件中,而不必放在一些分散的匯編語言文件中。
。1)OSStartHighRdy():運行高優(yōu)先級就緒任務(wù)函數(shù)OSStartHighRdy()必須調(diào)用OSTaskSwHook(),因為OSTaskSwHook()可以通過檢查OSRunning而確定是OSStartHighRdy()在調(diào)用它(OSRunning為FALSE)還是正常的任務(wù)切換在調(diào)用它(OSRunning為TRUE)。OSStartHighRdy()還必須在最高優(yōu)先級任務(wù)恢復(fù)之前和調(diào)用OSTaskSwHook()之后設(shè)置OSRunning為TRUE。
(2)OSCtxSw()、OSIntCtxSw():上下文切換函數(shù)任務(wù)級的切換是通過發(fā)軟中斷命令來完成的,其中斷向量地址必須指向OSCtxSw()。中斷級的切換由OSIntExit()通過調(diào)用OSintCtxSw()來執(zhí)行切換功能。
(3)OSTickISR():定時中斷函數(shù)OSTickISR()函數(shù)主要負責(zé)進人中斷時保存處理器寄存器內(nèi)容,完成任務(wù)切換退出時恢復(fù)處理器寄存器內(nèi)容并返回,相當(dāng)于中斷服務(wù)程序的入口。
4 μc/os_Ⅱ與ShortStack的結(jié)合
因為μc/os_Ⅱ嵌入式操作系統(tǒng)代碼和ShortStack應(yīng)用程序代碼的固有的特征,兩者可以有機的結(jié)合在一起。μcos_Ⅱ由系統(tǒng)服務(wù),如郵箱、內(nèi)存管理、消息隊列、信號量管理等,對于這些服務(wù)是在OS_CFG.h定義了的,當(dāng)設(shè)計的系統(tǒng)要使用這些服務(wù)時只需要將定義的值改為1即可。將ShortStack應(yīng)用程序中的常量定義全部放在OS_CFG.h中。這樣可以同時對操作系統(tǒng)各種服務(wù)函數(shù)和ShortStack 的API和APP函數(shù)實現(xiàn)了裁減。
將ShortStack應(yīng)用程序當(dāng)作μcos_Ⅱ操作系統(tǒng)的一個任務(wù)運行。先定義堆棧,以便保存本任務(wù)在任務(wù)切換時單片機的寄存器的當(dāng)前值,當(dāng)μcos_Ⅱ下次調(diào)度到該任務(wù)運行時就可以從堆棧恢復(fù)CPU的值,從而該任務(wù)繼續(xù)運行。程序如下:
OS_STK TaskStartStk[TASK_STK_SIZE]; //任務(wù)Task1的任務(wù)堆棧
OS_STK ShortStackStk[TASK_STK_SIZE]; //ShortStack的任務(wù)堆棧
… //其他任務(wù)堆棧
Void main(void)
。
OSInit();
OSTaskCreat(Task1,(void *)0,& TaskStartStk[TASK_STK_SIZE-1],0);
OSTaskCreat(ShortStack,(void *)0,& ShortStackStk[0],2);
… //創(chuàng)建其他任務(wù)
OSStart();
return 0;
}
void ShortStack(void)
。
lonInit();
for(; ; )
{
lonEventHandler();//周期性調(diào)用檢查是否有任何LonWorks事件要處理
。
}
由于μc/os_Ⅱ操作系統(tǒng)沒有任何的硬件驅(qū)動,所以用戶自己將ShortStack串口驅(qū)動、輸入輸出隊列操作部分擴展為該操作系統(tǒng)的一部分。此外,系統(tǒng)可以添加其他特定的任務(wù),通過系統(tǒng)調(diào)度,實現(xiàn)節(jié)點的合理利用,增加節(jié)點的實用性。如圖3所示。
最后,將帶有TP/FT-10F控制模塊的MSP430F149芯片接入Gizmo4開發(fā)板,通過Nodebuilder開發(fā)工具編譯,進入調(diào)試界面,利用LonMaker連接為兩節(jié)點網(wǎng)絡(luò),測試兩節(jié)點是否通訊。
[align=center]
圖3 軟件結(jié)構(gòu)圖[/align]
5 結(jié)束語
MSP430F149是16bit的RISC微處理器,該處理器特別適用于手持式設(shè)備以及高性價比、低功耗的網(wǎng)絡(luò)設(shè)備,它集成了中斷控制、功率控制、存儲控制、UART、PWM、ADC等豐富的資源。由于工業(yè)、家庭網(wǎng)絡(luò)化的需求,以及LonWorks總線便捷的入網(wǎng)方式,可以使該多用途智能節(jié)點分散自制,每個節(jié)點一方面分散地解決其特定的任務(wù),另一方面通過點對點、點對多點的通訊,解決節(jié)點之間的信息傳輸,實現(xiàn)分散基礎(chǔ)上的融合。上位機要完成對LON 網(wǎng)絡(luò)的監(jiān)控與管理功能,二者之間必須能進行動態(tài)數(shù)據(jù)交換。LON 總線技術(shù)還提供了DDE Server 軟件。DDE Server 能夠?qū)崿F(xiàn)LON網(wǎng)絡(luò)和任何具有DDE 功能的Windows 應(yīng)用程序間交換網(wǎng)絡(luò)變量和信息。系統(tǒng)提供給用戶一個十分友好的人機界面,用戶可通過上位機設(shè)置各節(jié)點實時運行情況以及歷史運行記錄、打印等。
本文作者創(chuàng)新點:運用ShortStack技術(shù),設(shè)計了以MSP149為主處理器,Neuron芯片為微處理器的通用節(jié)點,與Lonworks總線實現(xiàn)通訊連接,并可擴展多種用途,具有很好的實用和經(jīng)濟價值。
參考文獻
[1] David E.Simon著,陳向群等譯,嵌入式系統(tǒng)軟件教程[M].北京:機械工業(yè)出版社,2005
[2] ShortStack User’s Guide,Echelon, 2002
[3] Jean J.Labrosse著,邵貝貝譯,μC/OS_II源碼公開的實時嵌入式操作系統(tǒng)[M].北京:中國電力出版社,2001
[4] 胡大可 MSP430系列FLASH型超低功耗16位單片機[M].北京:北京航空航天大學(xué)出版社 ,2001
[5] 賈慧瀟,王振臣.基于LonWorks 的高性能溫濕度測控系統(tǒng)[J].微計算機信息,2006,8-1:30-34。
標簽:
傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動網(wǎng)(connectcrack.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責(zé)任。
相關(guān)資訊
產(chǎn)品新聞
更多>2025-09-23
2025-09-23
2025-09-08
華為昇騰Atlas800iA2 910B服務(wù)器Deepsee...
2025-09-04
TaiShan(泰山)200 2280系列服務(wù)器 鯤...
2025-09-03
2025-08-06