发布时间:2023-12-07 13:00
摊牌了我后悔入行了,浅谈为何不该入行嵌入式
\\\\\\插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的(禾厶-亻言-手戈)。最近比较闲,带做毕设,带学生参加省级以上比赛///绿色图标【‟で】liutianwang123
我本来是读研期间一个从事嵌入式学习、研究的研究生(现在已毕业),原本在学校里面一直自以为熟练使用STM32单片机为傲,曾多次参加过电子设计比赛、飞思卡尔智能车比赛(本科),多次参与嵌入式项目(读研),毕业时也曾梦想从事嵌入式行业(无奈专业限制无法从事该方面工作),写这篇文章之前也曾想过靠嵌入式的项目挣点外快,但现在我(含泪)要劝大家不要入行该行业。
这篇文章分为两个方面,一是从事嵌入式工作的基本操作套路;二是为什么不要从事嵌入式工作。
嵌入式项目的基本套路
这里以我在某乎的一个提问为例如图1所示,可能有人会以为以一个知乎的问答为例不足以说明问题,一个知乎的问答太过于简单无法透露出单片机的威力?
实际上事实绝非如此,单片机或者说嵌入式仅应用于某一个单一的小项目或者大项目的一小部分功能,原因在于单片机的处理能力过低不足以处理复杂的信息,但足以作为信息的初步采集、汇总以及工作装置的驱动,现实中生活中某米的智能台灯使用的WIFI芯片就是ESP8266EX【1】、小米九号平衡车使用控制器是STM32F103【2】、多款智能手环同样适用STM32作为主处理器【3】等等产品均是嵌入式产品。
某乎的问题本就是这些应用的缩小版或者同类问题,以此为例可以说清楚嵌入式项目开发的基本套路,
图1某乎51单片机课程设计
以下为我的回答:
首先,我们看一下你们课程设计的几点要求:
(1)用51单片机开发一个系统;
(2)使用AD转换器PCF8591完成数据采集与转换;
(3)使用时钟芯片DS1302记录时间;
(4)使用存储器AT24C02对数据进行监测和记录;
(5)使用LCD1602进行显示;
(6)使用按键对数据进行查询。
分析一下你们的课程设计要求以及具备的基础知识:
51单片机开发板中具备AD转换器、时钟芯片以及存储器,因此你不需要对这些部分的硬件基础进行设计,也就是本次课程设计仅仅只是完成一些软件上面的操作,不涉及硬件。(至于1602部分、按键部分是大多数开发板具备的基础配置,因此不需要着重强调。)
你需要具备的基础知识:
(1)单独使用PCF8591芯片进行AD转换,该部分使用的传输方式是IIC通讯,对这部分有一定的了解才可以做到;
(2)时钟芯片DS1302进行时间记录,该模块可以记录年、月、日、周、时、分、秒进行计时,使用时钟线、数据线用来读取信号;
(3)储存器的AT24C02的存储信息以及读取信息的使用,该模块也使用IIC通讯。
这三个方面的基础使用是基本的基础,单独使用它们在单片机开发板提供的历程中会有相应的例程,甚至会有你这个课程设计的雏形版本,你需要做的是找到这个例程。在这些例程上修改这些功能,有机的让他们结合在一起然后完成设计,完成这些基本这个项目已经完成。
可能从事多年的老手和新手对于该部分完成时间略有差异,但是功能方面在底层的需求差异不大,而恰恰哪些新手和老手的不同才是老手的护城河,也就是软件里面所说的算法,但在这些项目很少使用算法,基础功能完成即可宣布完成课题。
嵌入式项目
嵌入式课程存在的意义在于哪儿,电子专业的课程安排上学完嵌入式课程紧接着学习Linux系统内容,而机电类学生学完51单片机后不在开设相关内容进行学习。(我本人学习机械专业,同参加智能车比赛的小伙伴是电子类专业)
电子类学生(以智能车小伙伴为例)学完嵌入式后为Linux系统的学习提供基本的编程基础,Linux的开发及应用才是它们专业基本的素养,该同学大学毕业考研进入北京一所院校从事Linux的工作,后续留在北京从事Linux系统的开发。
机械类学生学完嵌入式后(以我为例),学完嵌入式系统(飞思卡尔芯片K60)后考研进入兰州某院校继续学习机械专业,读研期间参与设计嵌入式系统的工作,但是毕业以后再没有机会从事该方面的工作,进入某国企工作。
嵌入式的两方面发展也限制了从事该方面公司的发展,从一开始入行嵌入式系统就知晓两家比较大的硬件公司,一家是某点原子,另一家是某火电子;从企业信息显示,某点原子团队缴纳社保人数为38人,而某火找不到具体人数但是找到招聘信息:从事嵌入式/Linux开发3-5年,工资15K-20K。
想象一下如果你和同事在同样一家互联网企业工作(同时入职)人家工资20K+,你的工资是10K+,别人的工作就是在电脑面前敲代码、调试程序,你不仅要焊接硬件,还要在办公室敲代码、调试程序。心里不平衡必然存在,当然从事硬件开发工作大多数是体力劳动加少量脑力劳动,而软件纯是脑力劳动,这种心理的不平衡可不是一般人能承受的,所以不要入行嵌入式。在某准网显示绿厂硬件工程师平均工资12K,而软件工程师23K+,居然连机械工程师都是17K+【4】,现在异常感谢研究生导师对我的培养还好没有坚持梦想,走了一条平稳的路线。总之,这个行业的天花板太低,导致没有什么奋斗的价值。
不入行的主要原因可能在于嵌入式行业(硬件工程师)不是这个时代的风口,永远不可能是,硬件永远为软件服务,借用罗永浩老师的一句话“手机不赚钱,交个朋友”。因此,现在入行嵌入式类似于现在致力于开发DOS系统的组件。