你们还在用8位单片机吗?

工作这些年,一种从事嵌入式相关的工作,大部分接触的是ARM芯片,不过也有接触到8位单片机的机会,在一些控制领域,8位单片机还是有自己的用武之地的,大家也来说一说,自己还有接触到8位单片机吗?

近年来STM32等32位的MCU风光无两,苹果电脑CPU用了ARM核,更是添了一把火。现在说嵌入式MCU,通常是32位的。

那么,像51单片机这种8位的MCU的情形又如何,本文简单分析下很多嵌入式工程师的一些误解。

8位MCU正在被淘汰?

这是最常见的误解。

先说事实,根据最新的Gartner的市场报告,8位的市场营收额和增长额跟32位的相比都仅仅差几个百分点。考虑到8位的单个芯片比32位芯片要便宜很多的事实,8位的出货量其实远高于32位的。

打个直观的比方,现在我们有了高铁,是不是所有传统的普快、特快火车都要立即淘汰呢?显然事实并非如此,至于原因就太多了。

现实情况就是8位MCU曾经的应用领域并不能立即用32位的MCU直接替代。

8位处理器缺乏创新?

不少人会认为既然现在市场的宠儿是32位的MCU,厂商们是不是都没有投入研发资源在8位产品上了。

这么想的人可能一想到8位的MCU,脑海中会浮现40DIP的“经典8051”的形象。事实上芯片厂商们并没有停止创新。比如CIP-51内核因为采用了一个时钟周期等同于一个指令周期的设计,瞬间将同频率的8051性能提高了12倍。

国内的一些半导体厂商也有基于8051或其他8位内核的创新。

8位处理器难以使用C/C++语言编程?

如果你了解Arduino的设计原理,这个误解就不攻自破。

当然坦白讲,8位的MCU使用高级语言编程确实比32位的MCU要困难些,主要障碍就是内存地址的不统一。比如8051内核的内存地址就分为CODE、data、sfr、idata和xdata。如果涉及到banking就更复杂了。

8位的PIC还有硬件Stack这样更加“非主流”的设计,但是这些障碍都可以通过工具的优化来缓解。

8位处理器专为简单应用而生?

这个观点倒是有几分真实,但是嵌入式应用本身就是简单应用居多。

嵌入式系统应用的本身特点决定了8位依然有很多用武之地。外设和编译器的进化将慢慢拓展8位处理器的应用范畴。

8位处理器不能胜任IoT应用需求?

IoT应用不是一个单独的应用,而是一个复合应用。

智能手表、智能音箱、主控制器、网关这种当然需要复杂的处理器来实现。但是IoT应用还包含大量的传感器节点、执行节点和转换节点。这种节点用低功耗的8位处理器来实现更加适合。

4cc4f3ca219df1684f0f6468f50256b2.png

8位处理器响应慢?

这个就是完全的误解了。

典型的嵌入式应用中,响应速度主要跟中断响应和唤醒延迟相关。8位处理器有天然的优势(地址转换工作量小、IP单元实现门数少),至少不输于32位的处理器。

8位处理器的能效低于32位处理器?

曾经看过ARM公司的权威工程师写的一本书,书中观点是32位处理器的能效比高于8位的MCU,理由是32位处理器能快速处理完任务,休眠时间的比例更大,但是这个结论包含一个假设,就是任务有一定复杂度。

如果任务本身非常简单,唤醒过程的功耗也很大,那么这个假设不成立。针对不同应用场景,不能简单说8位、32位哪个能效比更高。至少在非常简单的应用中,8位的能效比要高。如果再加上单独响应,无需CPU干预的一些任务,8位的能效比甚至能高出很多。

相同价格的32位处理器功能远强于8位处理器?

这个也有一定程度的可信度,但是不要忘记有相当大的一部分应用使用8位的MCU就已足够。

