当前位置: 首页 > news >正文

嵌入式学习笔记——概述

嵌入式系统概述

  • 前言
  • “嵌入式系统”概念
    • 1.是个啥?
    • 2.可以干啥?
    • 3.有哪些入坑方向?
    • 4.入坑后可以有多少薪资?
  • 单片机
    • 1.什么是单片机?
    • 2.架构简介
    • 3.基于ARM架构的单片机结构简介
  • 总结

前言

断更很长时间了,写博客确实是一件考验能力的事情,也能让自己发现自身的不足,之所以这么长时间没有更新就是因为感觉自己能力还不太够,沉淀的还不够多。此系列是笔者对于二刷M4的学习笔记,之前STM32都是自己在本科期间刷视频,做比赛来学习的,学校并没有开设课程,到现在的感觉就是能用,但是差点意思,为了补齐这点意思,笔者觉得回头再来一遍。文中如有不足,希望大家狠狠的提出来。

“嵌入式系统”概念

在入坑嵌入式行业之前,咱们首先得搞清楚嵌入式系统是个啥,可以干啥,有哪些入坑方向,入坑后可以有多少薪资。

1.是个啥?

关于是个啥这个问题,似乎没有严格规范的表述,但大致意思都查不到,以下是来自“C知道的”答案。
在这里插入图片描述
同样,百度百科给出的定义也是大差不差的,都给出了定义:嵌入式是一种特殊的计算机系统,特殊之处在于:
1.由于要嵌入其他设备,其功耗、体积等与常规的计算机系统有差异,它的功耗小、体积小。
2.它的功能相对专一,都是为了实现某一个系统的控制、监控、执行任务;
3.它会根据任务需求的不同定制化的设计对应的硬件、软件。

2.可以干啥?

关于可以用它做什么东西,可以借用人们描述Matble的话来说,它也是除了不会生孩子,其他的事儿他都可以完成。我们最常使用的手机、家用电器、车载电子都是一个嵌入式系统,或者说其是由多个嵌入式系统集成起来的一个系统整体。

3.有哪些入坑方向?

正如关于嵌入式系统的概念描述,入坑嵌入式的方向,有硬件和软件两大类,其中软件方向有
单片机– Linux–DSP–FPGA–Android(安卓)
硬件主要就是PCB的绘制以及原理图的设计

4.入坑后可以有多少薪资?

关于薪资,笔者没有仔细的去调查,仅仅是自己的一点看法,单片机的话不学Linux或者上位机的话15k封顶,学了Linux或者C++会更进一步。
单片机工程师:
在这里插入图片描述
在这里插入图片描述

嵌入式工程师:
在这里插入图片描述

在这里插入图片描述
硬件方面,只是layout的话,薪资一般也是15k左右封顶,经验积累多,有原理图设计能力的也能再上一个台阶。
在这里插入图片描述

单片机

前面的招聘职位要求已经明确提出了熟悉使用一种单片机的需求,嵌入式的学习一般都是从一款单片机开始的,单片机是什么呢?

1.什么是单片机?

