嵌入式处理器详解

news2024/9/20 15:41:56

文章目录

  • 一、CPU、MPU、MCU、SoC、Application Processors的概念
    • 1.CPU (Central Processing Unit)
    • 2.MPU (Micro Processor Unit)
    • 3.MCU (Micro Controller Unit)
    • 4.SoC(System on Chip)
    • 5.Application Processors
  • 二、哈弗架构与冯诺伊曼架构
  • 三、XIP概念
  • 四、嵌入式系统硬件组成
  • 五、嵌入式系统启动流程概述

一、CPU、MPU、MCU、SoC、Application Processors的概念

https://www.microcontrollertips.com/microcontrollers-vs-microprocessors-whats-difference/

https://www.microcontrollertips.com/difference-microprocessors-application-processors/

在一个电子系统中,处理器占据最重要的位置,被称为中内处理器单元:CPU(Central Processing Unit)。它从IO设备读取数据,处理,然后显示出来。

CPU的发展有两个路线:MPU、MCU。

MPU只是一个处理器,需要搭配内存等非常多的其他外设才可以构成一个系统

MCU内部有处理器、内存、Flash及其他模块,仅仅需要搭配少量外设就可以构成一个系统

MPU这一路线,在上世纪80年代非常流行,那时的微型计算机、游戏机都是使用MPU。比如Motorola公司的68000芯片就是一款主流的微处理器(MPU)。下图是一款Alpha Micro AM-1000系列的微型计算机电路板,电路板右侧中间最大的芯片就是MPU 68000。

在这里插入图片描述

后来MPU逐渐式微,可以认为MPU发现到现在只剩下了intel、AMD公司x86系列CPU。这类CPU也越来越复杂,称之为“微处理器”似乎不恰当了。在个人电脑领域,可以看到类似下图的主板。主板上插上CPU、内存条、声卡等等就构成了一台计算机。整个主板体积庞大、制造复杂:

在这里插入图片描述

MCU这一路线,就是把CPU、内存、Flash都集中在一个芯片上,它再搭配其他外设备就可以构建一个完整的系统。MCU的发展经历过8位8051单片机、16位AVR单片机、32位STM单片机等等:

在这里插入图片描述

我们使用的51单片机、STM32单片机,一般都只是用来处理比较简单的事务,应用场景比较单一。我们使用的手机,里面的主芯片更加复杂,它既含有CPU,也含有用于数据处理的DSP、用于图形显示的GPU。使用这类主芯片设计出来的电路板更加复杂,它的性能甚至不弱于个人电脑:

在这里插入图片描述

为了跟个人电脑相区分,这些使用含有CPU电子产品,被称为嵌入式系统、嵌入式产品、嵌入式板卡。

嵌入式板卡就是一台形状不一样的电脑,跟电脑相比,可以引入几个概念:

1.CPU (Central Processing Unit)

中央处理器,在PC机它是一个独立的芯片。

在嵌入系统中,它是芯片里的一个单元,跟其他模块比如USB、UART、音频组成一个芯片。

众所周知的三级流水线:取址、译码、执行的对象就是CPU,差不多所有的CPU的运作原理可分为四个阶段:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。

CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码,并执行指令。所谓的计算机的可编程性主要是指对CPU的编程。

2.MPU (Micro Processor Unit)

微处理器单元,其作用等同于在PC上使用的CPU,它也只仅仅是一个处理器,需要配合内存、Flash等外设才可以使用。

现在,除了个人电脑上的CPU,基本上找不到MPU了。并且我们一般不把电脑上的CPU当作MPU,毕竟它也是挺大的,并不“微小”。

3.MCU (Micro Controller Unit)

微控制器单元,有时又称为单片机。

MCU内部集成了处理器和各类模块,比如USB控制器、UART控制器、内存、Flash等等。只需要外接少量的器件,就可以搭建一个电子系统。

C51芯片、STM32等芯片,都是MCU。

MCU芯片内部的内存或Flash,容量在几KB、几百KB、几MB的量级,一般不再需要外接内存或Flash。

4.SoC(System on Chip)

