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…

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

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

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

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

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

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

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

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

第四次过程性考核

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

劝你不要转行

在知乎收到一个咨询,问题如下您好,想向您请教一些问题。想转行做嵌入式工程师个人基本信息29岁,电子与通信工程专业硕士,毕业后就职于某车企,主要从事类似项目管理一职。去年考入某事业单位,业余时间相对较…

linux下DHCP的安装配置

今天在整理以前的资料的时候,看到了这篇过去积攒的资料,过程详细所以拿来给大家一块分享,同时我也在做,提高一下熟练度。 【实验名称】Linux下DHCP服务的配置与安装【实验拓扑】【实验目标】了解DHCP服务的工作原理,掌…

浅谈一下嵌入式中的强符号和弱符号

__attribute__ 是一个编译器指令,其实是 GNU C 的一种机制,本质是一个编译器的指令,在声明的时候可以提供一些属性,在编译阶段起作用,来做多样化的错误检查和高级优化。用于在 C、C、Objective-C 中修饰变量、函数、参…

POJ_1862 Stripies 【贪心】

一、题面 POJ1862 二、分析 反省一下,自己英语水平着实不行,该题其实就是问若给出若干个这种生物,根据这种体重变换方式,最终合并成一个后,体重最少是多少。根据公式 $m 2\sqrt{m_{1}m_{2}}$ 我们可以发现&#xff0c…

想成为硬件工程师,难不?

有很多朋友经常会问,成为高级嵌入式系统硬件工程师,需要做到哪些呢?那么,我们就先从嵌入式硬件工程师是个什么概念入手。一、如何理解“嵌入式”的概念呢?1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部&#x…

.Net/C#中Cache的用法

Cache 即高速缓存,使用合理可以提高网站访问速度,减少服务器压力 什么是缓存?Web 应用程序通常都是被多个用户访问。一个Web站点可能存在一个“重量级”的加载,它能够使得站点在访问的时候,拖慢整个服务器。当站点被大…

Maven继承

继承为了消除重复,可以把pom 中很多相同的配置提取出来;如:grouptId, version 等。 在使用的时候子工程直接继承父工程的依赖版本号,子工程中不再需要指定具体版本号,方便统一管控项目的依赖版本问题。 创建…

电子驱蚊器就是智商税

说下我的情况我家不能烧蚊香,因为我们领导说家里有小孩,蚊香对小孩很不好,这是楠哥的锅,我不背。但是我又不喜欢挂蚊帐,总觉得蚊帐挂起来后觉得很压抑,黑乎乎的感觉。所以能不挂的时候就不挂,然…

串口通讯到底有没有累积误差及对时钟精度的要求

1. 问题背景:2. 问题分析:3. 总结:1. 问题背景: 对于嵌入式开发者来说,串口应该是应用最广泛的模块,在日常客户支持过程中经常会有客户问到一些关于串口通讯稳定性的问题,比较典型的几个问题如下:在9600波特…

《统一沟通-微软-实战》-3-部署-Exchange 2010-1-先决条件

参照: http://technet.microsoft.com/zh-CN/library/bb691354.aspx 先决条件 加域请确保林的功能级别至少为 Windows Server 2003,并确保架构主机运行 Windows Server 2003 Service Pack 1 或更高版本。有关 Windows 功能级别的详细信息,请参阅管理域和林…

写给打工人的职业发展观

转发火哥的一篇文章为什么要去一线城市打工现在网上很多这样的话题:深圳的高房价会导致人才流失吗?年轻人是不是在逃离北上广?一线城市工资是老家省会的一倍,消费,房租也比老家省会贵一倍,赚多少花多少&…

在线MSN代码(如同QQ在线咨询那种的)

在你需要显示MSN咨询的地方添加如下代码&#xff1a; <!--Msn网页在线代码开始--><a href"msnim:chat?contactabcdwxc21com.com"><img height"40"alt"msn:abcdwxc21com.com"src"msn.GIF"width"26"align&quo…

RISC-V Linux 启动流程分析

“Author: 通天塔 985400330qq.comDate: 2022/05/15Revisor: lzufalcon falcontinylab.orgProject: RISC-V Linux 内核剖析”说明&#xff1a;RISC-V Linux 内核兴趣小组旨在围绕 RISC-V 处理器架构系统地研究 Linux 内核以及上下栈中的技术&#xff0c;为国内 RISC-V 生态…