选微处理器MPU,还是单片机MCU?

2023-05-16

每项新应用设计都需要一个单片机或微处理器。当在两者之间选择其一时,需要考虑一些因素。以下是微处理器、单片机的概述和对比。

考虑选择微处理器(MPU)或者单片机(MCU)时,应用类型通常是关键因素。另一方面,最终选择取决于诸如操作系统和内存之类的因素。不过,有时可以将微处理器和单片机内核结合使用,这称作异构架构。

操作系统

对于一些基于Linux或安卓等操作系统的计算机密集型工业和消费类应用,需要大量高速连接或功能范围广泛的用户接口,微处理器就是最佳选择。这是因为大多数单片机都没有操作系统,而只有裸机程序,借助于顺序处理循环和状态机,几乎无需任何人工干预即可运行程序。然而,许多高性能单片机可以支持诸如FreeRTOS之类的实时操作系统(RTOS),从而以确定性方式实时响应需要硬实时行为的应用程序。

作为具有许多免费软件、广泛硬件支持和不断发展的生态系统的通用操作系统,嵌入式Linux取得了巨大的成功。它的另一个优点就是没有用户或授权许可费用。不过,与嵌入式Linux一起运行的应用程序至少需要300至400 DMIPS(ARM-Dhrystone MIPS)性能,因此较适合使用微处理器。单片机没有足够的计算能力和内存来应付此类应用。

如果是用于复杂或对实时性要求高的控制系统, RTOS则很有用,但至少要配合50 DMIPS的高性能单片机。这比嵌入式Linux所需的性能要求要少得多。传统的RTOS设计精简,因此可以在单片机上运行。针对实时计算硬件时,这是合理的,例如用于车辆的防抱死系统,若响应时间过长会带来致命的后果。即使必须支持大量的功能、中断源和标准通信接口,也建议使用带有RTOS的单片机。

内 存

微处理器与单片机之间的另一个主要区别是,微处理器依赖外部存储器来保存和执行程序,而单片机则依赖嵌入式闪存。在微处理器中,程序通常存储在非易失性存储器中,例如eMMC或串行闪存。在启动过程中,将其加载到外部DRAM中并在此执行启动程序。DRAM和非易失性存储器都可以具有几百兆甚至几千兆字节容量,这意味着微处理器几乎从来不受存储容量限制。但有一个潜在缺点:外部存储器或许会使得PCB布局的设计变得更加复杂。

即使是当前的高性能单片机,例如由意法半导体(STMicroelectronics)生产的STM32H7,最多也仅提供2 MB程序内存,对于许多需要操作系统的应用而言可能不足。由于程序位于片上内存中,因此其优点是执行启动和重置过程的速度明显更快。

计算能力

计算能力是典型的选择因素。不过,在这方面,微处理机与单片机之间的界线变得模糊了。例如,如果你将ARM体系结构视为单片机和微处理器市场中分布最广泛的体系结构之一,这就变得显而易见了。ARM提供了不同的处理器体系结构以满足各种要求:

  • Cortex-A提供了最高性能,并且已经针对综合操作系统进行了优化。它们主要部署在功能强大的设备中,比如智能手机或服务器。

  • Cortex-M较小,具有更多的片上外设,但是能耗较低,并且针对嵌入式应用进行了优化。

Dhrystone是比较不同处理器性能的测试基准。根据该基准,普通平价单片机具有30 DMIPS,而当前性能最高的单片机(包括嵌入式程序闪存)与这些平价单片机的差距高达1027 DMIPS。相比之下,微处理器的起步点约为1000 DMIPS。

能 耗

单片机在能耗方面表现出色,要比微处理器低很多。尽管微处理器具有节能模式,但其能耗仍然比典型的单片机高得多。而且,微处理器使用外部存储器,因此较难切换到节能模式。对于需要较长的电池运行时间,并且很少使用或没有用户接口的超低功耗应用,单片机是更好的选择,尤其是对于消费类电子产品或智能电表来说。

连接性

大多数单片机和微处理器都配备了所有常规外围设备接口。但是,如果用户需要的是超高速外围设备,在单片机里是找不到例如千兆以太网这种相关接口的。尽管这实际上已成为微处理器中的标准功能单片机。这是十分合理的,因为单片机几乎无法处理这些高速接口所产生的数据量。一个关键问题是:是否有足够的带宽和通道来处理爆发的数据量?

实时表现

当实时性能是最重要的考虑因素时,单片机绝对是首选。凭借处理器内核、嵌入式闪存和软件(RTOS或裸机OS),单片机可以出色地完成实时任务。因为Cortex-A微处理器使用高性能的流水线,用户可以看到在跳转和中断期间,随着流水线的深度不断增加,延迟时间也随之升高。由于OS与微处理器一起执行多任务,因此很难实现硬实时操作。

