关注+星标公众,不错过精彩内容

作者 | strongerHuang

微信公众号 | 嵌入式专栏

最近看见我的一个技术交流群在讨论一个问题:在51单片机上跑RTOS有没有意义?

今天就来围绕51和RTOS展开讲讲。

1关于51单片机及性能和资源

51单片机可以说是我们这一代人的经典,因为它资源不是那么多,而且相对简单,是很多初学者的入门必选之一。

1.51单片机种类

51单片机的种类很多,我们这里是一种笼统的叫法,通常来说指的是8位MCU。

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

其实,早期很多做通用MCU的半导体公司,自家都有51单片机系列,只是随着32位单片机的出现,很多以前的51单片机逐渐离开了大家的视野。

2.51单片机的性能

再说下51单片机的性能,性能主要是主频(或者时钟频率),当然还有一些其他因素决定性能,比如总线位宽。(可以参看文章《CPU性能由主频决定吗?》)

目前51单片机的主频通常从几兆到几十兆,比如STC89C51的主频可以高达48M:

48M的速度,按理说也不低了,这个速度如果32位MCU,跑GUI基本都可以了。

但是,这个是在8位的51单片机上,因为总线数据位宽的限制、没有预处理操作等,其性能相对32位来说还是低了很多。

这么说吧,同样跑一段程序,以48M运行的51单片机,是跑不过同主频(48M)的32位机(比如STM32)。

当然,51单片机如果以最高48M主频运行,其性能跑RTOS还是足足有余。

3.存储资源

我们通常说的资源,其实还包含外设资源,比如ADC、I2C等。因为这里讨论的是RTOS,这里主要说Flash(用于代码存储)和RAM(运行存储)的资源。

早期的51单片机,因为存储技术的限制(生产Flash和RAM成本很高),其资源相对都很小。比如经典的AT89C51其内部只有:128Bit的RAM,4K的Falsh。

但随着存储技术的成熟,现在51单片机存储容量都普遍增多了,比如市面上流行的STC单片机,其内部高达8K的RAM,以及64k的Flash.

2适用于51单片机的RTOS有哪些?

上面说了51的性能和资源,再来说说哪些RTOS可以在51单片机上运行。

早期的RTOS,很多都对流行的51单片机做了适配(底层驱动,例程),即使没有做适配,也做了一些通用的驱动接口,供更多人选择。

因为现在的芯片制造技术成熟了,然后随着需求的增加(软件资源更丰富、要求更高),很多RTOS都普遍偏向于32位的MCU,导致有一些RTOS对51单片机不是那么友好。

当然,目前可用于51单片机的RTOS依然有很多,只是有一些相对小众化,大家不是那么了解。

像Small RTOS、Keil 自带的RTX51 Tiny、大家熟悉的uCOS等这些都可以运行在51单片机上的RTOS。

之前给大家分享过一篇文章《STM8都支持哪些RTOS》中有描述,像AtomThreads、 Chibios、 CMX-Tiny+、 embOS这些RTOS都对51单片机做了适配。

我之前学习51的时候,在上面跑过高度裁剪的uCOS,简单跑两个任务还是问题不大,包括我给大家分享的文章《在STM8上运行的Atomthreads》还提供了对应的实例供大家学习。

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

可能很多人认为:现在是32位单片机的天下,再加上51单片机的性能和资源都很少,跑RTOS很吃力,所以在51单片机上跑RTOS没有意义了。

是的,确实存在这样的问题。但是,我认为有没有意义要看情况,在某些情况下,在51单片机上跑RTOS依然有意义。

1.意义不大的情况

因为目前确实32位MCU存在各方面优势的情况,51单片机存在后天的不足,目前很多情况下,在51单片机上跑RTOS其意义确实显得不是那么大。

比如:一个包含各种外设模块,处理各种业务逻辑大型的系统,这种情况下不适合用51单片机以及在上面跑RTOS。

还比如:一个功能非常简单的系统,像采集一个温度值,通过串口传输出去的单元系统。因为简单项目使用RTOS会额外增加系统的复杂程度。

2.有意义的情况

我认为,一个东西的存在必然有它存在的意义。

像用于学习,我觉得意义还是比较大,毕竟RTOS编程思维和裸机思维方式差异比较大。

可能有些初学者目前主要掌握了51单片机的知识,想学习RTOS,这个时候在51单片机上跑RTOS就显得有意义。

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

最后,还是那句话,有没有意义,还与你实际情况有关。

------------ END ------------

后台回复『嵌入式软件设计与开发』『单片机』相关文章。

欢迎关注我的公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

欢迎关注我的视频号:

点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

