8位MCU跑RTOS有没有意义?

相信大多数人在学习单片机的时候,都是从最基本的8位MCU开始的。一般来说,8位单片机最常见的是三个系列是:51系列、AVR系列、PIC系列。

而前段时间,群里讨论了一个问题:在51单片机上跑RTOS有没有意义?

关于这个问题,大家各有各的说法。下面,我们就围绕51和RTOS具体展开讲一讲。

关于8位单片机及性能和资源

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

1、8位单片机种类

8位单片机种类很多,我们了解最多的就是8位单片机,这里是一种笼统的叫法,通常泛指8位MCU。

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

cd0f5b07e652bb2ea2455ba2a89df54d.png

0e5badd64ac5637ae952c7dea34ae3bc.jpeg

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

2、8位单片机的性能

再说下8位单片机的性能,性能主要是主频(或者时钟频率),当然还有一些其他因素决定性能,比如总线位宽。

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

c02553de86bb89ca1f2010ad0a5a38ab.png

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。

8d5780396b51874f66ec4c4c5ae5ce29.png

适用于8位单片机的RTOS有哪些?

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

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

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

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

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

另外,像AtomThreads、 Chibios、 CMX-Tiny+、 embOS这些RTOS都对8位单片机做了适配。

我之前学习8位的时候,在上面跑过高度裁剪的uCOS,简单跑两个任务还是问题不大。

在8位MCU上跑RTOS有没有意义?

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

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

1、意义不大的情况

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

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

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

2、有意义的情况

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

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

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

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

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

d7e2448309412712317575ae0d8a9ebc.jpeg

END

来源:strongerHuang


版权归原作者所有,如有侵权,请联系删除。

▍推荐阅读

49cfd6b8636d1cbaa28a02bb4e939305.jpeg

261c6ffe0851a5e9347a2e8288dfd634.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ViewState机制由浅入深1

1 ViewState机制是什么? ViewState机制是asp.net中对同一个Page的多次请求(PostBack)之间维持Page及控件状态的一种机制。在WebForm中每次请求完,Page对象都会被释放,对同一个Page的多次请求之间的状态信息&am…

关于bc中小数点length,scale,(())以及进制转换

这是我在codewar上遇到的一个题,我用我自己的方法做出了解答,如下: 1 #!/bin/bash2 3 distanceecho "$1*10000"|bc|cut -d"." -f14 a05 n16 7 if [ $distance -le 0 ];then8 echo None9 else 10 while [ $n -lt $di…

利用openssl来计算sha1, sha224, sha256, sha384, sha512

转载&#xff1a;http://blog.csdn.net/stpeace/article/details/42371079 利用openssl来计算sha1, sha224, sha256, sha384, sha512&#xff0c;前提是已经配置了openssl的环境&#xff1a; 代码如下&#xff1a; [cpp] view plaincopy #include <iostream> #include…

WCF简单教程(6) 单向与双向通讯

第六篇&#xff1a;单向与双向通讯 项目开发中我们时常会遇到需要异步调用的问题&#xff0c;有时忽略服务端的返回值&#xff0c;有时希望服务端在需要的时候回调&#xff0c;今天就来看看在WCF中如何实现。 先看不需要服务端返回值的单向调用&#xff0c;老规矩&#xff0c;直…

5V串口接3.3V单片机串口怎么搞?

写在前面&#xff1a;两个单片机由于电平不同&#xff0c;串口通信可能会失败&#xff0c;这时候需要通过电平转换电路来解决&#xff0c;本文给出了两种方法&#xff0c;一种是通过三极管搭建&#xff0c;另一种是MOS管搭建&#xff0c;在硬件工程师的笔试中也经常会出现这样的…

Django之缓存、信号和图片验证码

一、 缓存 1、 介绍 缓存通俗来说&#xff1a;就是把数据先保存在某个地方&#xff0c;下次再读取的时候不用再去原位置读取&#xff0c;让访问速度更快。 缓存机制图解 2、Django中提供了6种缓存方式 1. 开发调试   2. 内存   3. 文件   4. 数据库   5. Memcache缓存&…

利用openssl来计算sha256哈希值

先配置openssl, 我就不再赘述了&#xff0c; 直接给出代码&#xff1a; [cpp] view plaincopy #include <iostream> #include <openssl/sha.h> // 如果你直接拷贝我的程序运行&#xff0c; 那注定找不到sha.h #pragma comment(lib, "libeay32.lib") …

CuteEditor6.0使用配置心得体会(转)

CuteEditor是一款功能非常强大&#xff0c;支持图片上传、文件下载和word类似的文字编辑器。并且Vs2003和Vs2005都可以适用。对于新闻发布系统和博客之类的系统&#xff0c;是非常的方便的。对一个刚接触这款编辑器的朋友来说或许会遇到和我一样的许多问题&#xff0c;现在我就…