SoC(System on Chip,整体的一个电路系统,完成一个具体功能的东西):指的是片上系统,MCU只是芯片级的芯片,而SoC是系统级的芯片,它既MCU那样有内置RAM、ROM同时又像MPU那样强大,不单单是放简单的代码,可以放系统级的代码,也就是说可以运行操作系统(以Linux OS为主)(将就认为是MCU集成化与MPU强处理力各优点二合一)。

5.Application Processors

手机中的主芯片跟MCU类似,也是集成了处理器和各类模块。但是它的性能已经极大提升,可以外接几GB的内存、几GB的Flash。

在手机中,这个主芯片一般用来处理显示、输入,运行用户的程序,所以称它为“Application Processors”。

“Application Processors”的概念可以扩展到其他场景,不再局限于手机。

跟MCU进行比较,Application Processors有以下不同:

  • a. 集成了更多的模块:

    • Application Processors内部集成了更多的模块,比如用于数据处理的DSP、用于图形显示的GPU,甚至有多个处理器。
    • 这里又引入一个概念“片上系统”(SoC,System on Chip),SoC的本意是在一个芯片上就可以搭建完整的系统。
    • 但是这个概念在日常使用中比较宽泛:MCU芯片也可以称为SoC,Application Processors也可以称为SoC,即使它们还必须外接内存/Flash等外设才可以运行。
    • 在以前的文档中涉及SoC时,意指比较复杂的系统;这时候MCU不属于SoC,因为MCU比较简单。但是时代在发展,MCU也越来越复杂了,所以把MCU也当作SoC也是可以的。
    • 在手机电路板中,可用空间非常小。Application Processors还需要搭配内存芯片才可以使用,于是发展出了一种名为package-on-package (PoP)的工艺:在电路板上先焊接Application Processors,在Application Processors上面再焊接内存芯片,即2个芯片叠在一起。
  • b. 运行的操作系统不同:

    • MCU上一般不运行操作系统,或是运行一些资源耗费较小的小型实时操作系统(RTOS)。
    • MCU一般用来处理实时性要求高的事情,处理一些比较简单的事情。
    • Application Processors基本上都会运行比较复杂的操作系统(比如Linux),在操作系统上运行多个APP。

在这里做个总结:CPU发展从MPU开始并分为两个路线,一条线路是专用CPU(比如我们个人电脑上的CPU),另一条线路是走集成路线,把CPU与其他模块集成到一起形成MCU(微控制器),MCU继续发展形成AP(应用处理器)。注意:对于芯片可以分为两类:MCU与AP,但在日常工作中,与MCU对应的除了AP还有MPU,MCU是用来跑单片机,而AP/MPU是用来跑Linux操作系统,这里会与前面的总结冲突,我们只需要知道AP/MPU是与MCU相对的即可。

二、哈弗架构与冯诺伊曼架构

在这里插入图片描述

CPU架构可以分为哈弗架构与冯诺伊曼架构。哈弗架构中指令与数据分开存放,CPU可以同时读入指令、读写数据。冯诺伊曼架构中指令、数据混合存放,CPU依次读取指令、读写数据,不可同时操作指令和数据。

ARM公司的芯片,ARM7及之前的芯片是冯诺伊曼架构,ARM7之后使用“改进的哈弗架构”。“改进的哈弗结构”如下所示:

在这里插入图片描述

在“改进的哈弗架构”里,指令和数据在外部存储器中混合存放;CPU运行时,从指令cache中获得指令,从数据cache中读写数据。

三、XIP概念

eXecute In Place, 本地执行。可以不用将代码拷贝到内存,而直接在代码的存储空间运行。

四、嵌入式系统硬件组成

一句话引出整个嵌入式系统: 支持多种设备启动

问题引出:

a. 系统支持SPI FLASH启动,
这意味着可以运行SPI FLASH上的代码

b. 但是SPI FLASH不是XIP设备,,
cpu无法直接执行里面的代码

问题来了,
CPU如何执行SPI FLASH上的代码?
一上电, CPU执行的第1个程序、第1条指令在哪里?

答案:
a. ARM板子支持多种启动方式:XIP设备启动、非XIP设备启动等等。
比如:Nor Flash、SD卡、SPI Flash, 甚至支持UART、USB、网卡启动。
这些设备中,很多都不是XIP设备。

