引言
開放實(shí)時(shí)嵌入式軟件平臺(tái)TOPPERS(Toyohashi Open Platform for Embedded Real-time System)為一個(gè)包含多種嵌入式實(shí)時(shí)操作系統(tǒng)、中間件以及軟件開發(fā)工具在內(nèi)的,,可用于多個(gè)領(lǐng)域的綜合性平臺(tái),。本文對(duì)TOPPERS的發(fā)展歷史、研究現(xiàn)狀和下一個(gè)十年的發(fā)展計(jì)劃和目標(biāo)進(jìn)行了介紹和分析,,一方面可以使TOPPERS的發(fā)展成果能夠被更廣泛地分享,;另一方面為國(guó)內(nèi)類似嵌入式軟件平臺(tái)的發(fā)展提供參考。TOPPERS的主要特色在于具有高質(zhì)量的設(shè)計(jì)和較完善的體系,,開放源代碼,,可免費(fèi)使用,靈活的許可證使得其在商業(yè)應(yīng)用上限制較少,。
1 TOPPERS的歷史
TOPPERS的歷史并不長(zhǎng),,但其起點(diǎn)是具有20多年歷史的TRON(The Real-time Operating system Nucleus)和ITRON(Industrial TRON)項(xiàng)目。ITRON規(guī)范為一系列關(guān)于實(shí)時(shí)操作系統(tǒng)的開發(fā)規(guī)范,,而不是一個(gè)具體的實(shí)時(shí)操作系統(tǒng)的實(shí)現(xiàn),,迄今共發(fā)布4個(gè)版本。任何組織或者個(gè)人都可以按照ITRON規(guī)范開發(fā)自己的實(shí)時(shí)操作系統(tǒng),。ITRON規(guī)范的開放性和弱標(biāo)準(zhǔn)性使其取得了巨大的成功,,在日本已經(jīng)成為事實(shí)上的工業(yè)標(biāo)準(zhǔn)。
但也正是因?yàn)镮TRON規(guī)范的弱標(biāo)準(zhǔn)性,,符合ITRON規(guī)范的實(shí)時(shí)操作系統(tǒng)版本彼此之間不能完全兼容,,帶來(lái)了過剩的多樣性,造成過多重復(fù)開發(fā),。另外,,隨著嵌入式系統(tǒng)越發(fā)復(fù)雜,除了實(shí)時(shí)操作系統(tǒng)內(nèi)核,,其他中間件如文件系統(tǒng),、網(wǎng)絡(luò)協(xié)議棧、設(shè)備驅(qū)動(dòng)框架等也越發(fā)重要,,而在這些方面,,ITRON規(guī)范是比較薄弱的。
為了解決上述問題,,適應(yīng)未來(lái)嵌入式系統(tǒng)發(fā)展趨勢(shì),,ITRON的發(fā)展在兩個(gè)方向上繼續(xù)進(jìn)行,,一個(gè)是由坂村健教授主導(dǎo)的T-Engine,另一個(gè)便是TOPPERS,。TOPPERS和T-Engine不同點(diǎn)在于TOPPERS是以μITRON4.0規(guī)范為基礎(chǔ),,主要針對(duì)硬實(shí)時(shí)系統(tǒng),專注于工業(yè)控制領(lǐng)域,,如汽車電子等,;T-Engine由硬件上的T-Engine規(guī)范和軟件上的以T-Kernel為代表的一系列實(shí)時(shí)內(nèi)核以及相應(yīng)的中間件這兩大部分組成。
2 TOPPERS的現(xiàn)狀
最近一次ITRON規(guī)范的發(fā)布要上溯至1999年的μITRON4.0規(guī)范,。進(jìn)入新世紀(jì)后,,一方面嵌入式系統(tǒng)相關(guān)技術(shù)的發(fā)展日新月異;另一方面ITRON規(guī)范十多年未作更新,,已經(jīng)無(wú)法滿足未來(lái)嵌入式系統(tǒng)應(yīng)用的需求,。因此,從2006年開始,,TOPPERS協(xié)會(huì)在μITRON4.0規(guī)范基礎(chǔ)之上開始制定新一代實(shí)時(shí)內(nèi)核規(guī)范并加以實(shí)現(xiàn),,其大致路線圖如圖1所示。到2011年為止,,該路線圖中的絕大部分目標(biāo)都已經(jīng)達(dá)成,,產(chǎn)生一大批成果,,并且在消費(fèi)電子和汽車電子等領(lǐng)域中得到廣泛應(yīng)用,。
2.1 實(shí)時(shí)內(nèi)核
TOPPERS/ASP(Advanced Standard Profile)內(nèi)核是整個(gè)TOPPERS平臺(tái)的基石和TOPPERS新一代實(shí)時(shí)內(nèi)核的出發(fā)點(diǎn),它遵循μITRON4.0規(guī)范標(biāo)準(zhǔn)功能集,,并在TOPPERS/JSP內(nèi)核基礎(chǔ)上做了許多改進(jìn)和擴(kuò)展,,包括可靠性和代碼的可復(fù)用性,其內(nèi)存占用較小,,功能完善且有著不錯(cuò)的性能,。通過擴(kuò)展包的形式可以對(duì)該內(nèi)核的功能進(jìn)行擴(kuò)展,如任務(wù)優(yōu)先級(jí)可擴(kuò)展到256級(jí),,支持優(yōu)先級(jí)置頂協(xié)議的互斥量擴(kuò)展和受限任務(wù)(類似FreeRTOS中的協(xié)程)擴(kuò)展等,。
TOPPERS/FMP(Flexible MultiProcessor)內(nèi)核是TOPPERS/ASP內(nèi)核針對(duì)多核處理器的擴(kuò)展。該內(nèi)核以靜態(tài)的方式把任務(wù)分配給每個(gè)處理器,,任務(wù)調(diào)度也在每個(gè)處理器上單獨(dú)進(jìn)行,,任務(wù)可以在處理器之間靈活地進(jìn)行遷移,并引入了自旋鎖,,支持粗粒度鎖和細(xì)粒度鎖,。該內(nèi)核主要適用于對(duì)稱性多核處理器系統(tǒng),以應(yīng)對(duì)嵌入式系統(tǒng)多核化的趨勢(shì),,目前支持ARM系列的多核處理器和瑞薩SH系列多核處理器,。
TOPPERS/ATK1(Automotive Kernel)內(nèi)核為一個(gè)面向汽車電子領(lǐng)域且遵循OSEK/VDX Version 2.2.1規(guī)范的實(shí)時(shí)內(nèi)核,。該內(nèi)核通過了車載軟件的相關(guān)認(rèn)證,并且在代碼實(shí)現(xiàn)上遵循MISRA-C設(shè)計(jì)規(guī)范,,車載軟件是TOPPERS的優(yōu)勢(shì)所在,。除了實(shí)時(shí)內(nèi)核外,TOPPERS還提供面向車載網(wǎng)絡(luò)的CAN/LIN中間件和FlexRay中間件,。目前,,符合AUTOSAR規(guī)范的新一代車載實(shí)時(shí)內(nèi)核TOPPERS/ATK2也正在開發(fā)中。
TOPPERS/HRP(High Reliable Profile)內(nèi)核以μITRON4.0規(guī)范的保護(hù)功能擴(kuò)展為基礎(chǔ),,帶有內(nèi)存保護(hù)和時(shí)間保護(hù)功能,,適用于帶有MPU(Memory ProtectionUnit)或者M(jìn)MU(Memory Management Unit)單元的系統(tǒng)。該內(nèi)核主要應(yīng)用于對(duì)可靠性有很高要求的領(lǐng)域,,如航空航天等,。內(nèi)存保護(hù)主要包括防止對(duì)內(nèi)存模塊特定區(qū)域的訪問,防止對(duì)特定系統(tǒng)數(shù)據(jù)的訪問和防止分配過多內(nèi)存等,。時(shí)間保護(hù)主要指防止系統(tǒng)中某個(gè)任務(wù)或中斷處理函數(shù)過多地占用處理器,。
TOPPERS/ASP Safety內(nèi)核基于TOPPERS/ASP內(nèi)核1.3.1版本,對(duì)內(nèi)核進(jìn)行了大量的功能安全分析,,在文檔,、代碼注釋和部分功能上做了相應(yīng)修改,符合功能安全規(guī)范IEC61058中SIL3的要求,,主要應(yīng)用于強(qiáng)調(diào)功能安全的領(lǐng)域,,如核電、石化等,。
TOPPERS/SSP(Smallest Set Profile)以TOPPERS/ASP內(nèi)核為基礎(chǔ),,以盡可能地減少ROM/RAM使用量為目的,功能上遵循μITRON4.0規(guī)范中最低限度功能集,。該內(nèi)核主要針對(duì)資源非常有限的小規(guī)模嵌入式系統(tǒng),,如無(wú)線傳感器應(yīng)用等,刪除了任務(wù)間通訊功能,,精簡(jiǎn)了任務(wù)管理功能,。在該內(nèi)核中,每個(gè)任務(wù)優(yōu)先級(jí)上只允許存在一個(gè)任務(wù),,最多允許16個(gè)任務(wù)存在,,并且所有任務(wù)共享一個(gè)任務(wù)堆棧。該內(nèi)核針對(duì)ARM Cortex-M3內(nèi)核處理器的典型應(yīng)用只需占用3.5 KB左右的ROM,,附加上時(shí)間管理擴(kuò)展包后也只占用5 KB左右的ROM,。
2.2 中間件
TECS(TOPPERS Embedded Component System)是一個(gè)針對(duì)嵌入式系統(tǒng),將各種軟件模塊封裝為組件,并將組件結(jié)合在一起以實(shí)現(xiàn)快速構(gòu)建大規(guī)模嵌入式軟件的規(guī)范和工具的集合,。其目的在于通過組件化的開發(fā)方式降低嵌入式軟件的開發(fā)難度,,減少重復(fù)開發(fā),提高設(shè)計(jì)的抽象度和嵌入式軟件的可復(fù)用性,。在TECS中,,通過組件描述語(yǔ)言CDL(Component Description Language)來(lái)描述組件的接口和屬性等,然后解析器分析CDL并生成相應(yīng)的C語(yǔ)言代碼模板,,最后用C語(yǔ)言實(shí)現(xiàn)相應(yīng)的組件,。由于TECS的底層是基于C語(yǔ)言的,且整個(gè)過程是靜態(tài)的,,所以其在代碼大小和性能上開銷很小,,適合于嵌入式系統(tǒng)應(yīng)用。TECS支持遠(yuǎn)程過程調(diào)用(Remote Procedure Call),,可用于分布式嵌入式系統(tǒng)的開發(fā),。
TINET為一個(gè)面向嵌入式系統(tǒng)的精簡(jiǎn)TCP/IP協(xié)議棧,遵循ITRON TCP/IP API規(guī)范,,并同時(shí)支持IPv4和IPv6協(xié)議,。TINET的IPv4協(xié)議部分來(lái)源于FreeBSDVersion 3.4中的網(wǎng)絡(luò)協(xié)議棧,IPv6協(xié)議部分來(lái)源于著名的IPv6實(shí)現(xiàn)KAME,。TINET中許多概念與BSD套接字的概念類似,,但重點(diǎn)考慮嵌入系統(tǒng)各種限制中最為嚴(yán)格的內(nèi)存容量的限制,刪除了一些傳統(tǒng)BSD套接字接口的TCP/IP協(xié)議棧中對(duì)于嵌入式系統(tǒng)多余的功能,。
SafeG為一個(gè)基于ARM TrustZone技術(shù)的嵌入式虛擬機(jī)(Embedded Hypervisor),,支持在同一個(gè)處理器上同時(shí)運(yùn)行實(shí)時(shí)操作系統(tǒng)(運(yùn)行在信任狀態(tài)下)和通用操作系統(tǒng)(運(yùn)行在非信任狀態(tài)下)并以硬件實(shí)現(xiàn)空間和時(shí)間上的隔離。SafeG負(fù)責(zé)信任狀態(tài)和非信任狀態(tài)之間的切換,,并監(jiān)控中斷的產(chǎn)生,,通用操作系統(tǒng)作為實(shí)時(shí)操作系統(tǒng)的若干任務(wù)被調(diào)度。通過SafeG,,可以結(jié)合多種操作系統(tǒng)的特點(diǎn)于一體,帶來(lái)更多的靈活性,,同時(shí)保證安全性和可靠性,。
2.3 TOPPERS內(nèi)核的主要特征
不同的TOPPERS內(nèi)核覆蓋不同的嵌入式系統(tǒng)領(lǐng)域,但以下兩點(diǎn)幾乎為所有TOPPERS內(nèi)核的主要特征,。
(1)靜態(tài)配置
常見的實(shí)時(shí)操作系統(tǒng)中,,系統(tǒng)的配置通過C語(yǔ)言頭文件中的宏定義來(lái)實(shí)現(xiàn),系統(tǒng)資源是通過調(diào)用C語(yǔ)言API來(lái)創(chuàng)建的,。在TOPPERS內(nèi)核中,,系統(tǒng)的配置和系統(tǒng)資源的創(chuàng)建是通過靜態(tài)API來(lái)完成的。靜態(tài)API的相關(guān)概念在μITRON4.0規(guī)范中引入。使用者通過編寫由靜態(tài)API組成的系統(tǒng)配置文件(文件后綴為.cfg)來(lái)描述系統(tǒng)的組成和所需的系統(tǒng)資源,。TOPPERS內(nèi)核配置器(configurator)將解析系統(tǒng)配置文件,,并依據(jù)事先定義好的模板文件生成相應(yīng)的C語(yǔ)言具體實(shí)現(xiàn)。
以TOPPERS/ASP內(nèi)核為例,,對(duì)靜態(tài)配置流程進(jìn)行簡(jiǎn)要描述,。靜態(tài)配置流程圖如圖2所示,靜態(tài)配置可以分為3個(gè)階段:
①配置器階段1,。在該階段中,,配置器讀取系統(tǒng)配置文件和符號(hào)取值表生成用于參數(shù)計(jì)算的C源文件,再經(jīng)交叉C編譯器編譯,、鏈接,,生成包含具體參數(shù)的結(jié)果文件(Motorola S格式)和對(duì)應(yīng)的符號(hào)表。
②配置器階段2,。在該階段中,,配置器依據(jù)上一階段生成的符號(hào)表從參數(shù)計(jì)算結(jié)果文件中取得實(shí)際值,再依據(jù)事先定義好的模板文件,,生成包含具體內(nèi)核資源實(shí)現(xiàn)的內(nèi)核,,構(gòu)成與初始化文件和相應(yīng)的頭文件(也可生成其他文件,由使用者自定義),。所生成的源文件與內(nèi)核和應(yīng)用一起編譯,、鏈接,即可生成最終的目標(biāo)文件和相應(yīng)的符號(hào)表,。
③配置器階段3,。該階段為一個(gè)可選的檢查階段。配置器依據(jù)定義在模板文件中的規(guī)則,,結(jié)合符號(hào)表對(duì)最終的目標(biāo)文件(Motorola S格式)進(jìn)行檢查,,如違反規(guī)則,輸出相應(yīng)錯(cuò)誤信息,。
采用靜態(tài)配置,,可以自動(dòng)化高效地實(shí)現(xiàn)對(duì)系統(tǒng)的配置和系統(tǒng)資源的創(chuàng)建和分配,減少系統(tǒng)資源的浪費(fèi),。由于所有系統(tǒng)資源在編譯時(shí)就已經(jīng)創(chuàng)建完畢,,不需要在運(yùn)行時(shí)再進(jìn)行創(chuàng)建工作,所以系統(tǒng)的啟動(dòng)過程也將得到加快,。另外在靜態(tài)配置過程中可以實(shí)現(xiàn)一些編譯器所不能完成的復(fù)雜驗(yàn)證工作,,如堆棧的起始地址是否對(duì)齊、堆棧的大小是否對(duì)齊等,。
(2)TOPPERS標(biāo)準(zhǔn)中斷模型
由于中斷處理和硬件緊密相關(guān),,常見的實(shí)時(shí)操作系統(tǒng)中,中斷具體怎樣處理沒有過多的要求,而是留給移植時(shí)實(shí)現(xiàn),。在所有TOPPERS內(nèi)核中,,中斷處理都遵循如圖3所示的TOPPERS標(biāo)準(zhǔn)中斷處理模型。
該模型旨在提高中斷處理的抽象度,,提升中斷相關(guān)代碼的復(fù)用性和可移植性,。在該模型中,所有中斷都具有相應(yīng)的中斷優(yōu)先級(jí),,中斷優(yōu)先級(jí)(默認(rèn)-1~-7)和任務(wù)優(yōu)先級(jí)(默認(rèn)1~15)之間過渡平滑,,構(gòu)成一個(gè)完整的優(yōu)先級(jí)體系。在該模型中,,每一個(gè)中斷都有一條中斷請(qǐng)求線接收一個(gè)或多個(gè)設(shè)備的中斷請(qǐng)求,。當(dāng)一個(gè)中斷請(qǐng)求發(fā)生后,經(jīng)過相應(yīng)的判斷和比較之后,,由中斷處理函數(shù)處理,。中斷處理函數(shù)可以由使用者定義,也可由配置器自動(dòng)生成,。在中斷處理函數(shù)中調(diào)用由使用者定義的中斷服務(wù)例程,。在某個(gè)中斷的處理過程中,可以允許被具有更高優(yōu)先級(jí)的中斷打斷,,即允許中斷嵌套,。
TOPPERS標(biāo)準(zhǔn)中斷處理模型中定義的所有環(huán)節(jié)都可以由硬件實(shí)現(xiàn),大部分處理器的中斷控制器也包含這些環(huán)節(jié)的功能,,如ARM Cortex-M3架構(gòu)處理器的嵌套向量中斷控制器,。若某個(gè)特定處理器無(wú)法硬件實(shí)現(xiàn)該模型中某個(gè)環(huán)節(jié)的功能,則可以通過軟件的方式模擬實(shí)現(xiàn),。軟件模擬的方式會(huì)帶來(lái)相應(yīng)的開銷,,如延長(zhǎng)中斷響應(yīng)時(shí)間等。然而這種開銷相對(duì)于該模型所帶來(lái)的中斷處理抽象度的提升是可以接受的,。
結(jié)語(yǔ)
本文對(duì)開放實(shí)時(shí)嵌入式軟件平臺(tái)TOPPERS的發(fā)展歷史,、目前研究現(xiàn)狀(包括主要成果物和主要特點(diǎn))以及未來(lái)十年的發(fā)展方針進(jìn)行了介紹和分析。其主要特色在于:TOPPERS為一個(gè)相對(duì)完善的體系,,覆蓋了嵌入式系統(tǒng)的多個(gè)領(lǐng)域,;TOPPERS以ITRON項(xiàng)目20多年發(fā)展成果為基礎(chǔ),具有較高的品質(zhì)和可靠性,;靈活的許可證,使得可以自由使用TOPPERS的成果(包括商業(yè)應(yīng)用),,同時(shí)有較少的限制,。