这焊接技术在班里排名第一没问题吧?

晚上和朋友讨论PCB LAYOUT&#xff0c;然后自己也动手起来了&#xff0c;刚好看到宇哥的一篇焊接的文章&#xff0c;这焊接技术这么厉害的人&#xff0c;layout那不得是吊炸天啊。作者&#xff1a;晓宇&#xff0c;排版&#xff1a;晓宇微信公众号&#xff1a;芯片之家&#xf…

html字符串生成器源代码

#-*-coding:utf-8-*-#-*-coding:big5-*-#-*-coding:cp936-*-import Tkinterimport tkFileDialogimport osimport tkMessageBoximport shutilurlnew""#文件打开def manipuOpen(): url tkFileDialog.askopenfilename(title 打开html文件, #创建打开文件对话框…

一个莫名的人,竞标,教训,韩国女人

今天处理了"竞标公司"的后遗症。 教训&#xff1a;以后千万不要轻易把自己的手机号码留给其他的公司&#xff0c;否则他会不停的骚扰你 认识一个奇怪的人&#xff0c;去了解了他&#xff0c;不知道是男是女&#xff0c;和那个穿韩国衣服的女人一样 以前借了另外一个人…

如何利用openssl来计算md4, md5, sha1, sha256, sha384, sha512等常用哈希值?

转载&#xff1a;http://blog.csdn.net/stpeace/article/details/41922115 openssl的库的用法&#xff0c; 前面已经介绍了&#xff0c; 所以不再啰嗦&#xff0c; 直接给出代码&#xff1a; [cpp] view plaincopy // openssl的库的用法&#xff0c; 前面已经介绍了&#xff0c…

Yocto,嵌入式开发者不可不知的强大工具【附资料与活动】

各个嵌入式开发团队出于不同的原因&#xff0c;都希望构建适合自己开发需求的嵌入式系统。Yocto正是这样一个工具&#xff0c;任何一个厂商都可以根据Yocto定制属于自己的系统。 Yocto 是什么 Yocto 是一种伞式项目&#xff0c;侧重于通过开放式嵌入内核&#xff0c;打造嵌入式…

第四次过程性考核

https://gitee.com/liuji1/fourth_process_assessment (一) 问题&#xff1a;使用套接写连接编写一个简单的聊天室程序&#xff0c;客户端主函数放在Client_Main.java文件中&#xff0c;服务器端主函数放在Server_Main.java文件中 (二) 要求&#xff1a; 1.客户端从控制台进行…

Linux内核源代码分析-目录

第一部分 Linux 内核源代码 arch/i386/kernel/entry.S 2 arch/i386/kernel/init_task.c 8 arch/i386/kernel/irq.c 8 arch/i386/kernel/irq.h 19 arch/i386/kernel/process.c 22 arch/i386/kernel/signal.c 30 arch/i386/kernel/smp.c 38 arch/i386/kernel/time.c 58 arch/i386…

[转贴]怎样规划你毕业以后的人生

我自己呢&#xff0c;先是在国营的研究所混了4年&#xff0c;后来到一家公司干了6年&#xff0c;2002年出来自己做公司&#xff0c;现在也就是混了一个温饱吧&#xff0c;算是有房有车&#xff0c;有点积蓄&#xff0c;但是不多&#xff0c;还有一个可爱的女儿。回首这10来年&a…

几种常用加密算法比较

由于计算机软件的非法复制&#xff0c;通信的泄密、数据安全受到威胁&#xff0c;解密及盗版问题日益严重&#xff0c;甚至引发国际争端&#xff0c;所以在信息安全技术中&#xff0c;加密技术占有不可替代的位置&#xff0c;因此对信息加密技术和加密手段的研究与开发&#xf…

python BeautifulSoup 爬虫运行出现 exited with code -1073741571

首先&#xff0c;exited with code -1073741571意思是栈溢出。具体可以看https://blog.csdn.net/vblittleboy/article/details/6613815 它的前一个错误是程序递归深度过深。 但我没有在函数里用递归&#xff1f; python认为你进入一个函数就进入更深一层的递归。 import sys#出…

ORACLE HANDBOOK系列之十一:分区(Partition)

Partitioning enables you to decompose very large tables and indexes into smaller and more manageable pieces called partitions. Each partition is an independent object with its own name and optionally its own storage characteristics. Oracle允许用户将大表以及…

不要错过路边的的风景

人生就像一次旅行。人们总是忙于奔赴目的地&#xff0c;却往往忽略了路边的风景。 随着年龄的增长&#xff0c;人们越来越没有时间去寻求生命中的惊奇和美丽了&#xff0c;他们只在乎地位&#xff0c;财富和权力。大多数人为了不落人后&#xff0c;已经花去了自己大部分时间和精…