柴胡,目前在九安醫療從事物聯網智能設備的開發和單片機及嵌入式驅動的開發工作,是RT-Thread和嵌入式技術愛好者。
本文將為大家簡要介紹一下筆者使用和學習RT-Thread過程中的體會和感悟,希望能幫助初識RT-Thread的人建立一個初步的印象,避免產生入寶山而空回的遺憾。筆者水平有限,目前也正在學習和使用RT-Thread的過程中,希望本文的拙見能拋磚引玉,如有紕漏,還請不吝賜教。
現在是一個快節奏的時代,技術領域也是如此。近些年,IoT備受資本青睞,各種新技術新方案層出不窮,質量也參差不齊,這邊唱罷那邊登臺,以至于有些技術還未被人熟知,就被淹沒在長河中了。客觀的說,RTOS領域玩家眾多,僅筆者短短的從業時間,國產RTOS就聽聞了五、六款之多。
RT-Thread作為一個有十余年歷史的國產RTOS,經歷了長時間的考驗和用戶的青睞,目前發展趨勢蒸蒸日上,也即將發布RT-Thread 3.0,其中必然有值得我們思考和學習的地方,我們也可以從中汲取到不少寶貴的經驗。
軟件工程管理
軟件工程管理對于軟件研發是十分重要的,甚至可以說是開發過程的基石。公司中有高水平的嵌入式軟件程序員,也有剛入職的實習生,水平難免參差不齊,當共同協作開發一個項目時,如何彼此協調也是一個難題。
時至今日,很多公司仍然在使用落后的代碼管理方式。有些甚至使用把代碼壓縮成一個個的壓縮包來做版本管理。同事之間的協作依靠互相發送文件,每次接收到同事的新文件首先要花半天時間解決編譯error,甚至還要在本地對同事的代碼進行修改,這樣,軟件基本處在半失控的狀態,某次改動產生問題,就要從浩瀚的壓縮包海洋里挑選一個,進行版本回退。在開發一個大項目的時候,這種情況下甚至會出現人數越多,開發難度和周期越大的情況。
而RT-Thread,提供了一個教科書級的范例。RT-Thread由13000多個文件構成,支持各類設備和芯片近70款,從代碼量和組織方式上來說,是一個相當龐大的軟件工程。在近十年的時間里,至少有將近100個開發者參與到了RT-Thread的開發中,使得RT-Thread穩步迭代,而這也是有一定的維護難度的。RT-Thread將代碼部署在Github上,并在此基礎上使用了Travis CI進行自動化編譯測試,使得開發者可以有條不紊的進行迭代開發,并將自己的成果提交至master分支,在提交代碼的第一時間通過Travis CI進行自動化編譯測試,使得一些無法編譯通過的問題,在第一時間就被發現。
RT-Thread使用scons自動化代碼構建工具。初識RT-Thread,很難想象RT-Thread通過一個代碼倉庫,對近70個芯片的IAR、MDK和GCC的工程和工具鏈提供支持。RT-Thread使用了scons,使得只要敲幾行指令,就可以生成所需環境和工具鏈的對應的工程。也就是說,對于大多數芯片,所謂移植RT-Thread,只需要幾個scons指令進行自動化構建。我相信對于大多數中小公司的軟件項目,無論從規模還是參與人數都沒有RT-Thread這么龐大,維護難度也遠小于RT-Thread。但盡管如此,工程維護也是軟件工程管理的老大難問題,無疑,從RT-Thread中,我們可以借鑒不少經驗。
代碼風格與技術
RT-Thread的代碼風格是十分優秀的。在工作中,很多時候嵌入式軟件工程師尤其是單片機軟件工程師使用的芯片資源相對比較匱乏,RAM和ROM也略顯局促,節省資源也成了優先級比較高的事情,而這也成了許多工程師代碼不規范的借口。魯棒性、模塊化、可拓展、高內聚、低耦合,這種高大上的名詞總是不絕于耳,相信大家也在各種場景下聽過不少次。可拋去這些高大上的名詞,到底什么才是優秀的代碼呢?
RT-Thread雖然沒有強調過這些高大上的名詞,但是他毫無疑問用代碼對這些名詞進行了解釋。RT-Thread的代碼風格是類Linux/Unix的代碼風格。這種風格不僅僅體現在函數、變量的命名規范,而是深入到了RT-Thread的核心。例如,RT-Thread實現了一個設備驅動框架,將設備類型分為了字符設備、塊設備、網絡接口設備、內存設備、CAN設備、RTC設備、聲音設備、圖形設備、I2C總線設備等等等等。初始化時通過字符串(用戶可自定義的一個易于記憶的名稱)與設備驅動綁定,并將驅動注冊到內核,使用時只需調用一個字符串,即可匹配到該設備,無需通過各種頭文件包含和二次封裝,即可實現隔離和解耦。
RT-Thread提供了Finsh和msh組件,這是非常有特色組件,可以在調試和開發中與系統內核進行便捷的交互,使用十分方便。如何在資源緊缺的嵌入式軟件開發中,寫出優秀的代碼,RT-Thread十分值得我們思考和學習。
開源精神
RT-Thread是國內第一梯隊的嵌入式開源項目,也正因為開源和社區化,RT-Thread得以茁壯發展,并在開發人員中贏得了極高的口碑,有不小數量的開發者參與到了RT-Thread的開發中。RT-Thread實時操作系統遵循GPLv2+許可證,實時操作系統內核及所有開源組件可以免費在商業產品中使用,不需要公布應用源碼,沒有任何潛在商業風險。這種開源精神十分令人欽佩。
得益于RT-Thread的開源,我們可以將自己的代碼提交,經過審核后合并至master分支,在使用過程中,當某個模塊出現疑問或問題,可以直接與開發者甚至創始人直接進行討論,這種體驗是十分奇妙,也是其他RTOS所不具備的。
RT-Thread倡導大家參與RT-Thread開發的代碼編寫、bug修復、文檔完善等等各項進程中。而實際上一旦自己提交的東西被采納和合并,也是一件十分有成就感的事情。
我們也可以學習RT-Thread的開源精神,將自己業余時間的代碼開源,或者積極參與到開源項目中,在方便大家使用的同時,通過進行更廣泛的討論,也相當于有了更多的人幫助review,接受大家的批評和建議,實現自己更快的進步。
一些思考
現在大家都十分渴望成功,并且渴望快速成功。在各種融資奇跡下,漸漸地,大家希望,趁著風口,激進地在短時間內完成一款產品,然后借著風口一飛沖天。也漸漸地,失去了精心打磨耕耘一個產品的耐心。RT-Thread在數千萬裝機量和獲得天使輪近千萬融資的背后是十年如一日的細心耕耘和精心呵護。
RT-Thread的創始人熊譜翔先生,起初是在2005年,面對RTOS現狀,利用業余時間開發RT-Thread。我想熊譜翔先生的初心也僅僅是想做一款真正優秀的實時操作系統吧。如同《三傻大鬧寶萊塢》中,蘭徹達斯所說:“追求卓越,成功就會在不經意間追上你”。
-
RTOS
+關注
關注
21文章
809瀏覽量
119431 -
RT-Thread
+關注
關注
31文章
1272瀏覽量
39919
原文標題:從RT-Thread中我們能學到什么?
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論