經(jīng)過HelloX開發(fā)團隊近半年的努力,在HelloX V1.78版本基礎(chǔ)上,增加許多功能特性,并對V1.78版本的一些特性進行了進一步優(yōu)化之后,正式形成HelloX V1.79測試版本。經(jīng)相對充分的測試和驗證之后,現(xiàn)正式發(fā)布。相關(guān)代碼,已全部上載到github上(github.com/hellox-project/HelloX_OS),歡迎對HelloX感興趣的朋友下載測試和試用,并進一步反饋問題。
除繼續(xù)保持V1.78所有特性之外,V1.79版本主要對下列特性進行了支持或優(yōu)化:
1. 支持完整的USB功能,包括對USB1.0/1.1(OHCI/UHCI)控制器的支持,對USB2.0(EHCI)控制器的支持,以及對USB3.0(xHCI)控制器的支持。同時,還支持符合HID規(guī)范的USB接口鍵盤和鼠標功能;
2. 成功移植到基于Intel ATOM芯片組的MinnowBoard MAX開發(fā)板上。這包括對板載USB控制器和外設(shè)的支持,以及對板載千兆以太網(wǎng)芯片Realtek 8111的良好支持;
3. 網(wǎng)絡(luò)功能進一步增強。在TCP/IP協(xié)議棧和網(wǎng)卡驅(qū)動程序之間,插入了一個網(wǎng)絡(luò)管理器的內(nèi)核組件。在此組件基礎(chǔ)上,系統(tǒng)可以同時支持多個網(wǎng)卡,以及多個網(wǎng)絡(luò)層協(xié)議棧(比如同時支持IPv4協(xié)議棧和IPv6協(xié)議棧)。同時,可以通過擴展,方便的支持其它通信協(xié)議;
4. 軟硬件兼容性有了進一步改進。在硬件上,增加了對ARM,MIPS等RISC架構(gòu)CPU的支持機制,增強了對PCI總線,CACHE,對齊等硬件特性的兼容和支持。在軟件開發(fā)環(huán)境上,所有內(nèi)核代碼成功移植到基于Linux+GCC的編譯開發(fā)環(huán)境;
5. 以可加載模塊形式,實現(xiàn)了對物聯(lián)網(wǎng)管理平臺的動態(tài)支持。開發(fā)者可以根據(jù)需要,實時在線更新物聯(lián)網(wǎng)后臺代碼?;谶@一套機制,完整實現(xiàn)了與中國移動OneNET物聯(lián)網(wǎng)平臺的對接和集成;
6. 內(nèi)核機制得到進一步增強和完善。內(nèi)存分配算法效率更高,增加了內(nèi)存對齊分配功能。實現(xiàn)了線程堆棧異常檢測,高頻異常中斷扼殺,線程消息隊列監(jiān)視等保證內(nèi)核安全和可靠的特性。同時內(nèi)核啟動時間大大提升,可在10ms級別內(nèi)完成內(nèi)核加載和初始化。
開發(fā)團隊中的Mr. Tywind Huang充分發(fā)揮其高超的編程技術(shù)和豐富的經(jīng)驗,主導(dǎo)完成了MinnowBoard MAX開發(fā)板的移植,Realtek8111網(wǎng)絡(luò)驅(qū)動的開發(fā),物聯(lián)網(wǎng)平臺集成開發(fā)等工作,以及其它一些測試或優(yōu)化工作,在整個HelloXV1.79版本的開發(fā)中做出了重大貢獻。在MrGaojie的持續(xù)努力下,內(nèi)核代碼成功遷移到Linux+GCC的編譯開發(fā)環(huán)境。Mr. Erwin Wang則在GUI模塊代碼的規(guī)范化(C++修改為C),USB功能的診斷測試等方面,做出了大量工作。Mr Blade Luo基于HelloX的網(wǎng)絡(luò)框架,移植了BSD IP協(xié)議棧,為高性能網(wǎng)絡(luò)支持奠定了基礎(chǔ)。同時,開發(fā)團隊中的Mr Haojie和Mr Wangyu,在編碼規(guī)范,內(nèi)核優(yōu)化等方面,給出了卓有成效的支持。HelloX討論群組中的很多朋友,都對最新的版本進行了實際測試和試用,給出了很多改進優(yōu)化建議,在此統(tǒng)一表示感謝。
在HelloX開發(fā)過程中,我們始終堅持“穩(wěn)定可靠,不留問題死角”為原則,所有代碼都經(jīng)過了詳細深入的內(nèi)部測試,并在實際網(wǎng)絡(luò)環(huán)境中經(jīng)受了大量考驗?,F(xiàn)舉幾個典型的例子:
1. 為了對HelloX USB功能進行測試,我們反復(fù)采用USB盤引導(dǎo),并進行持續(xù)的讀寫操作,曾經(jīng)進行過連續(xù)三天的USB讀寫,沒有出現(xiàn)任何異常。在這個過程中,我們用壞了四五塊USB盤。為了測試對USB輸入設(shè)備的支持,我們對一個USB鼠標進行了物理上的破壞,使得它可以以最高頻率自動連續(xù)的進行輸入。我們把它接到運行HelloX的筆記本電腦上,運行了48個小時,無任何異常;
2. 所有的矛盾和問題,都出現(xiàn)在資源緊張的情況下。這在Realtek 8111網(wǎng)卡驅(qū)動的開發(fā)過程中,表現(xiàn)得尤其明顯。最開始的時候,網(wǎng)絡(luò)功能單獨開發(fā),沒有與USB功能集成在一起。這時一切正常。但當(dāng)把網(wǎng)卡驅(qū)動和USB功能集成到一起的時候,問題出現(xiàn)了。最開始的問題是,一旦接入到網(wǎng)絡(luò)(一個實際的企業(yè)網(wǎng)絡(luò)),MinnowBoard MAX單板就無法完成啟動,停在USB初始化過程中。我們幾乎查看了所有的代碼,包括網(wǎng)絡(luò)代碼,USB代碼,內(nèi)核調(diào)度程序,內(nèi)存分配,等等,都沒有發(fā)現(xiàn)問題。后來,在Realtek 8111網(wǎng)卡驅(qū)動的中斷處理程序中,增加了一行輸出代碼,發(fā)現(xiàn)了問題。原來中斷處理程序漏了一個條件判斷,這個條件在網(wǎng)卡的接收緩沖區(qū)溢出時會引發(fā)。因USB初始化較慢(要掃描USB設(shè)備),同時優(yōu)先級很高,導(dǎo)致網(wǎng)卡接收的報文不能被系統(tǒng)及時處理。這時候一旦接入一個真正的網(wǎng)絡(luò),大量的廣播等報文,會迅速占滿網(wǎng)卡緩沖區(qū),進而引發(fā)緩沖區(qū)溢出中斷。由于中斷程序中沒有清除該中斷,導(dǎo)致中斷循環(huán)引發(fā),使得系統(tǒng)一直處于中斷程序執(zhí)行中,便產(chǎn)生了停止響應(yīng)的現(xiàn)象。通過增加一個接收緩沖隊列,該問題得到解決。同時基于該經(jīng)驗而增加的“高頻中斷扼殺”功能,也會對類似問題進行防范;