系统基础IC

由于电源已经集成在单片机中,因此它们仅需要一个单电平电源。另一方面,微处理器需要许多不同电压的电源来为内核和其它组件供电,所以通常需要一个特殊配置的电源管理IC(即所谓的系统基础芯片)来进行供电管理。

结 语

很难说微处理器或单片机哪个才是更好的选择,但经验法则是,你应该始终权衡各种利弊条件。以下几点可以用作大致指导:

  • 单片机非常适合以能耗为主要关注点,且价格较低的移动应用以及具有实时需求的应用。

  • 微处理器则非常适合与操作系统一起运行并需要高速接口的密集计算应用。游戏和其他图形密集型应用使用特殊的微处理器进行联网处理。

1.解读姚期智关于人工智能发展的最新演讲!

2.聊聊RT-Thread内核对象管理器设计思路~

3.【C进阶】"最常见"却又"最不常用"的三个预编译

4.北京航空航天大学校友会集成电路行业协会成立!

5.如何写出让CPU跑得更快的代码?

6.从创建进程到进入main函数,发生了什么?

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选微处理器MPU,还是单片机MCU? 的相关文章

  • 聊聊FFT(二)----幅值、模值与分辨率

    以常见的家用交流220V 以下称AC220V 工频电信号为例 大家都知道家里的插座内有220V的电 可以给电饭锅 热水壶 空调冰箱等等电器供电 至于220V具体指的是什么可能非理工科背景的同学没有深究过 有效值又称 均方根值 一种用以计量交
  • 计算机组成原理--基于Logisim的8位可控加减法器实验的应用(超详细/设计/实验/作业/练习)

    目录 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Logisim的8位可控加减法器实验 一 前言 二 环境与设备 三 内容 四 结果与分析 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Lo
  • 13-ESP8266连接MQTT服务器发送数据

    Author teacherXue 一 什么是MQTT 定义 MQTT是一个基于客户端 服务器的消息发布 订阅传输协议 MQTT协议是轻量 简单 开放和易于实现的 这些特点使它适用范围非常广泛 在很多情况下 包括受限的环境中 如 机器与机器
  • LVGL-obj对象

    对象创建 1 lv中所有的对象都以obj为基础进行扩展的 创建对象时父对象是空 则在显示器屏链表增加一个节点 父对象非空则在其子链表增加一个节点 创建完成会通过parent gt signal cb parent LV SIGNAL CHI
  • Event Driven Class OSAL 基于事件驱动的模拟操作系统

    EventDrivenClassOSAL详解 Event Driven Class OSAL 基于事件驱动的模拟操作系统 前言 什么是OSAL OSAL为 Operating System Abstraction Layer 即 操作系统抽
  • 零基础开发NBIOT

    前言 shineblink core 开发板 简称Core 的库函数支持NBIOT通信功能 所以只用几行代码即可实现基于M5311 NB模块的联网通信 TCP UDP MQTT 功能 这里我们主要介绍通过TCP实现联网通信的功能 更多关于T
  • MCU烧录方式有什么区别?

    1 MCU程序烧录方式 最近刚好接触到MCU烧录这一块的东西 综合以前学的一些零散的和目前掌握的相关资料 主要有以下几种相关的方式 ISP IAP以及ICP 它们都是对MCU进行编程 但具体的方式有所不同 下面详细了解下每个编程方式的特点
  • 数字IC验证:ARM总线协议AMBA中AHB、APB的简介、区别与联系

    写在前面 最近实习项目里用到这2个协议 因此简单整理一下 内容大多来自ARM官方文档与网络上的 我主要做一个整合 加上自己的理解补充 内容来源都会分别标出 如有侵权请指出 立刻删帖 官方文档入口 AMBA 包括AHB ASB APB 文章目
  • Micropython史上最友好的编辑器,小巧精悍

    Python 因为非常好学 易上手故而广受大众的喜欢 micropython 也因此在物联网单片机领域拥有一席之位 并且 python 有着良好的生态环境 功能亦更加丰富 from machine import Pin p0 Pin 0 P
  • C# 提取字体点阵字模数据

    MCU 项目的 GUI 需要显示文字 没找到合适的 于是 用 Visual C 2008 写了一个字模提取程序 目前能导出数据 但还没来得及测试数据正确性 项目托管地址 https github com memstone mosFontTo
  • HardFault_Handler问题查找方法

    一 程序进入HardFault Handler 可能原因 1 内存溢出 常见的于数组访问越界 2 堆栈溢出 堆栈设置过小等 二 排查方法 方法1 出现该情况后 可首先查看LR寄存器中的值 确定当前使用堆栈为MSP或PSP 1 打开寄存器窗口
  • 聊聊FFT

    关于FFT 全称为快速傅里叶变换 目的是把时域的信号转变为频域的信号 具体的科学解释及计算方程组可以去查百度百科 不过小编不建议这么做 因为查了也看不懂的 先看一张都能看懂的图 这是某种食物的配方表 每种配方包含了多少比例标注的很清楚 对于
  • 计算机组成原理--基于Logisim的海明校验码解码电路实验的应用(超详细/设计/实验/作业/练习)

    目录 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Logisim的海明校验码解码电路 一 前言 二 环境与设备 三 内容 四 结果与分析 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Log
  • Keil MDK误将Project窗口关了的解决办法,窗口视图重置

    在使用MDK时 误将Project窗口或者其他窗口关了 点击view 选择对应的窗口即可 或者点击Window窗口 选择Reset View to Defaults 再点击Reset即可实现窗口的重置
  • 使用Arduino开发ESP32(17):固件更新演示

    文章目录 目的 基础说明 使用演示 通过SD卡更新固件 通过网页更新固件 总结 目的 很多时候我们会有因为bug修复 功能增加等情况需要对已投产使用的设备更新固件 这种情况下再使用工具通过串口烧录固件就不是那么方便了 比较常用的是通过网络或
  • STM32F4单片机ADC采样及ARM-DSP库的FFT

    模拟信号经过ADC采样后变成数字信号 数字信号可以进行FFT运算 在频域中更容易分析信号的特征 本文将介绍如何用STM32F4的进行ADC采样 并利用ARMDSP库里的FFT算法对ADC采样值进行快速傅里叶变换 我使用的是STM32F407
  • GPIO口的八种工作状态

    一直对GPIO的工作状态不是很熟悉 导致在设置IO状态时 经常会设置成推挽上拉 或者推挽下拉 开漏上拉等问题 虽然看起来没有影响MCU工作 但感觉这是一种无知的表现 现在总结下GPIO口的八种工作状态 其中四种输入状态 四种输出状态 一 输
  • 俄罗斯方块游戏(C语言)

    简介 俄罗斯方块 Tetris 是一款经典的游戏 下面是用C语言实现俄罗斯方块的示例代码 code include
  • MCU平台下确定栈空间大小的方法

    本文介绍MCU平台下确定栈空间大小的方法 通常使用IDE开发MCU程序在生成Image文件时 Image文件被划分为代码区 数据区 BSS区 堆区 栈区 其中 代码区 数据区 BSS区空间大小由编译器最终决定 对于MCU 堆区一般设置为0
  • C语言环形缓冲区

    2024第一天 继续给自己加点料 导言 C语言环形缓冲区是一种常用的数据结构 它提供了一种高效的方式来存储和处理数据 本文将深入解析C语言环形缓冲区的定义 原理和应用 并提供一些实际的代码示例 一 什么是环形缓冲区 环形缓冲区 也称为循环缓

