最近看見(jiàn)我的一個(gè)技術(shù)交流群在討論一個(gè)問(wèn)題:在51單片機(jī)上跑RTOS有沒(méi)有意義?
今天就來(lái)圍繞51和RTOS展開(kāi)講講。
1關(guān)于51單片機(jī)及性能和資源
51單片機(jī)可以說(shuō)是我們這一代人的經(jīng)典,因?yàn)樗Y源不是那么多,而且相對(duì)簡(jiǎn)單,是很多初學(xué)者的入門(mén)必選之一。
1.51單片機(jī)種類51單片機(jī)的種類很多,我們這里是一種籠統(tǒng)的叫法,通常來(lái)說(shuō)指的是8位MCU。
比如早期市面上常見(jiàn)的:英特爾的80C51系列、 愛(ài)特梅爾的AT89C51系列、 國(guó)產(chǎn)宏晶的STC89C51系列、STM8系列,還有恩智浦、微芯等這些公司都有51單片機(jī)。
其實(shí),早期很多做通用MCU的半導(dǎo)體公司,自家都有51單片機(jī)系列,只是隨著32位單片機(jī)的出現(xiàn),很多以前的51單片機(jī)逐漸離開(kāi)了大家的視野。
2.51單片機(jī)的性能再說(shuō)下51單片機(jī)的性能,性能主要是主頻(或者時(shí)鐘頻率),當(dāng)然還有一些其他因素決定性能,比如總線位寬。(可以參看文章《CPU性能由主頻決定嗎?》)
目前51單片機(jī)的主頻通常從幾兆到幾十兆,比如STC89C51的主頻可以高達(dá)48M。
48M的速度,按理說(shuō)也不低了,這個(gè)速度如果32位MCU,跑GUI基本都可以了。
但是,這個(gè)是在8位的51單片機(jī)上,因?yàn)榭偩€數(shù)據(jù)位寬的限制、沒(méi)有預(yù)處理操作等,其性能相對(duì)32位來(lái)說(shuō)還是低了很多。
這么說(shuō)吧,同樣跑一段程序,以48M運(yùn)行的51單片機(jī),是跑不過(guò)同主頻(48M)的32位機(jī)(比如STM32)。
當(dāng)然,51單片機(jī)如果以最高48M主頻運(yùn)行,其性能跑RTOS還是足足有余。
3.存儲(chǔ)資源我們通常說(shuō)的資源,其實(shí)還包含外設(shè)資源,比如ADC、I2C等。因?yàn)檫@里討論的是RTOS,這里主要說(shuō)Flash(用于代碼存儲(chǔ))和RAM(運(yùn)行存儲(chǔ))的資源。
早期的51單片機(jī),因?yàn)榇鎯?chǔ)技術(shù)的限制(生產(chǎn)Flash和RAM成本很高),其資源相對(duì)都很小。比如經(jīng)典的AT89C51其內(nèi)部只有:128Bit的RAM,4K的Falsh。
但隨著存儲(chǔ)技術(shù)的成熟,現(xiàn)在51單片機(jī)存儲(chǔ)容量都普遍增多了,比如市面上流行的STC單片機(jī),其內(nèi)部高達(dá)8K的RAM,以及64k的Flash.
2適用于51單片機(jī)的RTOS有哪些?
上面說(shuō)了51的性能和資源,再來(lái)說(shuō)說(shuō)哪些RTOS可以在51單片機(jī)上運(yùn)行。
早期的RTOS,很多都對(duì)流行的51單片機(jī)做了適配(底層驅(qū)動(dòng),例程),即使沒(méi)有做適配,也做了一些通用的驅(qū)動(dòng)接口,供更多人選擇。
因?yàn)楝F(xiàn)在的芯片制造技術(shù)成熟了,然后隨著需求的增加(軟件資源更豐富、要求更高),很多RTOS都普遍偏向于32位的MCU,導(dǎo)致有一些RTOS對(duì)51單片機(jī)不是那么友好。
當(dāng)然,目前可用于51單片機(jī)的RTOS依然有很多,只是有一些相對(duì)小眾化,大家不是那么了解。
像Small RTOS、Keil 自帶的RTX51 Tiny、大家熟悉的uCOS等這些都可以運(yùn)行在51單片機(jī)上的RTOS。
之前給大家分享過(guò)一篇文章《STM8都支持哪些RTOS》中有描述,像AtomThreads、 Chibios、 CMX-Tiny+、 embOS這些RTOS都對(duì)51單片機(jī)做了適配。
我之前學(xué)習(xí)51的時(shí)候,在上面跑過(guò)高度裁剪的uCOS,簡(jiǎn)單跑兩個(gè)任務(wù)還是問(wèn)題不大,包括我給大家分享的文章《在STM8上運(yùn)行的Atomthreads》還提供了對(duì)應(yīng)的實(shí)例供大家學(xué)習(xí)。
3在51單片機(jī)上跑RTOS有沒(méi)有意義?
可能很多人認(rèn)為:現(xiàn)在是32位單片機(jī)的天下,再加上51單片機(jī)的性能和資源都很少,跑RTOS很吃力,所以在51單片機(jī)上跑RTOS沒(méi)有意義了。
是的,確實(shí)存在這樣的問(wèn)題。但是,我認(rèn)為有沒(méi)有意義要看情況,在某些情況下,在51單片機(jī)上跑RTOS依然有意義。
1.意義不大的情況因?yàn)槟壳按_實(shí)32位MCU存在各方面優(yōu)勢(shì)的情況,51單片機(jī)存在后天的不足,目前很多情況下,在51單片機(jī)上跑RTOS其意義確實(shí)顯得不是那么大。
比如:一個(gè)包含各種外設(shè)模塊,處理各種業(yè)務(wù)邏輯大型的系統(tǒng),這種情況下不適合用51單片機(jī)以及在上面跑RTOS。
還比如:一個(gè)功能非常簡(jiǎn)單的系統(tǒng),像采集一個(gè)溫度值,通過(guò)串口傳輸出去的單元系統(tǒng)。因?yàn)楹?jiǎn)單項(xiàng)目使用RTOS會(huì)額外增加系統(tǒng)的復(fù)雜程度。
2.有意義的情況我認(rèn)為,一個(gè)東西的存在必然有它存在的意義。
像用于學(xué)習(xí),我覺(jué)得意義還是比較大,畢竟RTOS編程思維和裸機(jī)思維方式差異比較大。
可能有些初學(xué)者目前主要掌握了51單片機(jī)的知識(shí),想學(xué)習(xí)RTOS,這個(gè)時(shí)候在51單片機(jī)上跑RTOS就顯得有意義。
還比如:一個(gè)相對(duì)不是那么復(fù)雜的項(xiàng)目,它的外設(shè)模塊(或資源)用的比較多,同時(shí),整體業(yè)務(wù)邏輯不是那么復(fù)雜,也不要求處理太多事件。像采集溫度、濕度傳輸、按鍵檢測(cè)等小項(xiàng)目,通過(guò)RTOS各任務(wù)模塊化運(yùn)行,我覺(jué)得還是比較有意義。
最后,還是那句話,有沒(méi)有意義,還與你實(shí)際情況有關(guān)。
原文標(biāo)題:在51單片機(jī)上跑RTOS有沒(méi)有意義?
文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
單片機(jī)
+關(guān)注
關(guān)注
6023文章
44376瀏覽量
628342 -
RTOS
+關(guān)注
關(guān)注
20文章
804瀏覽量
119113
原文標(biāo)題:在51單片機(jī)上跑RTOS有沒(méi)有意義?
文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論