在工業(yè)控制領(lǐng)域,很多時候?qū)ο到y(tǒng)實時性的要求較高,下面就通過英創(chuàng)公司的EM9160(內(nèi)核為Linux-2.6)和EM9280(內(nèi)核為Linux-3.9)工控主板,對Linux的不同版本2.6和3.9進(jìn)行實時性的探究,對它們分別測試,得出測試結(jié)果,通過實驗數(shù)據(jù)說明Linux-2.6和Linux-3.9在實時性方面的差別。
實時性的一個重要參數(shù)就是任務(wù)的響應(yīng)延遲時間,它包含了其它幾個重要的實時性參數(shù)(中斷潛伏期時間,調(diào)度潛伏期時間等),任務(wù)響應(yīng)延遲時間越短,說明任務(wù)對外部事件的響應(yīng)速度越快,實時性也就越好。
本次測試就是針對任務(wù)的響應(yīng)延遲時間進(jìn)行的,使用串口接收整包數(shù)據(jù)然后解包得到數(shù)據(jù),再對數(shù)據(jù)打包回發(fā)。測量出串口接收端RX接收數(shù)據(jù)完畢到發(fā)出端TX開始發(fā)送數(shù)據(jù)的時間間隔,并對EM9160和EM9280的測試結(jié)果進(jìn)行比較。
測試中,使用一塊工控主板通過串口向測試使用的EM9160和EM9280每秒發(fā)送一個9字節(jié)的整包數(shù)據(jù)。
測試中通訊數(shù)據(jù)包定義如下:
0x55 | 0xaa | DestAddr | SourceAddr | DatLen | Dat0 | … | Datn | checksum |
測試得出的時間間隔包括兩段,串口RX端接受數(shù)據(jù)完畢至系統(tǒng)響應(yīng)數(shù)據(jù)的延遲時間和處理數(shù)據(jù)的時間。這里的處理數(shù)據(jù)非常簡單,讀取數(shù)據(jù)解包,再打包回發(fā),所用時間僅為10us不到。所以,測量出的時間間隔主要是系統(tǒng)響應(yīng)串口接收數(shù)據(jù)的延遲時間。
由于測量任務(wù)的響應(yīng)延遲時間不同于一般的時間參數(shù)測量,它要求很高的時間測量精度(至少微秒級)。所以,測試中采用示波器作為測試工具,分別測出在接受處理數(shù)據(jù)時串口RX端和TX端的波形,觀察波形之間的時間間隔,就能精確的測量出串口收發(fā)數(shù)據(jù)的時間間隔。
根據(jù)上面所闡述的,在EM9160和EM9280工控主板上分別進(jìn)行Linux系統(tǒng)對任務(wù)響應(yīng)延遲的測量。
測試所用程序的一些主要部分;
首先配置并打開串口:
rc = m_Serial.OpenPort( 2, 115200, '8', '1', 'N');
這里為打開ttyS2,波特率115200,8位字符長度掩碼,1位停止位,無奇偶校驗。
數(shù)據(jù)的接收采用建立一個單獨線程的方式,在線程中調(diào)用select()函數(shù)等待數(shù)據(jù),當(dāng)接受到數(shù)據(jù)以后,對數(shù)據(jù)處理,要進(jìn)行相應(yīng)解包,檢驗和的驗證,并且回發(fā):
pthread_create(&m_thread,&attr,(void *(*) (void *))&ReceiveThreadFunc, (void*)this );
串口發(fā)送數(shù)據(jù)需要經(jīng)過打包處理:
int CSerial::WritePort(unsigned char *Buf, int len ,int fd)
對該例程感興趣的客戶可以點此下載該例程完整代碼。
在EM9160和EM9280上面都使用同樣的程序進(jìn)行測試。
基于EM9160平臺,對Linux-2.6的測試結(jié)果:
橙色線CH1的波形是串口接收端RX的波形,藍(lán)色線CH2的波形是串口發(fā)送端TX的波形,波形橫軸每一格的單位為2.5ms。測試波形的截圖如下。
通過對以上四張圖波形的觀察,可以發(fā)現(xiàn),EM9160工控主板在Linux-2.6的環(huán)境下,系統(tǒng)等任務(wù)的響應(yīng)延遲是一個范圍值,最短時間在1ms左右,最長時間已經(jīng)超過了10ms。
下面來看基于EM9280平臺,對Linux-3.9的測試結(jié)果:
橙色線CH1的波形是串口接收端RX的波形,藍(lán)色線CH2的波形是串口發(fā)送端TX的波形。波形橫軸每一格的單位為250us,測試波形的截圖如下。
通過對這三張圖中波形的分析,可以看出,在EM9280工控主板在Linux-3.9的環(huán)境下波形很穩(wěn)定,系統(tǒng)對任務(wù)的響應(yīng)延遲時間在1MS以內(nèi)。能夠滿足對實時性的較高要求。
分析實驗數(shù)據(jù),可以發(fā)現(xiàn),Linux-3.9對任務(wù)的響應(yīng)延遲時間能夠保持在1ms之內(nèi),而Linux-2.6對任務(wù)的響應(yīng)延遲時間最短時間在1ms左右,但是最長時間卻達(dá)到了10ms左右。通過對比,可以得出Linux-3.9相對于Linux-2.6在實時性上有相對較大的提升。
本次測試采用的波特率是115200,這樣可以盡可能的減少數(shù)據(jù)傳輸時間和接收與發(fā)送超時的影響,與系統(tǒng)的響應(yīng)時間對比,能夠顯現(xiàn)出實時性的特點。對于較慢的波特率,比如9600,4800等,數(shù)據(jù)傳輸本身較慢,等待數(shù)據(jù)傳輸和超時的時間也較長,可能一次數(shù)據(jù)傳輸完成的時間和系統(tǒng)響應(yīng)的時間已經(jīng)相差不大或者超過系統(tǒng)響應(yīng)時間,這種情況下,Linux-2.6已經(jīng)能夠滿足實時性的要求。但是當(dāng)客戶的傳輸速率較快而且對實時性的要求較高時,建議選用內(nèi)核為Linux-3.9的工控主板進(jìn)行相關(guān)開發(fā),能夠滿足需求。
-
Linux
+關(guān)注
關(guān)注
87文章
11319瀏覽量
209830 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6085瀏覽量
35433
發(fā)布評論請先 登錄
相關(guān)推薦
評論