但是操作系統(tǒng)不是剛需,上操作系統(tǒng)比較占用單片機的資源,比如占用比較多的FLASH和RAM,間接增加了硬件成本,哪怕成本增加1毛錢,對于上量的產(chǎn)品,分分鐘是一個工程師的工資。
我做了單片機開發(fā)10幾年,大多數(shù)產(chǎn)品其實還是裸機編程,用到操作系統(tǒng)的比較少。
當然,這個跟產(chǎn)品功能有關,一般產(chǎn)品功能復雜、實時性要求苛刻的就會上操作系統(tǒng)。
目前用的比較多的就是實時操作系統(tǒng),比如主流有uC/OS-II、FreeRTOS、rt-thread。
下面,簡單給大家說下3個系統(tǒng)各自優(yōu)缺點,如有不對,請指正!
一、uC/OS-II
uC/OS-II 是 Micrium 公司開發(fā)的商業(yè)實時操作系統(tǒng),它的內(nèi)核設計非常穩(wěn)定和可靠,更加注重調(diào)度算法和系統(tǒng)服務的豐富性,適合于需要更高實時性和穩(wěn)定性的應用。
uC/OS-II 的優(yōu)缺點如下:
特點:
對開發(fā)友好:資料多。
實時性:uC/OS-II 可以提供非??焖俚闹袛囗憫腿蝿涨袚Q,確保系統(tǒng)實時性。
可移植性:uC/OS-II 可以支持多種不同的處理器架構,使得應用程序更易于移植到不同的硬件平臺上。
可靠性:由于 uC/OS-II 的內(nèi)核設計非常穩(wěn)定和可靠,因此它被廣泛應用于各種不同的嵌入式系統(tǒng)中。
成熟的生態(tài)環(huán)境:由于 uC/OS-II 已經(jīng)發(fā)布了很長時間,因此它的社區(qū)和生態(tài)環(huán)境非常成熟和完善,用戶可以方便地獲取文檔、示例和支持。
缺點:
商業(yè)授權費用:uC/OS-II 是一個商業(yè)實時操作系統(tǒng),用戶需要購買商業(yè)授權才能使用。
資源占用:uC/OS-II占用單片機資源較多,需要較大的存儲空間和內(nèi)存空間。
另外,開發(fā)者是可以剪裁的,也就是說你可以根據(jù)你產(chǎn)品的功能修改系統(tǒng)代碼做定制,前提是你已經(jīng)吃透了系統(tǒng)的代碼,否則不要輕易嘗試,不然很容易給自己挖坑。
二、 FreeRTOS
FreeRTOS 是一個開源的實時操作系統(tǒng),目前占有率高。
特點:
商業(yè)授權費用:可以免費商用
輕量級:FreeRTOS 的內(nèi)核非常小巧,適合資源受限的單片機。
實時性:FreeRTOS 可以提供非??焖俚闹袛囗憫腿蝿涨袚Q,確保系統(tǒng)實時性。
可移植性:FreeRTOS 可以支持多種不同的處理器架構,使得應用程序更易于移植到不同的硬件平臺上。
社區(qū)支持:FreeRTOS 的社區(qū)非?;钴S,有大量的開發(fā)人員參與開發(fā)和維護,使得 FreeRTOS 的生態(tài)環(huán)境非常完善。
良好的文檔和資料:FreeRTOS 的文檔和資料非常豐富,學習和使用 FreeRTOS 相對較為簡單。
缺點:
組件少:部分功能組件不夠完善,比如GUI(圖形界面)、TCP/IP、文件系統(tǒng)需外擴第三方。
三、rt-thread
這個是國內(nèi)一款適合物聯(lián)網(wǎng)產(chǎn)品的實時操作系統(tǒng),特點是資源占用極低(1.2KB RAM和3KB Flash),代碼架構做低功耗功能比較方便。
優(yōu)點:
輕量級:RT-Thread 的內(nèi)核非常小巧,適合資源受限的單片機。
實時性:RT-Thread 可以提供非??焖俚闹袛囗憫腿蝿涨袚Q,確保系統(tǒng)實時性。
可裁剪性:RT-Thread 可以按需選擇需要的組件,以減小系統(tǒng)占用的資源。
面向對象:RT-Thread 支持對象化編程,使得代碼更加清晰易懂。
跨平臺支持:RT-Thread 可以支持多種不同的處理器架構。
缺點:
生態(tài)相對不夠完善:相比一些成熟的嵌入式操作系統(tǒng),RT-Thread 的社區(qū)和開發(fā)人員數(shù)量相對較少,生態(tài)環(huán)境相對不夠完善。
學習曲線較陡峭:RT-Thread 是一個相對較新的操作系統(tǒng),它的文檔和資料相對較少,學習曲線相對較陡峭。
不適合大型系統(tǒng):由于 RT-Thread 的內(nèi)核設計初衷是輕量級和實時性,所以它不適合構建大型的嵌入式系統(tǒng)。
四、自己對RTOS的理解
最后聊一下,我對這些實時操作系統(tǒng)的理解。
我覺得實時操作系統(tǒng),本質上就是一個實時性高的程序架構。
實時就是能保證我的任務規(guī)定的時間內(nèi)去執(zhí)行,這用傳統(tǒng)while(1)輪詢方式是實現(xiàn)不了的。
程序架構就好比建房子時的地基,只有地基穩(wěn)了,才能應對外在惡劣環(huán)境對房子造成的影響,比如臺風、地震。
我們寫程序也是一樣的,程序架構就是的”地基”,只有地基穩(wěn)了,你的程序才能應對項目經(jīng)理突如其來的改功能、換芯片方案,你的代碼才經(jīng)得起折騰、產(chǎn)品功能做得穩(wěn)定。
可惜啊,很多工程師并沒有寫程序架構的能力,因為對經(jīng)驗和代碼水平要求比較嚴格。
所以一般復雜的項目,直接上現(xiàn)成的、穩(wěn)定的實時操作系統(tǒng)就可以了。
這樣至少可以保證兩點:
1.程序架構上不出問題。
2.程序的實時性不出問題。
不過用現(xiàn)成的也是有缺點的,就是RTOS的功能很多,有很多你產(chǎn)品壓根用不上,但是你沒辦法,你又不會剪裁,這樣就會浪費你很多單片機資源。
所以這幾年我做項目,一直是用自己寫的程序架構,然后程序實時性通過人工去規(guī)避。
比如任務初始化、創(chuàng)建、調(diào)度管理。
還有實時操作系統(tǒng)一些實用功能,比如隊列,也是產(chǎn)品常用的,只是我自己寫了更簡化的代碼。
審核編輯:劉清
-
單片機
+關注
關注
6030文章
44489瀏覽量
631997 -
RAM
+關注
關注
8文章
1364瀏覽量
114444 -
操作系統(tǒng)
+關注
關注
37文章
6688瀏覽量
123140 -
FreeRTOS
+關注
關注
12文章
483瀏覽量
61918
原文標題:單片機能運行操作系統(tǒng)嗎?
文章出處:【微信號:nanshuqg,微信公眾號:無際單片機編程】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論