- RT-Thread內核實現與應用開發實戰指南:基于STM32
- 劉火良 楊森
- 2158字
- 2019-01-21 10:02:19
引言
為什么學習RTOS
當我們進入嵌入式系統這個領域時,首先接觸的往往是單片機編程,單片機編程又首選51單片機來入門。這里說的單片機編程通常都是指裸機編程,即不加入任何RTOS(Real Time Operation System,實時操作系統)的程序。常用的RTOS有國外的FreeRTOS、μC/OS、RTX和國內的RT-Thread、Huawei LiteOS、AliOS-Things等,其中,開源且免費的FreeRTOS的市場占有率最高。如今國產的RT-Thread經過10余年的迅猛發展,在國產RTOS中占據鰲頭。
在裸機系統中,所有的程序基本都是用戶自己寫的,所有的操作都是在一個無限的大循環里面實現。現實生活的很多中小型電子產品中用的都是裸機系統,而且能夠滿足需求。但是為什么還要學習RTOS編程,并會涉及一個操作系統呢?一是因為項目需求,隨著產品要實現的功能越來越多,單純的裸機系統已經不能完美地解決問題,反而會使編程變得更加復雜,如果想降低編程的難度,可以考慮引入RTOS實現多線程管理,這是使用RTOS的最大優勢;二是出于學習的需要,必須學習更高級的技術,實現更好的職業規劃,為將來能有更好的職業發展做準備,而不是一味拘泥于裸機編程。作為一個合格的嵌入式軟件工程師,學習是永遠不能停歇的,時刻都得為將來做準備。書到用時方恨少,希望當機會來臨時,讀者不要有這種感覺。
為了幫大家厘清RTOS編程的思路,本書會在第2章簡單地分析這兩種編程方式的區別,這個區別被筆者稱為“學習RTOS的‘命門’”,只要掌握這一關鍵內容,以后的RTOS學習可以說是易如反掌。在講解這兩種編程方式的區別時,我們主要講解方法,不會涉及具體的代碼編程,即主要還是通過偽代碼來講解。
如何學習RTOS
裸機編程和RTOS編程的風格有些不一樣,而且有很多人說學習RTOS很難,這就導致想要學習RTOS的人一聽到RTOS編程就在心里忌憚三分,結果就是“出師未捷身先死”。
那么到底如何學習RTOS呢?最簡單的方法就是在別人移植好的系統上,先看看RTOS中API的使用說明,然后調用這些API實現自己想要的功能即可,完全不用關心底層的移植,這是最簡單、快速的入門方法。這種方法有利有弊,如果是做產品,好處是可以快速地實現功能,將產品推向市場,贏得先機;弊端是當程序出現問題時,因對RTOS不夠了解,會導致調試困難。如果想系統地學習RTOS,那么只會簡單地調用API是不可取的,我們應該深入學習其中一款RTOS。
目前市場上現有的RTOS,其內核實現方式差異不大,我們只需要深入學習其中一款即可。萬變不離其宗,即使以后換到其他型號的RTOS,使用起來自然也是得心應手。那么,如何深入地學習一款RTOS呢?這里有一個非常有效但也十分難的方法,就是閱讀RTOS的源碼,深入研究內核和每個組件的實現方式。這個過程枯燥且痛苦,但為了能夠學到RTOS的精華,還是很值得一試的。
市面上雖然有一些講解RTOS源碼的圖書,但如果基礎知識掌握得不夠,且先前沒有使用過該款RTOS,那么只看源碼還是會非常枯燥,并且不能從全局掌握整個RTOS的構成和實現。
現在,我們采用一種全新的方法來教大家學習一款RTOS,既不是單純地介紹其中的API如何使用,也不是單純拿里面的源碼一句句地講解,而是從0開始,層層疊加,不斷完善,教大家如何把一個RTOS從0到1寫出來,讓你在每一個階段都能享受到成功的喜悅。在這個RTOS實現的過程中,只需要具備C語言基礎即可,然后就是跟著本書篤定前行,最后定有所成。
選擇什么RTOS
用來教學的RTOS,我們不會完全從頭寫一個,而是選取目前國內很流行的RT-Thread為藍本,將其抽絲剝繭,從0到1寫出來。在實現的過程中,數據類型、變量名、函數名稱、文件類型等都完全按照RT-Thread里面的寫法,不會再重新命名。這樣學完本書之后,就可以無縫地過渡到RT-Thread了。
RT-Thread簡介
RT-Thread的版權屬于上海睿賽德電子科技有限公司,它于2006年1月首次發布,初始版本號為0.1.0,經過10余年的發展,如今主版本號已經升級到3.0,累計開發者人數達數百萬,在各行各業產品中裝機量達到了2000多萬,占據國產RTOS的鰲頭。
RT-Thread是一款開源免費的實時操作系統,遵循的是GPLv2+許可協議。這里所說的開源,指的是你可以免費獲取RT-Thread的源代碼,而且當你的產品使用了RT-Thread且沒有修改RT-Thread內核源碼時,你的產品的全部代碼都可以閉源,但是當你修改了RT-Thread內核源碼時,就必須將修改的這部分開源,反饋給社區,其他應用部分不用開源。無論是個人還是公司,都可以免費使用RT-Thread。
RT-Thread的意義
不知你是否發現,在RTOS領域,我們能接觸到的實時操作系統基本都來自國外,很少見到有國內廠家的產品。從早年很流行的μC/OS,到如今市場占有率很高的FreeRTOS,到獲得安全驗證非常多的RTX(KEIL自家的),再到盈利能力領先的ThreadX,均來自國外。可在十幾年前,在中國,出現了一個天賦異稟、倔強不屈的極客——熊譜翔。他編寫了RT-Thread初代內核,并聯合中國開源社區的極客不斷完善,推陳出新,經過十幾年的發展,如今占據國產RTOS的鰲頭,且每年能遞增數十萬名開發者,加上如今AI和物聯網等技術發展的機遇,讓RT-Thread有“一統江湖”之勢,從2018年完成A輪數百萬美元的融資就可以看出,在未來不出5年,RT-Thread將是你學習和做產品的不二之選。
那么RT-Thread的意義究竟是什么?RT-Thread來自中國,讓我們看到了國內的技術開發者也能寫出如此優秀的RTOS,技術方面并不遜色于其他國家。以我們10多年從事電子行業的經驗來看,RT-Thread無疑增強了我們在這一領域的自信,這是我們認為的RT-Thread的最大意義。當然,作為一款國產的物聯網操作系統,RT-Thread簡單易用、低功耗設計、組件豐富等特性也將讓其大放異彩。野火,作為一個國內嵌入式領域的教育品牌,能為國產RTOS出一份力也是我們的榮幸,希望本書能夠幫助大家快速地入門并掌握RT-Thread。
- 架構不再難(全5冊)
- Python數據分析從0到1
- 劍指MySQL:架構、調優與運維
- 機器學習與R語言實戰
- Machine Learning in Java
- Scala for Machine Learning(Second Edition)
- Kubernetes源碼剖析
- ActionScript 3.0從入門到精通(視頻實戰版)
- Java高并發編程詳解:深入理解并發核心庫
- Clojure High Performance Programming(Second Edition)
- Java并發實現原理:JDK源碼剖析
- Python數據科學實踐指南
- Web前端測試與集成:Jasmine/Selenium/Protractor/Jenkins的最佳實踐
- 軟件設計模式(Java版)
- 前端架構設計