焦進(jìn)星
什么是SylixOs?SylixOs是一個(gè)應(yīng)用在嵌入式里的實(shí)時(shí)操作系統(tǒng),于2006年正式上線,至今已有12年的歷史。另外,我們?cè)?015年,成立了翼輝信息有限公司專門推廣和開(kāi)發(fā)操作系統(tǒng)。同時(shí)我們還有RISC-V開(kāi)源的CPU指令集架構(gòu)系統(tǒng)。2013年,我們將此系統(tǒng)進(jìn)行開(kāi)源,使用的是開(kāi)源的GPL協(xié)議。另外系統(tǒng)支持動(dòng)態(tài)裝載技術(shù),使很多開(kāi)源軟件不用任何修改,就能移植到我們的這個(gè)系統(tǒng)上。
同時(shí)也支持第三方圖形庫(kù),如QT、MiniGUI等,也支持眾多的文件系統(tǒng)。這是我們自己研發(fā),并進(jìn)行開(kāi)源的系統(tǒng)。我們對(duì)該系統(tǒng)進(jìn)行了十萬(wàn)次測(cè)試,該測(cè)試沒(méi)有損害任何軟件系統(tǒng)的結(jié)構(gòu),測(cè)試效果非常好。該系統(tǒng)還支持文件系統(tǒng),也具備了豐富的網(wǎng)絡(luò)功能。另外一個(gè)優(yōu)點(diǎn),就是該系統(tǒng)可以根據(jù)項(xiàng)目需要,進(jìn)行一些配置,達(dá)到秒級(jí)啟動(dòng)。SylixOs在2006年開(kāi)始研發(fā),在那時(shí)我們完成了該系統(tǒng)的最基本內(nèi)核,只提供一些基本的內(nèi)核功能,如線程調(diào)度、中斷管理、定時(shí)器、RMS、信號(hào)量等。在2007年我們將SylixOs系統(tǒng)增加了I/O系統(tǒng),來(lái)支持標(biāo)準(zhǔn)的設(shè)備驅(qū)動(dòng)模型,比如SPI、IIC和TTV終端等。在2008年,因?yàn)轫?xiàng)目需要,我們給系統(tǒng)添加了網(wǎng)絡(luò)與文件系統(tǒng),同時(shí)也提供了一些非常實(shí)用的工具,如數(shù)據(jù)庫(kù)。同時(shí)也豐富了內(nèi)核功能,加入了類型管理功能等。在2009年,SylixOs在支持MMU和緩存方面做了重大改進(jìn),以便對(duì)高端處理器有很好的支持,使更多設(shè)備可以支持網(wǎng)絡(luò)功能。在2010年我們添加了更多支持功能,使系統(tǒng)支持更加豐富的網(wǎng)絡(luò)功能。在2010年,我們接觸了多媒體領(lǐng)域的項(xiàng)目,所以我們向SyLIXOs系統(tǒng)移植了與多媒體相關(guān)的開(kāi)源軟件,包括SDL、FFMPEG等。2011年,SyLIXOs系統(tǒng)有兩個(gè)主要飛躍,多核支持(內(nèi)核代碼Gemini)和動(dòng)態(tài)加載;豐富了文件系統(tǒng)和設(shè)備的支持。從2012年開(kāi)始,SyLIXOs從普通的系統(tǒng)逐步發(fā)展成為大型操作系統(tǒng)。在2013年,我們添加了GDB、調(diào)試應(yīng)用程序和動(dòng)態(tài)鏈接庫(kù),增加對(duì)QT(跨平臺(tái)界面)的支持,使SyLIXOs設(shè)備保障和網(wǎng)絡(luò)功能越來(lái)越完善。在2014年系統(tǒng)化主要在多平臺(tái)上發(fā)力,因?yàn)樵谶^(guò)去很多客戶使用的都是一種處理器。而2014年我們積累了豐富的客戶,每個(gè)客戶所使用的處理器并不相同,所以在2014年,我們將操作系統(tǒng)添加了ARM、MIPS、PowerPC和X86的四大處理器體系結(jié)構(gòu)的支持。
2016年,我們成立了公司,同年推出了Sylix操作系統(tǒng)的一整套產(chǎn)品。而在最近這三年中,我們主要將該系統(tǒng)在多平臺(tái)中進(jìn)行支持,比如支持TI的DSP芯片,以及調(diào)電安全系統(tǒng)。在2017年,我們?cè)黾恿?4位CPU的支持,支持AMD64、MIPS64。在今年我們主要增加了開(kāi)源處理器的支持,同時(shí)我們也推出了另一個(gè)版本,來(lái)支持MCU(單片微型計(jì)算機(jī))。我們的系統(tǒng)支持很多第三方中間件,同時(shí)我們還將客戶所需的AI技術(shù)或區(qū)塊鏈,移植到我們的操作系統(tǒng)上。目前我們的典型用戶,包括航天科工、醫(yī)學(xué)、高鐵信號(hào)系統(tǒng)和國(guó)家電網(wǎng)等。
簡(jiǎn)單介紹一下RISC-V。RISC-V是基于精簡(jiǎn)指令集的計(jì)算原理,所建立的開(kāi)放指令集架構(gòu)。RISC-V最大的優(yōu)點(diǎn)是開(kāi)源的開(kāi)放性,用戶可以免費(fèi)使用。另外因?yàn)闆](méi)有歷史包袱,所以設(shè)置起來(lái)非常簡(jiǎn)潔。RISC-V的指令集有40多條,這也吸引了非常多的工業(yè)界還有學(xué)術(shù)界甚至是政治界的關(guān)注。
SylixOs對(duì)RISC-V的支持,主要的工作是要去開(kāi)發(fā)一個(gè)體系結(jié)構(gòu)的相關(guān)代碼,這就包括了CPU、FPU的上線切換,以及MMU(內(nèi)存管理單元)的支持,同時(shí)還包括多核、動(dòng)態(tài)裝載和應(yīng)用調(diào)試的支持等。當(dāng)SylixOs在RISC-V芯片主板上運(yùn)行時(shí),第一次運(yùn)行的效果非常簡(jiǎn)陋,只能看到操作界面。當(dāng)我們添加了多核支持后,SylixOs操作系統(tǒng)就被調(diào)度到不同的CPU核心中,接下來(lái)我們?cè)黾恿藘?nèi)核模塊的裝載支持,為了支持應(yīng)用程序的裝載,我們通過(guò)module注冊(cè)的內(nèi)核模塊,修改了GCC的源代碼,因?yàn)镽ISC-V官方提供的編譯器內(nèi)建庫(kù),都與位置有關(guān),所以添加了FPIC靜態(tài)庫(kù),這個(gè)就是整個(gè)應(yīng)用程序的執(zhí)行過(guò)程。
有了支持,接下來(lái)主要做C++的支持,因?yàn)樵贑++中有一些存儲(chǔ)對(duì)象、本地對(duì)象和靜態(tài)對(duì)象等,需要在恰當(dāng)?shù)臅r(shí)間去構(gòu)架,并且靜態(tài)對(duì)象的構(gòu)造要保證安全性,所以必須提供C++的運(yùn)行,所以SyLIXOS為C++應(yīng)用程序提供了運(yùn)行支持。有了C++支持之后,我們開(kāi)始進(jìn)行QT的移植。QT我們只進(jìn)行了少量的改動(dòng),就是利用編譯器把QT的源代碼編譯出來(lái)。當(dāng)QT被編譯后,由于我們的硬件沒(méi)有顯示器,所以我們沒(méi)法看到QT的運(yùn)行效果,所以我們不得不將LCD屏幕、觸摸屏等設(shè)備添加到QEMU SIFIEVU虛擬機(jī)上。
最后,我們所做的就是在我們的ID里對(duì)應(yīng)用程序進(jìn)行調(diào)試和支持。因?yàn)槲覀兊牟僮飨到y(tǒng),已經(jīng)支持內(nèi)建的調(diào)試服務(wù)器,所以主要的工作就是在體系結(jié)構(gòu)里面做支持就可以了。我們?yōu)槭裁磿?huì)把系統(tǒng)與RISC-V進(jìn)行結(jié)合?主要的原因就是,我們是開(kāi)源的實(shí)時(shí)操作系統(tǒng),而RISC-V是一個(gè)開(kāi)放的且免費(fèi)的CPU應(yīng)急架構(gòu)。我們認(rèn)為把這兩者結(jié)合在一起,可以把我們優(yōu)秀的實(shí)時(shí)操作系統(tǒng)、軟件推向開(kāi)源,更好地把系統(tǒng)推向國(guó)外的開(kāi)源社區(qū)。
(根據(jù)演講內(nèi)容整理,未經(jīng)本人審核)