问:既然CPU无法直接运行非XIP设备的代码,为何可以从非XIP设备启动?
答:上电后,CPU运行的第1条指令、第1个程序,位于片内ROM中(ROM是只读的,同时用C语言编写即可),它是XIP设备。
这个程序会执行必要的初始化,
比如设置时钟、设置内存;
再从"非XIP设备"中把程序读到内存;
最后启动这上程序。

猜测: ARM芯片内部有很多部件,这是一个片上系统(System on chip),
      比如有:
	  cpu
	  rom(只读)
	  ram(可读可写但容量较小)
	  memory controller --- ddr
	  sd/mmc controller --- sd card
	  spi controller    --- spi flash
	  usb controller    --- usb storage device
	  uart controller
	  ......
	  interrtupt controller

b. 跟PC的类比
CPU ---- 单独的芯片
启动设备 ---- BIOS芯片
DDR ---- 单独的可拔插式模块
存储设备 ---- SATA硬盘,可拔插
usb controller …

五、嵌入式系统启动流程概述

主芯片内部有ROM,ROM程序协助从非XIP设备启动。
以SD卡启动为例。
而CPU只能运行XIP设备中的程序
ROM程序做什么?
显然:ROM需要把SD卡上的程序读到内存里(片内RAM或是片外的DDR)

ROM程序要做的事情:
a. 初始化硬件
初始化时钟,提高CPU、外设速度
初始化内存:DDR需要初始化才能使用
初始化其他硬件,比如看门狗、SD卡等

b. 从外设把程序复制到内存
b.1 支持那么多的启动方式,SD卡、SPI FLASH、USB DISK,
怎么选择?
通过跳线,选择某个设备;

通过跳线,选择一个设备列表,按列表顺序逐个尝试

不让客户选择,按固定顺序逐个尝试

b.2 内存那么大,把程序从SD卡等设备,复制到内存哪个位置?复制多长?
烧写在SD卡等设备上的程序,含有一个头部信息,里面指定了内存地址和长度;

不给客户选择,程序被复制到内存固定的位置,长度也固定。

b.3 程序在SD卡上怎么存?
原始二进制(raw bin),

作为一个文件保存在分区里

c. 执行新程序

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

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

相关文章

【架构设计】多级缓存:应用案例与问题解决策略

【架构设计】多级缓存:应用案例与问题解决策略 多级缓存系统的工作原理及其在提升应用性能方面的关键作用。通过对比本地缓存与分布式缓存的特点 | 原创作者/编辑:凯哥Java | 分类:架构设计系列教程 多级缓存…

模拟电路分析基础知识总结笔记(电子电路分析与设计前置知识)

必备条件 电子电路的直流分析电子电路的正弦稳态分析RC电路的瞬态分析戴维南定理和诺顿定理拉普拉斯变换(看不懂,根本看不懂) 电子电路的直流分析 欧姆定律 ​ 在恒定温度下,电压与电流成正比,电压与电阻成正比&am…

Java-数据结构-优先级队列(堆)-(二) (゚▽゚*)

文本目录: ❄️一、PriorityQueue的常用接口: ➷ 1、PriorityQueue的特性: ➷ 2、使用PriorityQueue的注意: ➷ 3、PriorityQueue的构造: ☞ 1、无参数的构造方法: ☞ 2、有参数的构造方法: …

DCMM介绍

目录 一、介绍 二、核心摘要 三、体系大纲 四、能力评估 1、过程与活动 2、等级判定依据 3、访谈对象 一、介绍 通过阅读本书,您将洞悉国际数据框架体系,并掌握国家对于数据管理能力的权威评估标准与等级划分。本书详尽阐述了数据管理领域的八大核心能力域,以及这八大…

Flask、Werkzeug 和 WSGI 间的关系

一.Flask、Werkzeug和 WSGI 关系 1.WSGI Web 架构 Flask 是一个基于 Werkzeug 和 Jinja2 模板引擎的轻量级 Web 框架。Werkzeug 是 Flask 的底层 WSGI 工具包,它提供了 WSGI 服务器、请求和响应对象、路由等基础功能,Flask 在此基础上构建了更高级的 W…

HelpLook VS GitBook,在线文档管理工具对比

在线文档管理工具在当今时代非常重要。随着数字化时代的到来,人们越来越依赖于电子文档来存储、共享和管理信息。无论是与团队合作还是与客户分享,人们都可以轻松地共享文档链接或通过设置权限来控制访问。在线文档管理工具的出现大大提高了工作效率和协…

