MCU构成及其运行原理
MCU构成及其运行原理
1. MCU概念
MCU,微控制单元(Microcontroller Unit) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是把中央处理器CPU(Central Processing Unit)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。
2. MCU构成

MCU一般有以下几个部分组成:
- CPU
- Memory(Flash/RAM)
- Bus
- Peripheral
3. 头脑风暴 - 模拟MCU运行
3.1 准备工作
和图灵机类似,我们在模拟MCU运行时,需要做一些前期准备工作。
(1)准备一段程序,程序存储在memory中
(2)准备一组数据,数据同样存储在memory中
(3)设置PC指针,指向Address 0处
MCU中CPU的Control Unit控制单元,负责取指(Fetch)、译码(Decode)、执行(Excute)这样的循环运行。
CPU从memory取得指令,进行译码识别指令的需要,并执行对应的操作,为了CPU能够识别我们写的操作,进行如下规定:
| 指令 Instruction | 指令描述 Description | 操作码 Opcode | 操作数 Operand |
|---|---|---|---|
| xxxx-00-01 | 从Address中加上数据到寄存器0中 | LOAD: 01 | Register_0: 00 Address: xxxx |
| xxxx-01-01 | 从Address中加上数据到寄存器1中 | LOAD: 01 | Register_1: 01 Address: xxxx |
| NN-01-00-11 | 将Register_0和Register_1中的数据相加, 得到的结果保存在Register_0中 |
ADD: 11 | Register_0: 00 Register_1: 01 |
| xxxx-00-10 | 将Register_0中的值存储到Address中 | STORE: 10 | Register_0: 00 Address: xxxx |
3.2 MCU模拟运行
根据上一节的准备工作,MCU当前状况如下图所示:

(1)取指
此时,PC指针指向Address 0处,取得指令01000001

(2)译码
根据上一节的规定,01000001指令代表的含义为:从将Address 4中的数据取出存放到Register 0中

(3)执行
根据指令译码的结果,将Address 4中的数据00000010存放到Register 0 中

接着执行下一条指令,重复上面的操作,每步执行如下:
PC 指向Address 1,取得指令01010101,译码执行,将address 5中的数据存放到Register 1中。

PC 指向Address 2,取得指令00010011,译码执行,将Register 0 和 Register 1 中的数据相加,结果存放到Register 0中。

PC 指向Address 3,取得指令01100010,译码执行,将Register 0中的数据存放到Address 6中。

至此,MCU完成了一段程序的执行,计算了3+2,得到的结果5保存在Memory中。
:::tip
顺利完成了MCU的模拟运行,其中的一些问题还需要思考:
- 程序中的指令是我们自己定义的,而目前实际MCU产品中运行的都是什么样的指令?
- 程序中都是0和1这样的数据,实际编程开发中,是写0、1这样的数据吗?
- 当前程序是从Address 0、Address 1、Address 2、Address3这样依次执行的,实际应用中,会不会一直是这样顺序执行呢?
:::
MCU构成及其运行原理的更多相关文章
- iis6.0与asp.net的运行原理
这几天上网翻阅了不少前辈们的关于iis和asp.net运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望前辈们不吝赐教 ...
- ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)
ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.Configure ...
- ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行
ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行 核心框架 ASP.NET Core APP 创建与运行 总结 之前两篇文章简析.NET Core 以及与 .NET Framew ...
- 场景9 深入RAC运行原理
场景9 深入RAC运行原理 OPS(Oracle Parallel Server)通过磁盘的节点判定数据是否最新 —> Data Guard —> RAC(Real Ap ...
- Camel运行原理分析
Camel运行原理分析 以一个简单的例子说明一下camel的运行原理,例子本身很简单,目的就是将一个目录下的文件搬运到另一个文件夹,处理器只是将文件(限于文本文件)的内容打印到控制台,首先代码如下: ...
- Web程序的运行原理及流程(一)
自己做Web程序的开发也有两年多了 从最开始跟风学框架 到第一用上框架的欣喜若狂 我相信每个程序员都是这样过来的 在大学学习一门语言 学会后往往很想做一个实际的项目出来 我当时第一次做WEB项目看 ...
- Asp.net WebPages框架运行原理浅析(转)
在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和符合Web标准,编写方式更接近于PHP和以前的Asp,和使用 WebFo ...
- ASP.NT运行原理和页面生命周期详解及其应用
ASP.NT运行原理和页面生命周期详解及其应用 1. 下面是我画的一张关于asp.net运行原理和页面生命周期的一张详解图.如果你对具体不太了解,请参照博客园其他帖子.在这里我主要讲解它的实际应用. ...
- jsp学习--JSP运行原理,九大隐式对象和JSP常用标签
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- Linux X Window System运行原理和启动过程
本文主要说明X Window System的基本运行原理,其启动过程,及常见的跨网络运行X Window System. 一) 基本运行原理 X Window System采用C/S结构,但和我们常见 ...
随机推荐
- Zstack私有云平台运行实践
很高兴昨天加了大名鼎鼎的杰杰站长的微信,系统运行的怎么样,一定不能只是给力两个字完事,下面就上具体的: 经过这几年的运行费和预研经费的支持,组里除了在线的几台服务器外,慢慢离线也积攒了几台用作调试和做 ...
- noip2020模拟赛 背包 (knapsack)
题目 区间 \(01\) 背包 \(1 \le l_i \le r_i \le n \le 20000,1 \le q \le 100000,1 \le m_i \le 500, 1 \le w_i ...
- Cobalt Strike 之: Malleable C2 流量伪造与加密
郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全人人有责,共同维护网络文明和谐. 目录 ...
- Vulhub 漏洞学习之:Adobe ColdFusion
Vulhub 漏洞学习之:Adobe ColdFusion 目录 Vulhub 漏洞学习之:Adobe ColdFusion 1 Adobe ColdFusion 文件读取漏洞(CVE-2010-28 ...
- 使用Shapefile C Library读取shp文件并使用OpenGL绘制
1. 概述 坐标数据是空间数据文件的核心,空间数据的数据量往往是很大的.数据可视化是GIS的一个核心应用,绘制海量的坐标数据始终是一个考验设备性能的难题,使用GPU进行绘制可有效减少CPU的负载,提升 ...
- Oracle 11g 单机服务器ASM部署
Oracle oracle,相比都有所了解,是一家企业级的数据库公司(收费),上图是oracle官网,也是对外的服务平台 oracle有自己独特的安装方式:ASM : 自动存储管理(ASM,Au ...
- 查询自增ID断点的地方
方法一 SELECT id+1 AS ID FROM table WHERE id+1 not in (SELECT id FROM table);
- Docker中使用Jenkins(3)
一.前言 上一文章介绍了docker-compose,本文介绍Jenkins自动化部署. 二.Jenkins dockerfile文件切记右键属性复制到输出目录调整为:如果较新则复制,否则在publi ...
- Centos7 安装mysql 5.7 教程
安装 yum 源 需要在系统上启用 MySQL 5.7 Community Release YUM 存储库.用于 yum 存储库配置的 rpm 包可在 MySQL 的官方网站上找到. 首先将最新的My ...
- pdf中添加二维码无法扫描解决方案
正常行驶的bitmap类型的二维码格式,加载到PDF中,将会导致二维码失真,无法扫描. 矢量图可根据尺寸大小进行调节,不会出现失真模糊情况 所用依赖 <PackageReference Incl ...