随机推荐

  • Adaptive Autosar 整体架构理解

    1 总体说明 xff08 图片来源主要来源于Simulink 以及 Vector xff09 在Autosar官网 xff08 autosar org xff09 上 xff0c 目前CLASSIC PLATFORM 更新到4 4版本 xf
  • 244页Prometheus操作指南,内容详尽讲解细致

    Prometheus在监控工具中有多少话语权 xff1f 作为一款开源的监控工具 xff0c 早早地就在云原生计算基金会中毕业了 xff0c 如今已经成为了云原生应用的首选监控工具 xff0c 在国内外被广泛应用 Prometheus俨然已
  • 在 Linux 终端上的 10 个有趣的命令

    Linux 的命令行不仅是一个复杂且强大的命令所在地 xff0c 同时也是一个有趣的乐园 在本文中 xff0c 我整理了一系列有趣的 Linux 命令 xff0c 您可以从中获得乐趣 1 cmatrix 本列表中的第一个必须是 cmatri
  • 80篇+网络安全面试经验帖

    网络安全面试经验80篇 43 xff0c 看完妈妈再也不用担心我面试的问题了 汇总以下安全服务岗的面经 xff1a 渗透测试 红队攻防 代码审计 安全研究 红队开发 主要由两部分组成 xff1a 个人面试 互联网收纳整理 一 我的实习 am
  • Bash 中的 ${} 和 $() 有什么区别

    像 Linux 这样的基于 GNU 的操作系统依赖于一个名为 Bash 的命令语言解释器或 Shell 来完成它们的大部分计算任务和目标 Bash 是 Bourne Again Shell 的缩写 xff0c Bunne Again She
  • Go 服务端开发,请牢记这几条

    服务端开发一般是指业务的接口编写 xff0c 对大部分系统来说 xff0c 接口中CURD的操作占了绝大部分 然而 xff0c 网络上总有调侃 CURD工程师 的梗 xff0c 以说明此类开发技术并不复杂 但我个人认为 xff0c 如果仅仅
  • 域格4G模块串口开机自动透传的使用

    首先要求是模块版本为串口自动透传版本 1 模式切换 从透传模式切换至临时指令模式的时序 xff1a 1 串口设备给模块 连续发送 43 43 43 xff0c 模块收到 43 43 43 后 xff0c 会给串口设备发送一个 a 在发送 4
  • 网红送餐无人车冒充AI,真人海外远程操控

    美国网红外卖机器人Kiwibot实际由远在南美哥伦比亚的真人远程操控 xff0c 每人时薪不到2美元 xff0c 最多控制三台 2017年成立的Kiwi Campus公司累计获得200万美元融资 xff0c 约人民币1414万元 xff0c
  • 国产开源基础软件MiniGUI宣布支持RT-Thread!

    北京飞漫软件技术有限公司宣布 xff1a 将在 MiniGUI 4 0 2 版本中支持国产操作系统 RT Thread xff01 这是自 MiniGUI 创始人魏永明在本月初宣布启动 1998 年年底 xff0c 魏永明开始在清华大学开发
  • 既然C编译器是C语言写的,那第一个C编译器是怎样来的?

    来源 xff1a 伯乐在线 xff0c 作者 xff1a Chaobs 首先向C语言之父Dennis Ritchie致敬 xff01 当今几乎所有的实用的编译器 解释器 xff08 以下统称编译器 xff09 都是用C语言编写的 xff0c
  • Oracle推出全球首个自治操作系统~

    原创 xff1a 程序员的那些事 xff08 id xff1a iProgrammer xff09 导读 xff1a 保持系统的修补和安全是 IT 部门目前面临的最大挑战之一 在大规模云环境中 xff0c 此类任务乏味 容易出错 xff0c
  • 基于Autosar的网络安全理解

    目录 1 车载网络安全说明 2 常用的安全加密算法 2 1 对称加密 2 2 非对称加密 2 3 混合加密 2 4 单向散列函数 2 5 消息认证码 2 6 数字签名 3 Autosar的加密模块 3 1 模块说明 3 2 关键数据流说明
  • Linux实用程序——Make快速入门

    1 Make make 是 linux 系统的实用程序 它用于管理对于大型程序的自动编译任务 xff0c 自动决定程序某一部分需要重新编译 xff0c 并发出编译指令 虽然 xff0c 我们最常见于 C 语言程序的编译 但是 xff0c m
  • 干货!学习STM32的一些经验分享

    前言 前两天在群里看到群友们在讨论学习STM32的话题 xff0c 并且今天也有一位机械专业的准研究生读者也问了STM32的入门问题 正好我也有一点点经验 xff0c 所以试着分享一下这个话题 我也不是什么大神 xff0c 只是一名普通的工
  • 为什么买了开发板只能吃灰,还是学不会嵌入式?

    经常有同学问我 xff1a 老师 xff0c 我想学嵌入式 xff0c 应该买哪个板子 xff1f 这个问题本身就是错的 如果你去问10个买过开发板的人 xff0c 至少有8个最终都吃灰了 xff0c 而且他也没通过这个板子以及板子附带的所
  • 基于LiteOS的智慧农业案例实验分享!

    最近在指导一位读者朋友做毕业设计 xff0c 该毕设是关于端云互通的 xff0c 基于小熊派 43 LiteOS 43 华为云 在指导他的过程中我也学到了不少东西 xff0c 这里通过一个案例实验 xff08 智慧农业 xff09 给大家分
  • 漫谈C变量—为什么嵌入式项目中常用静态变量?

    在C语言中 xff0c 按照生命周期来分 xff0c 变量只有两类 xff1a 静态变量和动态变量 其中 xff0c 静态变量是指 xff0c 在编译时刻 xff08 Compiling time xff09 变量的地址和大小都已经确定下来
  • 10月1日后,GitHub用main替代master

    转自 xff1a 开源中国 GitHub 官方表示 xff0c 从 2020 年 10 月 1 日起 xff0c 在该平台上创建的所有新的源代码仓库将默认被命名为 34 main 34 xff0c 而不是原先的 34 master 34 值
  • C++在嵌入式中表现如何?

    这是知乎嵌入式领域的一个热门话题 xff0c 原文链接 xff1a https www zhihu com question 374663834 几个高赞回答 xff1a idea4good xff1a 先说结论 xff1a 嵌入式 单片机
  • 选微处理器MPU,还是单片机MCU?

    每项新应用设计都需要一个单片机或微处理器 当在两者之间选择其一时 xff0c 需要考虑一些因素 以下是微处理器 单片机的概述和对比 考虑选择微处理器 MPU 或者单片机 MCU 时 xff0c 应用类型通常是关键因素 另一方面 xff0c