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结构,但和我们常见 ...
随机推荐
- Symbol详解
Symbol Symbol是es6引入的一个新的原始数据类型,是一个独一无二的值. 目前为止,js的数据类型有以下几种: 数据类型 说明 undefined undefined null null b ...
- ArcGIS Pro SDK 003 如何调用Toolbox
1.如何调用普通的Tool ArcGIS中的Toolbox非常强大,做二次开发的时候,必不可少的会调用,在ArcObjects SDK中,每个Tool都会有自定义的类对应,例如栅格转矢量数据,定义在E ...
- 有趣的python库-moviepy
moviepy-视频处理 安装: pip install moviepy 基本使用: from moviepy.video.compositing.CompositeVideoClip import ...
- aspnetcore读取配置【源码分析】
总的逻辑 继承 IConfigurationSource 这个接口的子类是配置源 ,其中的build方法,创建并返回对应的ConfigurationProvider. 继承 IConfiguratio ...
- Python实战项目1-开发流程需求分析/基础环境搭建
软件开发流程 # 真正的企业里软件从立项到交付整个过程 -立项:确定公司要开发这个软件 公司高层 -软件来源 -产品经理设计出来的---->互联网项目 互联网公司 -用户(医院,政府部门,企业. ...
- Vue 计算属性与普通的函数有什么区别?
计算属性的优势 计算属性的作用是计算复杂的逻辑,并返回一个结果,提供给模板多次使用:只要依赖的响应式数据没有改变,计算属性就不会重新执行,而是直接返回它存储的缓存.所以,节省不必要的开销. 模板语法的 ...
- LeetCode算法训练-贪心算法 455.分发饼干 376. 摆动序列 53. 最大子序和
欢迎关注个人公众号:爱喝可可牛奶 LeetCode算法训练-贪心算法 455.分发饼干 376. 摆动序列 53. 最大子序和 前置知识 贪心算法核心是找局部最优解,通过局部最优推导出全局最优 Lee ...
- python编辑excel表格文件的简单方法练习
一.创建一个Excel文件from openpyxl import Workbook #需要用到openpyxl模块来操作Excel文件.openpyxl需要先安装.#实例化对象wb = Workbo ...
- 轻量级CI/CD发布部署环境搭建及使用_05_安装宿主机环境(jdk、nodejs、maven、python2)
轻量级CI/CD发布部署环境搭建及使用_05_安装宿主机环境(jdk.nodejs.maven.python2) 尽自己的绵薄之力,为开源技术分享添砖加瓦 本篇幅较多,请按步骤实验安装,截图中版本若有 ...
- sql查询多个结果字段通过逗号分隔为同一行显示、sql查询结果有符号分隔的字段拆分多行显示
一.sql查询多个结果通过逗号分隔为同一行显示 sql查询数据结果 select e.ctrl_desc from t_ctrl_entry e inner join CodeGroupKeyCode ...