在这种情况下,非要购买平均价格高一点的32位 MCU,成本就会上升。对于很多基本上标准化了的嵌入式产品来说,8位MCU还是具有一定的成本优势的。

8位处理器设计的应用不能适应未来变化?

这是个思维角度问题,作为嵌入式程序员,更应该考虑当前的任务。不管是什么类型的MCU,如果产品形态变化了或者需求本身变化了,就要重新设计。未来谁都看不清,何必考虑那么多没有实际意义的前瞻。

8位处理器开发工作更繁重且没有升级路径?

32位处理器的处理更加以软件为中心,可以做更多的代码复用。而8位处理器更多地利用硬件外设来完成任务。

综合而言,没有绝对的差别。

只要是嵌入式处理器,升级路径都不大明确。如果你采用既有8位,又有32位的产品的厂家,你会发现很多外设都很相似。

考虑到现在图形化配置外设的趋势,升级路径逐渐变得不那么重要,反正都是图形化或者脚本化来生成基础驱动代码。

来源公众号:STM32嵌入式开发

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

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

相关文章

生成 excel 直接用 httpServletResponse 输出

之前写过一篇文章 《超详细的java生成excel文件并下载》,该文章虽然够详细,也行得通,但还是有一定的缺陷,该文章可以拆分成两个部分,一是指定位置生成excel文件,二是根据地址下载文件。缺陷的部分是会产生中…

获取网站投资(融资成功)的20个自我检查

1、web2.0提了也白提web2.0这是一个概念,打着web2.0的概念,只是说技术如何如何2.0,战略如何2.0,其实意 义真的不大。投资人需要的是一个网民能够接受,并且很有特点的网站,能够满足网民的某个需求&#xff0…

MYSQL AB复制原理

Mysql复制(replication)是一个异步的复制,从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave)。实现整个复制操作主要由三个进程完成的,其中两个进程在Slave&…

TCP拥塞控制详解

为了防止网络的拥塞现象 ,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”…

北航博士,研究所月入两万

大家好,看到张老师的一篇文章,说的一位研究生大哥的心路历程,分享给大家。作者:易贝贝https://www.zhihu.com/question/64371326/answer/2251105460文章转自:大鱼机器人北航博士,2019 年 7 月毕业&#xff…