性能调优

性能调优 应用程序在运行过程中经常会出现性能问题,比较常见的性能问题现象是: 通过top命令查看CPU占用率高,接近100甚至多核CPU下超过100都是有可能的。请求单个服务处理时间特别长,多服务使用skywalking等监控系统来判断是哪一…

电子束光刻过程中的场拼接精度

以下内容如有错误,请不吝指教,感谢! 1、EBL为什么会出现场拼接误差,如何解决? ChatGPT 说: 在电子束光刻(EBL)过程中,SOI(硅绝缘体)芯片上出现*…

计算机毕业论文题目:设计与实现一个校园通知信息系统

设计与实现一个校园通知信息系统是一个涉及多个方面的复杂项目,它旨在提高信息传递的效率和准确性,确保学生、教师以及学校管理人员能够及时获取到重要的通知信息。以下是关于如何设计并实现这样一个系统的详细说明: 1. 需求分析 用户…

【高中数学/不等式/数学归纳法/等比数列】证明伯努利不等式(1+h)^n>1+nh的三种方式

【伯努利不等式】 (1h)^n>1nh (h>0,n为大于1的自然数) 【数学归纳法证法】 证明: n2时,(1h)^212hh^2>12h 不等式成立 n3时,(1h)^313h3h^2h^3>13h 不等式成立 假设nk时,有(1h)^k>…

机房三大网络拓扑图,太实用了

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 下午好,我的网工朋友。 通常来说,机房的三大网络拓扑图指的是星型拓扑、总线型拓扑和环形拓扑。 在实际的机房网络设计中…

vue项目加载cdn失败解决方法

注释index.html文件中 找到vue.config.js文件注释、

MySQL_图形管理工具简介、下载及安装(超详细)

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :&#x1…

【VUE3.0】动手做一套像素风的前端UI组件库---先导篇

系列文章目录 【VUE3.0】动手做一套像素风的前端UI组件库—Button 目录 系列文章目录引言准备素材字体鼠标手势图 创建vue3项目构建项目1. 根据命令行提示选择如下:2. 进入项目根目录下载依赖并启动。3. 设置项目src路径别名,方便后期应用路径。4. 将素…

Debian 12上安装google chrome

当前系统:Debian 12.7 昨天在Debian 12.7上安装Google Chrome时,可能由于网络原因,导入公钥始终失败。 导致无法正常使用命令#apt install google-chrome-stable来安装google chrome; 解决办法: Step1.下载当前google chrome稳…

C++性能优化-代码角度

减少跳转/分支语句和函数调用 原因 分支语句:当 CPU 执行到分支语句时,将会进行分支预测(对大部分PC)。如果分支预测错误,就会清空已经预取和执行的部分指令,重新从正确的分支开始取指和执行,…

某东-h5st参数逆向分析

目标:商品搜索翻页接口 直接搜索h5st就可以搜到,所有可疑位置都打上断点,然后翻页,最终断点位置: window.PSign.sign(colorParamSign)是异步代码,colorParamSign是传入的参数,执行后把包含h5st…

基于YOLOv5的教室人数检测统计系统

基于YOLOv5的教室人数检测统计系统可以有效地用于监控教室内的学生数量,适用于多种应用场景,比如 自动考勤、安全监控或空间利用分析 以下是如何构建这样一个系统的概述,包括环境准备、数据集创建、模型训练以及如何处理不同类型的媒体输入…

【机器学习】--- 序列建模与变分自编码器(VAE)

在机器学习领域,序列建模与变分自编码器(Variational Autoencoder, VAE) 是两个至关重要的技术,它们在处理时间依赖性数据与复杂数据生成任务中都发挥着关键作用。序列建模通常用于自然语言处理、语音识别等需要保持顺序关系的任务…

【老板必看!】电脑怎么看使用软件时间记录?一文读懂5种超实用的方法!

在企业管理中,电脑虽不善言语、不会说话,但会留下无数线索,就像一场未解之谜,等待着各位福尔摩斯得到来,去揭开它的秘密面纱。 你是否曾好奇过,当你不在的时候,员工都在用电脑都在忙些什么&…