在51单片机上跑RTOS有没有意义?相关推荐

  1. 8位MCU跑RTOS有没有意义?

    相信大多数人在学习单片机的时候,都是从最基本的8位MCU开始的.一般来说,8位单片机最常见的是三个系列是:51系列.AVR系列.PIC系列. 而前段时间,群里讨论了一个问题:在51单片机上跑RTOS有 ...

  2. uCOS-II在51单片机上的移植

    uCOS-II在51单片机上的移植 约定:文中所写的硬件堆栈或系统堆栈是指51单片机SP指针所指向的堆栈空间,而用户堆栈或任务堆栈是指用来保存任务状态为每个任务分配的堆栈空间. 前一段时间一直在学习U ...

  3. 51单片机上连YL69土壤湿度传感器获取的数据在LCD上显示出来

    要做一个项目,被分配到做DS18B20温度传感与YL69土壤湿度传感器在51单片机上用LCD显示屏显示出来.温度传感模块很简单,网上到处都是资料,但是YL69的资料就很少了,特别还是在51单片机上实现 ...

  4. 51单片机C语言跑马灯,51单片机上实现控制跑马灯

    在MCS一51单片机的控制系统中,它的四个并行8位输入输出端口P0一P3是我们经常使用的.在并行端口的编程学习中,"跑马灯"是单片机并行端口输出控制的典型实例.所谓跑马灯,是指将八 ...

  5. 8.51单片机实现跑马灯

    利用51单片机实验板实现跑马灯和简单的显示 文章目录 1.利用单片机P0口,在单个数码管上显示6. 2.利用单片机P0口,在单个数码管上循环显示0~9. 1.利用单片机P0口,在单个数码管上显示6. ...

  6. 我在STM32单片机上跑神经网络算法

    01  前言 为什么可以在STM32上面跑神经网络? 简而言之就是使用STM32CubeMX中的X-Cube-AI扩展包将当前比较热门的AI框架进行C代码的转化,以支持在嵌入式设备上使用. 目前使用X ...

  7. 在STM32单片机上跑神经网络算法

    摘要:为什么可以在STM32上面跑神经网络?简而言之就是使用STM32CubeMX中的X-Cube-AI扩展包将当前比较热门的AI框架进行C代码的转化,以支持在嵌入式设备上使用,目前使用X-Cube- ...

  8. 智慧农场,51单片机上实现DS18B20与YL69土壤湿度传感器,并将两个获取的数据在LCD上显示出来

    上一篇我说了我们做的是两个模块,但是介于DS18B20的资料太多,我就不再阐述,直接给最终的代码. 该代码是将温度传感器与YL69湿度传感器获取的数据在51单片机LCD上显示出来 #include & ...

  9. 51单片机实现跑马灯

    今天准备重新把课设时自己焊的51单片机班子拿出来玩一玩.我的板子晶振是12MHZ的,LED灯只有两个,分别接了P0.0和P0.1. 下面是跑马灯的实现,P0是一个8位的数,每个位就代表了它对应的IO口 ...

最新文章

  1. OrgChart 组织架构与PHP结合使用
  2. Tokyo Tyrant基本规范(4)--协议
  3. 1.9 Java数组和字符串的相互转换
  4. centos 使vim支持+python和+python3
  5. 001redis数据库的介绍
  6. 【JSOI2007】【BZOJ1029】建筑抢修(贪心,堆)
  7. 如何将servlet中的变量在jsp页面中显示---jsp中的jstl表达式(C标签)
  8. nyoj--2--括号配对
  9. 启用Mac系统读写NFTS磁盘
  10. kpconv与point transformer异同、算法讲解
  11. python实现池化操作
  12. 苹果8硬件保修服务器,iPhone手机刷机报错,很多是硬件问题
  13. 史上最全的Java进阶书籍推荐
  14. oracle查看视图属于哪个用户,oracle查询视图归属于哪个用户
  15. @ERROR: auth failed on module wwwroot rsync error: error starting client-server protocol (code 5) at
  16. GS1011无线模块的使用简介。
  17. 【Oracle数据库】关联、子查询
  18. 【IO】SBIO,SNBIO,ANIO,AIO
  19. 研一学习生活的总结~
  20. BDD - Gherkin Language

热门文章

  1. 2022年高处安装、维护、拆除操作证考试题库及答案
  2. PX4使用手册-自主避障-ObstacleAvoidance
  3. Duplicate named routes definition:
  4. 5.1 node实现简单注册功能(往json文件中写入数据)
  5. 如何在fragment中添加ListView,并设置ListView中条目的值
  6. 从新建工程开始使用C++开发单片机(以STM32为例):一、项目介绍
  7. thinkpad E430 电源连接未充电的问题解决方法
  8. 霸气女创始人刘楠:我挖了迪士尼高管,2年把公司干到100亿!
  9. BLAS 1级例程(向量-向量操作)
  10. 使用VMWare虚拟机创建CentOS版本的Linux学习环境(每一步都有截图与说明)