分号是不是c语言的一部分,问什么C程序里总是提示缺少分号;,而明明有分号?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼if(lpNULL)printf("********还没存入图书********\n");else{for(s0;s<5;s){while(( szp->snumber[s]!lp->number )&&(lp->next!NULL))lplp->next;if( szp->snumber[s]lp->number){printf(&…

django使用用户名或手机号码登录

django有自己的认证系统&#xff0c;会自动根据用户名和密码进行验证。如果需要使用用户名或手机登录的话&#xff0c;需要重写django的认证后台&#xff0c;并且设置到配置文件中。 重写django的认证后台 class UsernameMobileAuthBackend(ModelBackend):"""用…

ArcUser 2006第2期拾零

前天收到了上半年的两期ArcUser&#xff0c;其中第二期的主题是Imagery In GIS。这一期的“聚焦”是“Using Imagery”&#xff0c;其中包含5篇文章&#xff1a;Leverage Imagery in ArcGISMobile GIS and Digital PhotomappingThe Key to the Present is the PastUnderstandin…

工作的习惯,看到好收藏下

转载的&#xff0c;读过了感觉有收获&#xff0c;分享下。1&#xff0c;当时公司招了大批应届本科和研究生毕业的新新人类。平均年龄25岁。那个新的助理&#xff0c;是经过多次面试后&#xff0c;我亲自招回来的一个女孩。名牌大学本科毕业&#xff0c;聪明&#xff0c;性格活泼…

TCP传输过程中丢包问题

TCP协议本身是保证传输的数据完整性不会丢数据的。如果通信中发现缺少数据或者丢包&#xff0c;那么&#xff0c;最大的可能在于程序发送的过程或者接收的过程出现问题。例如服务器给客户端发大量数据&#xff0c;Send的频率很高&#xff0c;那么就有可能在Send时发生错误&…

c语言随机迷宫生成器,作为新手该如何快速上手 C++

1.C 实现基数树使用 C 实现Radix树&#xff1a;一种基于二进制表示的键值的查找树&#xff0c;尤其适合处理非常长的、可变长度的键值&#xff0c;Patricia 的基本思想是构建一个二叉树。2.C 实现并行计算的K-Means聚类算法使用 C 实现一个完整的面向对象的可并行K-Means算法。…

薪资是跳出来的,不是涨出来的!

下面的内容是转自朱老师的公众号&#xff0c;他说的观点我是认同的&#xff0c;之前在一个国外的论坛&#xff0c;有个老外总结了程序员的涨薪情况&#xff0c;里面就有提到&#xff0c;如果想拿到比较好的薪水&#xff0c;靠的还是跳槽。当然&#xff0c;他还总结了很多其他方…

团队Alpha冲刺(三)

目录 组员情况组员1(组长)&#xff1a;胡绪佩组员2&#xff1a;胡青元组员3&#xff1a;庄卉组员4&#xff1a;家灿组员5&#xff1a;凯琳组员6&#xff1a;丹丹组员7&#xff1a;家伟组员8&#xff1a;政演组员9&#xff1a;鸿杰组员10&#xff1a;刘一好组员11&#xff1a;何…

收缩数据库

http://codehunter008.cnblogs.com/archive/2005/05/08/150998.aspxhttp://wuchang.cnblogs.com/archive/2004/10/13/51835.html 转载于:https://www.cnblogs.com/passrift/archive/2006/09/26/515292.html

我的助理辞职了!——给不听话的下属看看~

喜欢收藏下&#xff0c;以后给新人看。 是本人转载的&#xff0c;与诸位分享、交流。1&#xff0c;当时公司招了大批应届本科和研究生毕业的新新人类。平均年龄25岁。那个新的助理&#xff0c;是经过多次面试后&#xff0c;我亲自招回来的一个女孩。名牌大学本科毕业&#xf…

快速排序非递归算法c语言实现,数据结构与算法----3.5 非递归的快速排序方法

[c]代码库#include using namespace std;#include using namespace std;typedef int KeyType;struct LElemType{KeyType key;};struct SElemType{int a;int b;};struct SList{LElemType *r;int length;};const int StackInitSize10;const int StackInc15;struct SStack{SElemTy…

C++类中成员变量的初始化总结

C类中成员变量的初始化总结 1. 普通的变量&#xff1a; 一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。 1 class CA 2 { 3 public: 4 int data; 5 public: 6 CA(); 7 }; 8 9 CA::CA():data(0) //……#1……

今天把房子定下来了

今天同学L跟我说&#xff0c;今天付了定金&#xff0c;把买房子的事给定下了。先说下疫情这两年的房价在疫情之前&#xff0c;2019年那时候&#xff0c;深圳经历了一波房价上涨&#xff0c;那时候的房价上涨是我完全没有预料到的&#xff0c;但是在2015年房价的那一波房价上涨&…

11月16日 个人战立会议内容报告

昨天我们采访了学校学生&#xff0c;确定了软件初步的需求性。 今天是11.16&#xff0c;我们去图书馆查阅了资料。 我们的PM孙杨凯对所查询的资料进行了整理&#xff0c;成员王博武对资料进行了分析&#xff0c;我主要通过资料分析确定软件大纲&#xff0c;软件初步的功能确定。…

探讨C#中字符串的加密

探讨C#中字符串的加密C#中字符串的加密可以用DSA和RSA&#xff0c;先要将字符串转换为字节数组&#xff0c;这与编码有关。再选择签名方式&#xff0c;有RSA和DSA&#xff0c;sign便是出来的签名结果。  可以用DSA和RSA&#xff0c;如&#xff1a;using System;  using Sys…