你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在51单片机上跑RTOS有没有意义?

[复制链接]
yang9397 发布时间:2021-5-25 16:56
  A$ s/ B. C, p; }

- [$ p% ^3 o* C6 x# H$ H9 \; O3 k
最近看见我的一个技术交流群在讨论一个问题:在51单片机上跑RTOS有没有意义?

4 ~% v7 D, v- B  x* a& t6 x
今天就来围绕51和RTOS展开讲讲。
: i+ P0 D! |6 I* {% F# Z7 E

9 Y- s1 ^0 [6 [* |  c
1关于51单片机及性能和资源
51单片机可以说是我们这一代人的经典,因为它资源不是那么多,而且相对简单,是很多初学者的入门必选之一。

/ G) n; p" y* \* D7 ~! S
! E+ V0 I5 I- Y0 p, i
1.51单片机种类
51单片机的种类很多,我们这里是一种笼统的叫法,通常来说指的是8位MCU。

6 r; p7 m- G1 g5 t
比如早期市面上常见的:英特尔的80C51系列、 爱特梅尔的AT89C51系列、 国产宏晶的STC89C51系列、STM8系列,还有恩智浦、微芯等这些公司都有51单片机。

/ y& d7 b, B9 ^+ S! n+ M! i3 H
4.1.png
% e& _" r+ ]1 \  L3 l
4.2.jpg
* d. B" s3 q% J3 S9 T' N2 b
6 |$ x* [2 R( x8 U- f) C
其实,早期很多做通用MCU的半导体公司,自家都有51单片机系列,只是随着32位单片机的出现,很多以前的51单片机逐渐离开了大家的视野。
  l, {; h5 Q7 b+ f' x! I  b

( ]8 A5 e/ O; S6 ]' x
2.51单片机的性能
再说下51单片机的性能,性能主要是主频(或者时钟频率),当然还有一些其他因素决定性能,比如总线位宽。(可以参看文章《CPU性能由主频决定吗?》)
8 M( l3 z$ B' |# d# Q# N% D
3 q6 U, D' Z( d  h* o! C6 R
目前51单片机的主频通常从几兆到几十兆,比如STC89C51的主频可以高达48M:
( J) ^8 t1 l4 a. ]  \5 G9 I
4.3.png
( i8 o* m  k2 L1 }; M+ L

1 S% K+ v3 O1 a# j' K8 F: M" R
48M的速度,按理说也不低了,这个速度如果32位MCU,跑GUI基本都可以了。
7 J* H! ^  f6 E, ~' w

" S& A5 q- J  p8 S2 D! j' h3 D
但是,这个是在8位的51单片机上,因为总线数据位宽的限制、没有预处理操作等,其性能相对32位来说还是低了很多。

, Q  I7 l+ Y% E( Z
这么说吧,同样跑一段程序,以48M运行的51单片机,是跑不过同主频(48M)的32位机(比如STM32)。
* V6 e+ W, Q+ Q% w7 ?
当然,51单片机如果以最高48M主频运行,其性能跑RTOS还是足足有余。
) h3 t; j. d. R, s" c, |

  r4 R9 A2 ?+ k4 e& V4 ^
3.存储资源
我们通常说的资源,其实还包含外设资源,比如ADC、I2C等。因为这里讨论的是RTOS,这里主要说Flash(用于代码存储)和RAM(运行存储)的资源。

( k5 D. Q' Q/ X, A' v# `, W" y% u8 f+ Q. F+ _+ b) m
早期的51单片机,因为存储技术的限制(生产Flash和RAM成本很高),其资源相对都很小。比如经典的AT89C51其内部只有:128Bit的RAM,4K的Falsh。

# N5 J+ _5 c0 e0 V
但随着存储技术的成熟,现在51单片机存储容量都普遍增多了,比如市面上流行的STC单片机,其内部高达8K的RAM,以及64k的Flash.
4.4.png
7 E9 T8 ?. t9 J7 @
4 T) ]7 Z$ N/ ~$ p9 T; j" k3 k
2适用于51单片机的RTOS有哪些?
上面说了51的性能和资源,再来说说哪些RTOS可以在51单片机上运行。
0 T  g& R' [4 b! U
早期的RTOS,很多都对流行的51单片机做了适配(底层驱动,例程),即使没有做适配,也做了一些通用的驱动接口,供更多人选择。
/ M: J% u( t6 ]9 g- y
因为现在的芯片制造技术成熟了,然后随着需求的增加(软件资源更丰富、要求更高),很多RTOS都普遍偏向于32位的MCU,导致有一些RTOS对51单片机不是那么友好。
  z5 L" B8 b  K+ i6 V% s

% z3 A' {0 x! A
当然,目前可用于51单片机的RTOS依然有很多,只是有一些相对小众化,大家不是那么了解。
8 ~# E( R+ R% h; _# r; j, w1 C
像Small RTOS、Keil 自带的RTX51 Tiny、大家熟悉的uCOS等这些都可以运行在51单片机上的RTOS。
; k8 b" `+ B' A! T* y; R
之前给大家分享过一篇文章《STM8都支持哪些RTOS》中有描述,像AtomThreads、 Chibios、 CMX-Tiny+、embOS这些RTOS都对51单片机做了适配。

' z, n8 I/ u# q5 P( T& f  i$ M  @  c4 Z+ n. J
我之前学习51的时候,在上面跑过高度裁剪的uCOS,简单跑两个任务还是问题不大,包括我给大家分享的文章《在STM8上运行的Atomthreads》还提供了对应的实例供大家学习。
! w  w# W9 M  H
3在51单片机上跑RTOS有没有意义?
6 k! X% n7 j) u/ X' b% k
可能很多人认为:现在是32位单片机的天下,再加上51单片机的性能和资源都很少,跑RTOS很吃力,所以在51单片机上跑RTOS没有意义了。
& y; d* ]7 z- y' v' ^" D
是的,确实存在这样的问题。但是,我认为有没有意义要看情况,在某些情况下,在51单片机上跑RTOS依然有意义。

2 Q$ X$ e/ Q7 G# U. V) ]( e
2 h4 H9 F4 W; ~7 i
1.意义不大的情况
因为目前确实32位MCU存在各方面优势的情况,51单片机存在后天的不足,目前很多情况下,在51单片机上跑RTOS其意义确实显得不是那么大。

- p& p3 ]( K7 N4 g7 k- T
比如:一个包含各种外设模块,处理各种业务逻辑大型的系统,这种情况下不适合用51单片机以及在上面跑RTOS。
9 V5 b  @  E. e) x- A1 K1 J! [: Y
还比如:一个功能非常简单的系统,像采集一个温度值,通过串口传输出去的单元系统。因为简单项目使用RTOS会额外增加系统的复杂程度。
! M0 ?# w  R: l& D% }2 a6 i
: q# M5 ~$ m7 @$ ~/ G
2.有意义的情况
我认为,一个东西的存在必然有它存在的意义。

- s  d; _' p. {! x; i4 r: l- x7 _
像用于学习,我觉得意义还是比较大,毕竟RTOS编程思维和裸机思维方式差异比较大。
* \+ L3 r& ]* q* V; ^( W  `
可能有些初学者目前主要掌握了51单片机的知识,想学习RTOS,这个时候在51单片机上跑RTOS就显得有意义。

: m; i- C  J/ p
还比如:一个相对不是那么复杂的项目,它的外设模块(或资源)用的比较多,同时,整体业务逻辑不是那么复杂,也不要求处理太多事件。像采集温度、湿度传输、按键检测等小项目,通过RTOS各任务模块化运行,我觉得还是比较有意义。

  J8 }! A' Z. o( l1 b2 I7 [
最后,还是那句话,有没有意义,还与你实际情况有关。

" a& g2 Z! |( z0 {
作者 | strongerHuang

; n1 U1 v2 z4 N/ X' k( _
& @" B7 ~! F) v! F% ^# w+ q' I
赞 收藏 评论0 发布时间:2021-5-25 16:56

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版