引言
嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS,Real Time Operating System)為嵌入式應(yīng)用的開(kāi)發(fā)者提供了系統(tǒng)級(jí)的支撐環(huán)境,極大地簡(jiǎn)化了嵌入式軟件系統(tǒng)的設(shè)計(jì)過(guò)程,成為操作系統(tǒng)中一個(gè)非常重要的分支。隨著RTOS在嵌入式系統(tǒng)中的大量應(yīng)用,RTOS的選擇與評(píng)價(jià)成為了一個(gè)重要的問(wèn)題。一個(gè)RTOS的評(píng)價(jià)要從很多角度進(jìn)行,如體系結(jié)構(gòu)、API的豐富程度、網(wǎng)絡(luò)支持、可靠性等。其中,實(shí)時(shí)性是RTOS評(píng)價(jià)的最重要的指標(biāo)之一,實(shí)時(shí)性的優(yōu)劣是用戶選擇操作系統(tǒng)的一個(gè)重要參考。評(píng)價(jià)一個(gè)操作系統(tǒng)的實(shí)時(shí)性應(yīng)該著重考察它的哪些指標(biāo),以及如何進(jìn)行測(cè)試,是本文著重討論的問(wèn)題。
1、操作系統(tǒng)實(shí)時(shí)性的主要指標(biāo)
嚴(yán)格地說(shuō),影響嵌入式操作系統(tǒng)實(shí)時(shí)性的因素有很多。限于篇幅,本文只列出影響操作系統(tǒng)實(shí)時(shí)性的6個(gè)主要因素。
(1)常用系統(tǒng)調(diào)用平均運(yùn)行時(shí)間
即系統(tǒng)調(diào)用效率,是指內(nèi)核執(zhí)行常用的系統(tǒng)調(diào)用所需的平均時(shí)間。可以參考POSIX標(biāo)準(zhǔn),按照進(jìn)程、線程、同步原語(yǔ)(信號(hào)量和互斥體等)、文件、內(nèi)存、中斷處理、時(shí)鐘、時(shí)間分類,選取部分常用的系統(tǒng)調(diào)用進(jìn)行測(cè)試,如建立刪除進(jìn)程與線程、建立刪除文件、讀寫(xiě)文件、設(shè)置得到優(yōu)先級(jí)、創(chuàng)建釋放信號(hào)量、分配釋放內(nèi)存空間、加載卸載中斷處理模塊等。選取的樣本不可能十分完整,在這里只是作為一種方法提出,僅供參考。
(2)任務(wù)切換時(shí)間
任務(wù)切換時(shí)間是指事件引發(fā)切換后,從當(dāng)前任務(wù)停止運(yùn)行、保存運(yùn)行狀態(tài)(CPU寄存器內(nèi)容),到裝入下一個(gè)將要運(yùn)行的任務(wù)狀態(tài)、開(kāi)始運(yùn)行的時(shí)間間隔,如圖1所示。
圖1 任務(wù)切換時(shí)間
需要注意的是,要使任務(wù)進(jìn)行切換,需要一定的事件觸發(fā)。通常,這個(gè)事件是同步原語(yǔ),使任務(wù)切換,并且過(guò)程可被監(jiān)控。但是,同步原語(yǔ)的操作會(huì)帶來(lái)一定的系統(tǒng)開(kāi)銷,而且不同操作系統(tǒng)的各種同步原語(yǔ)操作效率不同。因此,對(duì)被測(cè)操作系統(tǒng)使用其支持的各種同步原語(yǔ)進(jìn)行任務(wù)切換測(cè)試,選取各自用時(shí)最少者——這里稱為“最佳原語(yǔ)”,作為測(cè)量值,以使誤差最小。經(jīng)過(guò)對(duì)Mutex、Semaphore、Critical Section、SVR5 Semaphore、POSIX Semaphore、pthread_mutex的測(cè)試之后,測(cè)得WinCE的最佳原語(yǔ)為Critical Section,而Linux的最佳原語(yǔ)為 pthread_mutex。
(3)線程切換時(shí)間
線程是可被調(diào)度的最小單位。在嵌入式系統(tǒng)的應(yīng)用系統(tǒng)中,很多功能是以線程的方式執(zhí)行的,所以線程切換時(shí)間同樣是考察的一個(gè)要點(diǎn)。測(cè)試方法及原理與任務(wù)切換類似,不再介紹。
(4)任務(wù)搶占時(shí)間
任務(wù)搶占時(shí)間是高優(yōu)先級(jí)的任務(wù)從正在運(yùn)行的低優(yōu)先級(jí)任務(wù)中獲得系統(tǒng)控制權(quán)所消耗的時(shí)間,如圖2所示。
圖2 任務(wù)搶占時(shí)間
(5)信號(hào)量混洗時(shí)間
信號(hào)量混洗時(shí)間指從一個(gè)任務(wù)釋放信號(hào)量到另一個(gè)等待該信號(hào)量的任務(wù)被激活的時(shí)間延遲,如圖3所示。
圖3 信號(hào)量混洗時(shí)間
在嵌入式系統(tǒng)中,通常有許多任務(wù)同時(shí)競(jìng)爭(zhēng)某一共享資源,基于信號(hào)量的互斥訪問(wèn)保證了任一時(shí)刻只有一個(gè)任務(wù)能夠訪問(wèn)公共資源。信號(hào)量混洗時(shí)間反映了與互斥有關(guān)的時(shí)間開(kāi)銷,是RTOS實(shí)時(shí)性的一個(gè)重要指標(biāo)。
(6)中斷響應(yīng)時(shí)間
中斷響應(yīng)時(shí)間是指從中斷發(fā)生到開(kāi)始執(zhí)行用戶的中斷服務(wù)程序代碼來(lái)處理該中斷的時(shí)間。中斷處理時(shí)間通常不僅由RTOS決定,而且還由用戶的中斷處理程序決定,所以不應(yīng)包括在測(cè)試框架之內(nèi)。
針對(duì)這些指標(biāo)的部分或全部,已經(jīng)有了為數(shù)不少的測(cè)試方法和測(cè)試程序,例如Rhealstone方法,大量的benchmark(lmbench、HbenchOS等)。但這些測(cè)試方法及程序或者是由于計(jì)時(shí)方法的不足導(dǎo)致計(jì)時(shí)精度不夠,或者是由于需要過(guò)多的專業(yè)硬件設(shè)備(如邏輯分析儀、示波器,等),使得測(cè)試要求過(guò)高,測(cè)試條件不易達(dá)到,均存在著一定的缺陷。針對(duì)這些問(wèn)題,本文中提出了一種基于CPLD與目標(biāo)系統(tǒng)結(jié)合的測(cè)試方法,較好地解決了這些問(wèn)題。
2、比對(duì)平臺(tái)及測(cè)試方法
2.1 比對(duì)測(cè)試平臺(tái)介紹
為了更好地對(duì)嵌入式系統(tǒng)中各層次的軟件系統(tǒng)(包括操作系統(tǒng)、Bootloader、用戶應(yīng)用程序以及其他系統(tǒng)程序)進(jìn)行評(píng)測(cè),我們?cè)O(shè)計(jì)并實(shí)現(xiàn)了雙嵌入式系統(tǒng)比對(duì)實(shí)驗(yàn)平臺(tái)。實(shí)驗(yàn)平臺(tái)以2塊研華PCM7230開(kāi)發(fā)板(基于PXA255處理器)和1個(gè)CPLD器件為核心,開(kāi)發(fā)板上運(yùn)行被測(cè)操作系統(tǒng),保證了測(cè)試環(huán)境的完全相同;CPLD器件負(fù)責(zé)產(chǎn)生中斷負(fù)載、雙系統(tǒng)的同步置位復(fù)位觸發(fā)與計(jì)時(shí)功能,保證了測(cè)試結(jié)果的精確,并且易于比對(duì)、觀察,突出評(píng)測(cè)過(guò)程比對(duì)的特點(diǎn)。圖4是比對(duì)測(cè)試平臺(tái)的邏輯結(jié)構(gòu)。
圖4 比對(duì)測(cè)試平臺(tái)的邏輯結(jié)構(gòu)
下面列出的是比對(duì)平臺(tái)中主要的硬件型號(hào)與種類。
◇ CPU:XScale (400 Hz)。
◇ 時(shí)鐘:HT1381。
◇ ROM:1 MB AMD。
◇ SDRAM:64 MB。
◇ Flash:32 MB。
◇ IO資源: 包含RS232(COM1~4),RS485(COM5),2個(gè)USB Host和1個(gè)USB Client,Ethernet DM9000.10100 basedT,以及AMI120擴(kuò)展總線接口。
2.2 測(cè)試與計(jì)時(shí)方法
在測(cè)試過(guò)程中,采用當(dāng)前比較流行的基準(zhǔn)測(cè)試程序法(benchmark)對(duì)上述實(shí)時(shí)性指標(biāo)進(jìn)行評(píng)測(cè)。針對(duì)每一指標(biāo),編寫(xiě)相應(yīng)的測(cè)試程序。在測(cè)試過(guò)程中,一個(gè)最基本原則是盡可能地減小測(cè)量誤差,采用多種策略減小其他因素對(duì)測(cè)試的影響,例如關(guān)閉內(nèi)核中部分不需要的進(jìn)程,以縮短內(nèi)核占用CPU時(shí)間;禁用數(shù)據(jù)Cache和指令Cache,以避免高速緩存對(duì)RTOS相應(yīng)指標(biāo)的影響;對(duì)同一指標(biāo)進(jìn)行高頻度重復(fù)測(cè)試,統(tǒng)計(jì)其最大值、最小值和平均值等,得到盡可能客觀的結(jié)果。
與通常的基準(zhǔn)測(cè)試方法相比較,本測(cè)試方法的特點(diǎn)是采用CPLD器件與測(cè)試程序相結(jié)合的方法,利用CPLD與開(kāi)發(fā)板上豐富的引腳資源,通過(guò)CPLD進(jìn)行編程,可方便地對(duì)被測(cè)試系統(tǒng)產(chǎn)生中斷負(fù)載、同步觸發(fā),而且不會(huì)增加被測(cè)系統(tǒng)的額外負(fù)載。同時(shí),減少系統(tǒng)調(diào)用的次數(shù),使測(cè)試結(jié)果更加精確,更接近內(nèi)核自身的運(yùn)行值。
另外,測(cè)試過(guò)程的計(jì)時(shí)功能通過(guò)CPLD編程實(shí)現(xiàn),與傳統(tǒng)的利用RTOS內(nèi)核的時(shí)間系統(tǒng)調(diào)用計(jì)時(shí)方式相比,解決了不同操作系統(tǒng)系統(tǒng)調(diào)用返回值精度不夠、單位不統(tǒng)一的問(wèn)題。由于比對(duì)平臺(tái)中的CPLD器件選用的是Xilinx公司的XC9500系列,其最高系統(tǒng)時(shí)鐘頻率為100 MHz,引腳到引腳的最大時(shí)延為10 ns,因此實(shí)現(xiàn)的計(jì)數(shù)器計(jì)時(shí)精度可以達(dá)到數(shù)十ns,幾乎可以忽略不計(jì),極大提高了計(jì)時(shí)精度,如圖5所示。