以下是来自百度百科的解释:
单片机:(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM只读存储器ROM多种I/O口中断系统定时器/计数器等功能(可能还包括驱动电路脉宽调制电路模拟多路转换器A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
单片机的前身是单板计算机,随着芯片工艺的提高和技术水平的精进,逐渐发展成为了集成于一体小而完善的微型计算机系统。
在这里插入图片描述
概括的讲:一块单片机就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
有关单片机更多的介绍请参考百度百科有关单片机的介绍。
前面提到过单片机已经广泛应用于市面上,生活中处处都有单片机的应用,而这些单片机大是多采用ARM架构进行设计制作的,在工控、消费类电子大多使用的是ARM系芯片例如STM32、MM32、CW32、NXP K60等等;而在物联网这些邻域,一批RSIC-V架构的单片机占据了一定的市场,例如乐鑫的ESP32、海思的Hi3861等,而电脑这些复杂的CPU又是采用的X86的架构,例如Intel 的i5 13500H、AMD的R7 7735H 等CPU都是X86架构。
那么,什么是架构呢,ARM架构、X86架构以及RSIC-V架构三者之间又有什么样的区别联系呢。

2.架构简介

关于架构笔者自己的理解就跟房子的毛坯房一样,而不同的架构就是不同开发商的毛坯房,各有各的优势。
首先,对比一下X86架构与ARM架构,为什么先对比这两者呢,是因为他们是老对头,而RSIC-V是后起之秀。
说起来是X86架构和ARM架构的对比,其实落到底层是CSICRISC两者之间的恩怨情仇。
CSIC:
CSIC在这可不是下饺子那位。
误解:
http://www.csic.com.cn/
正解:CISC: Complex Instruction Set Computer复杂指令集计算机,它就是在发展过程中不断引进指令集。
举个不怎么恰当的例子,假设“printf(“%d\n”,1+1)”是一条指令,我们知道这条指令的最终输出是2,复杂指令集就会收录这条指令,以后再识别到这条指令就直接输出2,省去了中间的逻辑计算过程,这种做法会极大地提高执行效率对于处理特定的任务有优势,但是与此同时,随着时间的延长,指令会越来越多,会带来指令集越来越庞大,也越来越难维护的问题,而且芯片内部的电路也会因此而变得更加复杂,单位面积所需晶体管也就更多,功耗也就成了问题。
代表:
Intel i5 13500H, AMD R7 7735等等
RSIC:
RSIC: Reduced Instruction Set Computer 精简指令集计算机,而精简指令集计算机是在整过程中不断去优化指令,力求用逻辑电路实现功能,同样是上面的例子,对于“printf(“%d\n”,1+1)”,其采取的措施就是运用逻辑电路进行计算出结果并输出2。这种处理方式能够节省专开指令的逻辑电路,力求用最少得逻辑电路实现功能,单位面积的晶体管数量少,功耗低,但是会造成运算过程较长的问题。
此类ARM架构的芯片代表作就太多了例如消费终端类处理器麒麟9000,骁龙8gen2等等
在这里插入图片描述
在这里插入图片描述
图片来自于B站UP主 极客湾

还有我们常见的STM32、GD32、CW32
在这里插入图片描述
因此二者各自有各自的优点也有各自的缺点。
然后再来说一说RSIC-V的可以发现RSIC-V的命名和上面的精简指令集计算机相似,只是后面多了一个-V,V就是罗马字母代表的是第五代精简指令集,其与RSIC的差别在于,RSIC-V比较新,而且其实开源的,加上物联网的走热RSIC-V的未来市场或许更值得期待,加上ARM的收费确实逐年离谱,能白嫖谁愿意花钱搞定呢。
此类代表:K210,
ESP32:在这里插入图片描述
图片截取自淘宝店铺——优信电子;
海思Hi3861:
在这里插入图片描述
图片截取自淘宝店铺——优信电子;

关于三者之间的关系和详细简介别的大佬已经详细介绍过了,这两给大家贴几个链接,感兴趣的可以去拜读一下。
1.CISC (复杂指令集)与 RISC(精简指令集)的区别
2.ARM与RISC-V架构的区别
3.ARM 和 x86 有什么区别
4.RSIC-V–第一印象
5.RISC-V架构对比x86、ARM
对比之后还是得回到主角身上,我们学习嵌入式,以及目前市场上最常用的还是ARM架构的芯片,经过前面的介绍,已经可以知道,ARM使用的是精简指令集计算机,发展了这么多年,ARM的架构也早已经分支出了很多类别。
下图是ARM官网给出的关于ARM架构的简介,想要阅读的可以去这个链接——传送门。
在这里插入图片描述
文档告诉我们ARM现在主流的有三类架构,分别是A,R,M,关于这三类的用途介绍如下图所示:
在这里插入图片描述
A系列:A系列主要用作中端处理器,也是就我们现在手机厂商的芯片,我们可以借用上面的一张图,可以看出麒麟9000的CPU部分就是使用的ARM的Cortex-A系架构,当然骁龙亦是如此。
在这里插入图片描述
然后是平时少见的Cortex-R系列,其主要关注实时效应,广泛应用于电动汽车和军工制导。

最后就是我们常见的Cortex-M系列的,此系列的代表作就是STM32、GD32、CW32、K60等等,除此之外我们的手机上还有很多也是用了Cortex-M的架构,如下图所示,除了CPU,还有屏幕驱动、摄像头驱动、电源管理、wifi、蓝牙、4G、5G等等呢个芯片都广泛使用了Cortex-M的架构,而4G、5G以及wifi由于实时性的需求还是用了ARM的Cortex-R架构。
在这里插入图片描述

3.基于ARM架构的单片机结构简介

上面提到了Cortex-M,他到底是什么,与单片机又有什么关系呢?
前面提到过,单片机(MCU)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM只读存储器ROM多种I/O口中断系统定时器/计数器等功能(可能还包括驱动电路脉宽调制电路模拟多路转换器A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。
对照这个定义,Cortex-M就相当于单片内部的中央处理器(CPU)以及其他调试和系统管理的整体,但是不包含片内外设,他仅仅是一个核心部件。下图用Cortex-M3举了一个例子:
在这里插入图片描述
在这里插入图片描述
芯片商再获得到ARM的授权后,就可以拿回Cortex-M的CPU作为控制核心,在其基础上进行外设的添加,增加内存、各类片内外设,例如SARM、增加I2C、SPI、UART、PWM、ADC、DAC、PWM等等片内外设,形成自家的单片机型号,而后仿真,打样、验证,最后制作成我们使用的单片机成品。
在这里插入图片描述经过上述流程,一个ARM架构的单片机才会出现在我们这些开发者的手中。
搞清楚ARM架构与单片机的关系后,我们还需要了解一下Cortex-M的分类
ARM Cortex-M 处理器家族中现有8款处理器成员,他们的用途和分类如下图所示:
在这里插入图片描述
图片来自下面这个链接,内部详细介绍了ARM Cortex-M处理器,感兴趣的小伙伴可以去了解一下。
一文看懂ARM Cortex-M处理器
我们平时使用较多的是Cortex-M3和Cortex-M4这两个,在权威指南中,对他们的描述如下:
在这里插入图片描述
在这里插入图片描述后面接触较多的就是Cortex-M3和Cortex-M4这两个内核,使用最多的单片机也就是各个厂商根据这个做出来的,所以ARM系芯片有着相似的使用规律,会有做一题而通一类的效果。

总结

本文主要是简述了嵌入式系统的宏观描述,以及一些关于单片机的知识,文中如有不足,欢迎大家批评指正。下一篇预告是Cortex-M的芯片介绍以及其开发环境的搭建。

相关文章:

嵌入式学习笔记——概述

嵌入式系统概述前言“嵌入式系统”概念1.是个啥?2.可以干啥?3.有哪些入坑方向?4.入坑后可以有多少薪资?单片机1.什么是单片机?2.架构简介3.基于ARM架构的单片机结构简介总结前言 断更很长时间了,写博客确实…...

化繁为简高效部署 华为云发布部署服务CodeArts Deploy

​随着互联网、数字化的发展,公司机构与各类企业往往需要进行大量频繁的软件部署,部署设备类型多样,如:本地机器、云上裸金属服务器、云上虚拟机与容器等。面对多种部署模式、分布式复杂运行环境,如何用最短时间、高质…...

注意力机制详解系列(四):混合注意力机制

👨‍💻作者简介: 大数据专业硕士在读,CSDN人工智能领域博客专家,阿里云专家博主,专注大数据与人工智能知识分享。 🎉专栏推荐: 目前在写CV方向专栏,更新不限于目标检测、OCR、图像分类、图像分割等方向,目前活动仅19.9,虽然付费但会长期更新,感兴趣的小伙伴可以…...

Makefiles学习1

初识"Makefiles" 创建一个 “Makefile” 文件 touch Makefile“touch” 用于修改文件或者目录的时间属性,包括访问时间和修改时间,若文件不存在,则重新建立一个新的文件。这里有两个需要我们注意的: 进入并编辑"…...

日志框架以及如何使用LogBack记录程序

使用日志框架可以记录一个程序运行的过程和详情,同时便捷地存储到文件里面,并且性能和灵活性都比较好。日志的体系结构包括两类日志规范接口:Commons Logging,简称:JCL;Simple Logging Facade for Java&…...

集成RocketChat至现有的.Net项目中,为ChatGPT铺路

文章目录前言项目搭建后端前端代理账号鉴权方式介绍登录校验模块前端鉴权方式后端鉴权方式登录委托使用登录委托处理聊天消息前端鉴权方式后端校验方式项目地址前言 今天我们来聊一聊一个Paas的方案,如何集成到一个既有的项目中。 以其中一个需求为例子&#xff1a…...

王道操作系统课代表 - 考研计算机 第三章 内存管理 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 操作系统 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “内存管理” 章节知识点总结的十分全面,涵括了《操作系统》课程里的全部…...

Cypher中的聚合

深解Cypher中的聚合 值或计数的聚合要么从查询返回,要么用作多步查询下一部分的输入。查看数据模型 CALL db.schema.visualization() 查看图中节点的属性类型 CALL db.schema.notetypeproperties() 查看图中关系的属性类型 CALL db.schema.reltypeproperties() C…...

图注意网络GAT理解及Pytorch代码实现【PyGAT代码详细注释】

文章目录GAT代码实现【PyGAT】GraphAttentionLayer【一个图注意力层实现】用上面实现的单层网络测试加入Multi-head机制的GAT对数据集Cora的处理csr_matrix()处理稀疏矩阵encode_onehot()对label编号build graph邻接矩阵构造GAT的推广GAT 题:Graph Attention Netwo…...

项目成本管理中的常见误区及解决方案

做过项目的人都明白,项目实施时间一般很长,在实施期间总有很多项目结果不尽人意的问题。要使一个项目取得成功,就要结合很多因素一起才能作用,其中做好项目成本的管理就是最重要的步骤之一,下面列出了常见的项目成本管…...

墨天轮2022年度数据库获奖名单

2022年,国家相继从高位部署、省级试点布局、地市重点深入三个维度,颁布了多项中国数据库行业发展的利好政策。但是我们也能清晰地看到,中国数据库行业发展之路道阻且长,而道路上的“拦路虎”之一则是生态。中国数据库的发展需要多…...

仓储调度|库存管理系统

技术:Java、JSP等摘要:随着电子商务技术和网络技术的快速发展,现代物流技术也在不断进步。物流技术是指与物流要素活动有关的所有专业技术的总称,包括各种操作方法、管理技能等,物流业采用某些现代信息技术方面的成功经…...

Canvas入门-01

导读: 读完全文需要2min。通过这篇文章,你可以了解到以下内容: Canvas标签基本属性如何使用Canvas画矩形、圆形、线条、曲线、笑脸😊 如果你曾经了解过Canvas,可以对照目录回忆一下能否回答上来 毕竟带着问题学习最有效…...

运算符优先级

醋坛酸味罐&#xff0c;位落跳福豆 醋&#xff1a;初等运算符&#xff1a; () [] -> . 坛&#xff1a;单目运算符&#xff1a; - ~ – * & ! sizeof 右结合 酸&#xff1a;算术运算符&#xff1a; - * / % 味&#xff1a;位移运算符&#xff1a;>> << …...

微信小程序使用scss编译wxss文件的配置步骤

文章目录1、在 vscode 中搜索 easysass 插件并安装2、在微信开发工具中导入安装的easysass插件3、修改 spook.easysass-0.0.6/package.json 文件中的配置4、重启开发者工具&#xff0c;就可用使用了微信小程序开发者工具集成了 vscode 编辑器&#xff0c;可以使用 vscode 中众多…...

一步一步教你如何使用 Visual Studio Code 编译一段 C# 代码

以下是一步一步教你如何使用 Visual Studio Code 编写使用 C# 语言输出当前日期和时间的代码&#xff1a; 1、下载并安装 .NET SDK。您可以从 Microsoft 官网下载并安装它。 2、打开 Visual Studio Code&#xff0c;并安装 C# 扩展。您可以在 Visual Studio Code 中通过扩展菜…...

vue-cli中的环境变量注意点

在客户端侧代码中使用环境变量只有以 VUE_APP_ 开头的变量会被 webpack.DefinePlugin 静态嵌入到客户端侧的包中。你可以在应用的代码中这样访问它们&#xff1a;console.log(process.env.VUE_APP_SECRET)在构建过程中&#xff0c;process.env.VUE_APP_SECRET 将会被相应的值所…...

2.3数据类型

文章目录1. 命名规则2.字符3.数字4.日期5.图片1. 命名规则 字段名必须以字母开头&#xff0c;尽量不要使用拼音长度不能超过30个字符&#xff08;不同数据库&#xff0c;不同版本会有不同&#xff09;不能使用SQL的保留字&#xff0c;如where,order,group只能使用如下字符a-z、…...

Kafka基本概念

什么是Kafka Kafka是一个消息系统。它可以集中收集生产者的消息&#xff0c;并由消费者按需获取。在Kafka中&#xff0c;也将消息称为日志(log)。 一个系统&#xff0c;若仅有一类或者少量的消息&#xff0c;可直接进行发送和接收。 随着业务量日益复杂&#xff0c;消息的种类…...

使用QueryBuilders、NativeSearchQuery实现复杂查询

使用QueryBuilders、NativeSearchQuery实现复杂查询 本文继续前面文章《ElasticSearch系列&#xff08;二&#xff09;springboot中集成使用ElasticSearch的Demo》&#xff0c;在前文中&#xff0c;我们介绍了使用springdata做一些简单查询&#xff0c;但是要实现一些高级的组…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...