專利名稱:一種psos系統(tǒng)下觀察打印消息的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式操作系統(tǒng),具體地涉及一種PSOS操作系統(tǒng)下的調(diào)試方法。
背景技術(shù):
在編寫和調(diào)試單板軟件時,一種很重要的手段是通過計算機(jī)串行接口觀察打印信息。單板軟件往往構(gòu)架在嵌入式操作系統(tǒng)例如PSOS操作系統(tǒng)之上,因此在PSOS操作系統(tǒng)下能夠完整及時觀察到打印信息,而不影響系統(tǒng)的正常運行就顯得十分重要。
在現(xiàn)有技術(shù)中,PSOS系統(tǒng)下觀察打印消息需要頻繁地調(diào)用PSOS操作系統(tǒng)提供的Printf函數(shù),而Printf函數(shù)本身是阻塞式的,因此某一個任務(wù)如果調(diào)用Printf函數(shù),在函數(shù)返回之前,該任務(wù)被阻塞,消息得不到響應(yīng)。對于實時性要求很高的系統(tǒng)而言,這樣做會明顯地降低系統(tǒng)的響應(yīng)速度,更重要的是,如果一個低優(yōu)先級的任務(wù)因為調(diào)用Printf函數(shù)被阻塞,而此時另一個高優(yōu)先級的任務(wù)在被調(diào)度運行的過程中也調(diào)用了Printf函數(shù),系統(tǒng)將會出現(xiàn)不可預(yù)知的錯誤,如果各個任務(wù)都各自頻繁地調(diào)用Printf函數(shù)很容易就會造成系統(tǒng)死機(jī)。
發(fā)明內(nèi)容
本發(fā)明就是為了克服了現(xiàn)有技術(shù)中的任務(wù)頻繁打印會影響系統(tǒng)實時性和穩(wěn)定性以及不可控的缺點,提出一種在PSOS操作系統(tǒng)下安全可靠并且可控的觀察打印消息的方法。
一種PSOS系統(tǒng)下觀察打印消息的方法,包括下列步驟(1)系統(tǒng)初始化,創(chuàng)建一個打印守護(hù)任務(wù)和一個控制命令守護(hù)任務(wù),以及一個打印函數(shù),所述打印函數(shù)完成將打印消息拷貝到打印消息隊列后向打印守護(hù)任務(wù)發(fā)送一個打印事件的功能;(2)打印守護(hù)任務(wù)接收到打印事件被調(diào)度運行,根據(jù)控制命令守護(hù)任務(wù)提供的打印參數(shù)配置,將打印消息隊列中的消息向打印控制臺打印。
上述步驟(2)具體包括下列分步驟(21)打印消息調(diào)用打印函數(shù);(22)打印函數(shù)拷貝打印消息到打印消息隊列中;(23)打印函數(shù)向打印守護(hù)任務(wù)發(fā)送一個打印事件;
(24)打印守護(hù)任務(wù)接收到打印事件被調(diào)度運行,如果調(diào)度不成功,則重復(fù)分步驟(23);(25)如果調(diào)度成功,則打印守護(hù)任務(wù)根據(jù)控制命令守護(hù)任務(wù)提供的打印參數(shù)向打印控制臺打印。
上述分步驟(25)中打印守護(hù)任務(wù)可以通過串口或網(wǎng)口向打印控制臺打印;分步驟(22)中打印消息隊列的長度是可以配置的。
控制命令守護(hù)任務(wù)可以接受來自打印控制臺的控制命令,對打印函數(shù)的打印參數(shù)進(jìn)行配置和修改;打印參數(shù)的內(nèi)容包括打印使能、打印方向和打印的消息類型。
在本發(fā)明提出的方法中,打印守護(hù)任務(wù)的優(yōu)先級是系統(tǒng)中除IDLE任務(wù)外優(yōu)先級最低的,只有當(dāng)其它任務(wù)都沒有運行時,打印守護(hù)任務(wù)才可能得到調(diào)度,而由于PSOS操作系統(tǒng)是優(yōu)先級搶占式的調(diào)度系統(tǒng),一旦其它任務(wù)有消息需要處理,馬上進(jìn)行調(diào)度切換。這樣一來,打印消息對系統(tǒng)正常運行的影響減小到最低。在本發(fā)明提出的方法中只有打印守護(hù)任務(wù)才能真正地對消息進(jìn)行打印,因此避免了當(dāng)高低優(yōu)先級的任務(wù)都調(diào)用Printf函數(shù)時系統(tǒng)出現(xiàn)的不可預(yù)知的錯誤。正是由于打印守護(hù)任務(wù)對打印消息的統(tǒng)一處理,因此打印消息成為可控的行為,用戶可以通過后臺打印消息觀察窗口選擇打印或不打印,還可以選擇打印輸出方向,例如網(wǎng)口或串口,甚至可以選擇觀察消息的類型。采用本發(fā)明提出的觀察打印消息的方法,與現(xiàn)有技術(shù)相比,提高了PSOS系統(tǒng)運行的穩(wěn)定性,并且使觀察打印消息更加安全、可靠和可控。
圖1是本發(fā)明提出的方法的原理示意圖。
圖2是本發(fā)明提出的方法的流程圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)說明。
圖1是本發(fā)明提出的方法的原理示意圖。如圖1所示,本發(fā)明提出的方法中涉及的對象包括打印消息;打印函數(shù);打印守護(hù)任務(wù);打印控制臺和控制命令守護(hù)任務(wù)。打印守護(hù)任務(wù)、控制命令守護(hù)任務(wù)和打印函數(shù)都是在系統(tǒng)初始化時創(chuàng)建的,其中打印守護(hù)務(wù)和控制命令守護(hù)任務(wù)一旦創(chuàng)建就處于阻塞式的接收事件狀態(tài);打印函數(shù)的功能是將打印消息拷貝到打印消息隊列后向打印守護(hù)任務(wù)發(fā)送一個打印事件。圖1中箭頭指向表示消息或命令的發(fā)送方向,如圖1所示,各種打印消息分別調(diào)用本發(fā)明所提出的打印函數(shù);打印函數(shù)向打印守護(hù)任務(wù)發(fā)送打印事件,打印守護(hù)任務(wù)根據(jù)打印參數(shù)通過網(wǎng)口或串口向打印控制臺打印消息;同時打印控制臺還可向控制命令守護(hù)任務(wù)發(fā)送控制命令,修改打印參數(shù);控制命令守護(hù)任務(wù)可以根據(jù)接收到的打印控制臺的命令修改打印函數(shù)的打印配置。
圖2是本發(fā)明提出的方法的流程圖。如圖2所示,本發(fā)明提出的觀察打印消息的方法包括下列步驟1、系統(tǒng)初始化,創(chuàng)建一個打印守護(hù)任務(wù)、一個控制命令守護(hù)任務(wù)和一個打印函數(shù)。打印守護(hù)任務(wù)是系統(tǒng)中除IDLE(嵌入式操作系統(tǒng)中統(tǒng)計CPU占有率的任務(wù))任務(wù)外優(yōu)先級最低的任務(wù);控制命令守護(hù)任務(wù)專門負(fù)責(zé)接收打印控制臺發(fā)送的TCP/IP包控制命令;這兩個任務(wù)一旦創(chuàng)建就處于阻塞式的接收事件狀態(tài)。打印函數(shù)完成將打印消息拷貝到打印消息隊列后向打印守護(hù)任務(wù)發(fā)送一個打印事件的功能,它由打印消息調(diào)用。2、打印消息調(diào)用打印函數(shù)。所有打印消息均調(diào)用本發(fā)明提出的打印函數(shù)。3、打印函數(shù)拷貝打印消息到打印消息隊列中,在這里,打印消息隊列的長度是可以根據(jù)需要進(jìn)行配置的。4、打印函數(shù)向打印守護(hù)任務(wù)發(fā)送一個打印事件。在這里,本發(fā)明提出的技術(shù)方案選擇了發(fā)送事件而不是發(fā)送消息,其原因是前面已經(jīng)提到的打印守護(hù)任務(wù)是系統(tǒng)中優(yōu)先級除IDLE(嵌入式操作系統(tǒng)中統(tǒng)計CPU占有率的任務(wù))任務(wù)外最低的任務(wù),打印函數(shù)如果向打印守護(hù)任務(wù)發(fā)送打印指示消息,打印守護(hù)任務(wù)并不一定能馬上得到調(diào)度,這樣一來打印指示消息勢必會在打印守護(hù)任務(wù)的消息隊列中堆積;另一方面,多條打印指示消息會引起打印守護(hù)任務(wù)被多次調(diào)度,實際上打印守護(hù)任務(wù)在一次調(diào)度中就可以處理完當(dāng)前打印消息隊列中的所有打印消息,多次調(diào)度是完全不必要的。5、打印守護(hù)任務(wù)接收到打印事件被調(diào)度運行,如果調(diào)度不成功,則重復(fù)前述步驟4。6、如果調(diào)度成功,則打印守護(hù)任務(wù)開始統(tǒng)一處理打印消息,通過串口或網(wǎng)口,根據(jù)控制命令守護(hù)任務(wù)提供的打印參數(shù)向打印控制臺打印。
在本發(fā)明中,控制命令守護(hù)任務(wù)可以接受來自打印控制臺的控制命令,對打印函數(shù)的打印參數(shù)進(jìn)行配置和修改,內(nèi)容包括打印使能、打印方向和打印的消息類型等。
權(quán)利要求
1.一種PSOS系統(tǒng)下觀察打印消息的方法,其特征在于包括下列步驟(1)系統(tǒng)初始化,創(chuàng)建一個打印守護(hù)任務(wù)和一個控制命令守護(hù)任務(wù),以及一個打印函數(shù),所述打印函數(shù)完成將打印消息拷貝到打印消息隊列后向打印守護(hù)任務(wù)發(fā)送一個打印事件的功能;(2)打印守護(hù)任務(wù)接收到打印事件被調(diào)度運行,根據(jù)控制命令守護(hù)任務(wù)提供的打印參數(shù)配置,將打印消息隊列中的消息向打印控制臺打印。
2.根據(jù)權(quán)利要求1所述的一種PSOS系統(tǒng)下觀察打印消息的方法,其特征在于所述步驟(2)具體包括下列分步驟(21)打印消息調(diào)用打印函數(shù);(22)打印函數(shù)拷貝打印消息到打印消息隊列中;(23)打印函數(shù)向打印守護(hù)任務(wù)發(fā)送一個打印事件;(24)打印守護(hù)任務(wù)接收到打印事件被調(diào)度運行,如果調(diào)度不成功,則重復(fù)分步驟(23);(25)如果調(diào)度成功,則打印守護(hù)任務(wù)根據(jù)控制命令守護(hù)任務(wù)提供的打印參數(shù)向打印控制臺打印。
3.根據(jù)權(quán)利要求2所述的一種PSOS系統(tǒng)下觀察打印消息的方法,其特征在于所述分步驟(25)中打印守護(hù)任務(wù)通過串口向打印控制臺打印。
4.根據(jù)權(quán)利要求2所述的一種PSOS系統(tǒng)下觀察打印消息的方法,其特征在于所述分步驟(25)中打印守護(hù)任務(wù)通過網(wǎng)口向打印控制臺打印。
5.根據(jù)權(quán)利要求2所述的一種PSOS系統(tǒng)下觀察打印消息的方法,其特征在于所述分步驟(22)中打印消息隊列的長度是可以配置的。
6.根據(jù)權(quán)利要求1所述的一種PSOS系統(tǒng)下觀察打印消息的方法,其特征在于所述控制命令守護(hù)任務(wù)可以接受來自打印控制臺的控制命令,對打印函數(shù)的打印參數(shù)進(jìn)行配置和修改。
7.根據(jù)權(quán)利要求6所述的一種PSOS系統(tǒng)下觀察打印消息的方法,其特征在于所述的打印參數(shù)的內(nèi)容包括打印使能、打印方向和打印的消息類型。
全文摘要
本發(fā)明公開了一種PSOS系統(tǒng)下觀察打印消息的方法,包括下列步驟1.系統(tǒng)初始化,創(chuàng)建打印守護(hù)任務(wù)、控制命令守護(hù)任務(wù)和打印函數(shù);2.打印消息調(diào)用打印函數(shù);3.打印函數(shù)拷貝打印消息到打印消息隊列中;4.打印函數(shù)向打印守護(hù)任務(wù)發(fā)送一個打印事件;5.打印守護(hù)任務(wù)接收到打印事件被調(diào)度運行,如果調(diào)度不成功,則重復(fù)前述步驟4;6.如果調(diào)度成功,則打印守護(hù)任務(wù)開始統(tǒng)一處理打印消息,通過串口或網(wǎng)口,根據(jù)控制命令守護(hù)任務(wù)提供的打印參數(shù)向打印控制臺打印。采用本發(fā)明提出的觀察打印消息的方法,與現(xiàn)有技術(shù)相比,提高了PSOS系統(tǒng)運行的穩(wěn)定性,并且使觀察打印消息更加安全、可靠和可控。
文檔編號G06F3/12GK1549115SQ0311348
公開日2004年11月24日 申請日期2003年5月15日 優(yōu)先權(quán)日2003年5月15日
發(fā)明者唐雪, 彭德權(quán), 孟志浩, 唐 雪 申請人:深圳市中興通訊股份有限公司南京分公司, 深圳市中興通訊股份有限公司南京分公