嵌入式学习笔记——概述

前言

断更很长时间了,写博客确实是一件考验能力的事情,也能让自己发现自身的不足,之所以这么长时间没有更新就是因为感觉自己能力还不太够,沉淀的还不够多。此系列是笔者对于二刷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的芯片介绍以及其开发环境的搭建。

M4系列目录

1.嵌入式学习笔记——概述
2.嵌入式学习笔记——基于Cortex-M的单片机介绍
3.嵌入式学习笔记——STM32单片机开发前的准备
4.嵌入式学习笔记——STM32硬件基础知识
5.嵌入式学习笔记——认识STM32的 GPIO口
6.嵌入式学习笔记——使用寄存器编程操作GPIO
7.嵌入式学习笔记——寄存器实现控制LED小灯
8.嵌入式学习笔记——使用寄存器编程实现按键输入功能
9.嵌入式学习笔记——STM32的USART通信概述
10.嵌入式学习笔记——STM32的USART相关寄存器介绍及其配置
11.嵌入式学习笔记——STM32的USART收发字符串及串口中断
12.嵌入式学习笔记——STM32的中断控制体系
13.嵌入式学习笔记——STM32寄存器编程实现外部中断
14.嵌入式学习笔记——STM32的时钟树
15.嵌入式学习笔记——SysTick(系统滴答)
16.嵌入式学习笔记——M4的基本定时器
17.嵌入式学习笔记——通用定时器
18.嵌入式学习笔记——PWM与输入捕获(上)
19.嵌入式学习笔记——PWM与输入捕获(下)
20.嵌入式学习笔记——ADC模数转换器
21.嵌入式学习笔记——DMA
22.嵌入式学习笔记——SPI通信
23.嵌入式学习笔记——SPI通信的应用
24嵌入式学习笔记——IIC通信

  • 20
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 嵌入式软件工程师2023年的工作计划可能包括: 1. 继续提升个人技能,学习新的编程语言和开发工具。 2. 参与公司的嵌入式软件项目,负责软件开发、测试和维护。 3. 参加嵌入式软件相关的培训和研讨会,与行业专家交流。 4. 协助管理团队,帮助解决技术问题,提升团队效率。 5. 与客户沟通,了解项目需求,协助完成项目。 6. 参与公司的技术决策,为公司的嵌入式软件业务发展提供建议。 7. 关注行业动态,了解最新的技术趋势,为公司的发展作出贡献。 ### 回答2: 嵌入式软件工程师是一种技术领域的专业人员,主要负责开发和维护嵌入式系统中的软件。为了2023年的工作计划,作为嵌入式软件工程师,我将聚焦以下几个方面: 首先,我将继续深入学习和掌握新的嵌入式软件开发技术和工具。随着科技的发展,嵌入式系统的复杂性与日俱增,因此,不断提升自己的技术能力和知识储备将是我的首要任务。我将密切关注新的硬件平台和嵌入式操作系统的发展,学习并应用新的开发工具和编程语言,以提高工作效率和软件的质量。 其次,我将加强与硬件团队的合作和沟通。嵌入式软件开发离不开紧密的硬件支持,因此与硬件团队的密切合作将是我工作计划的重要一环。我将与硬件工程师和硬件设计团队保持密切沟通,全面理解嵌入式系统的硬件架构和技术要求,以确保软件与硬件之间的良好兼容性和协同工作。 同时,我将注重嵌入式软件的测试和调试工作。在嵌入式软件开发过程中,测试和调试是不可或缺的环节。我将采用适合的测试方法和工具,对软件进行全面的功能测试和性能测试,以确保软件的质量和稳定性。在遇到问题时,我将进行详尽的调试工作,找出并解决可能存在的bug和错误。 最后,我将积极参与团队的项目管理和文档编写工作。作为一个嵌入式软件工程师,除了具备技术能力外,项目管理和文档编写能力也是必备的技能。我将积极参与项目计划和管理,确保项目的按时交付和顺利进行。同时,我也将编写清晰、规范的文档,记录软件设计和开发过程中的重要信息和技术细节,以方便团队成员的理解和参考。 综上所述,作为嵌入式软件工程师,我的2023年工作计划将聚焦于学习和掌握新的技术,与硬件团队紧密合作,注重测试和调试工作,以及积极参与项目管理和文档编写工作。通过这些努力,我希望能够提高自己的技术能力和工作效率,为嵌入式软件开发和项目顺利进行做出积极贡献。 ### 回答3: 作为嵌入式软件工程师,我在2023年有以下工作计划: 1. 提高技术能力:持续学习和掌握新的嵌入式软件开发技术和工具。了解最新的硬件平台和处理器架构,掌握实时操作系统和嵌入式系统设计。不断提升自己的编程能力和解决问题的能力,以应对不断变化的需求和挑战。 2. 参与项目开发:积极参与嵌入式软件项目的开发和实施。与团队成员合作,根据项目需求进行软件架构设计和开发。确保软件的稳定性、可靠性和性能,并在项目进展中及时调整和优化软件代码。 3. 质量控制和测试:注重质量控制和测试工作,确保嵌入式软件的功能完整性和稳定性。进行单元测试、集成测试和系统测试,发现并修复软件中的缺陷和问题。积极参与软件验证和验证工作,确保软件符合设计规范和标准。 4. 支持用户和问题解决:及时响应用户的需求和问题,并提供相应的嵌入式软件解决方案。与客户或用户进行沟通,了解他们的需求并提供技术支持和指导。与团队合作,解决用户遇到的技术问题,并提供解决方案或改进建议。 5. 持续改进和创新:关注行业动态和技术趋势,不断改进自己的工作方法和技术能力。积极参与技术交流和培训活动,与同行学习分享经验。尝试采用新的开发工具和方法,提高工作效率和软件质量。 总之,作为嵌入式软件工程师,我将在2023年全力以赴地开展工作,努力提升自己的技术能力,积极参与项目开发,保证软件的质量和稳定性,提供优质的技术支持,并持续改进和创新,以应对日益复杂的嵌入式软件开发挑战。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值