嵌入式的坑在哪方面?

在知乎看到的,觉得见解不错,看完我觉得会对嵌入式有些见解,分享给大家。

今年毕业刚工作半年,稍微写一下自己的见解。
======================================
嵌入式就个万金油!干得活可以涉及硬件和软件!永远学不完的知识。

嵌入式工程师简直就是硬件工程师与软件工程师的合体!别问我是哪一类软件工程师,反正不是前端、后端、APP、测试、运维。也别问我是什么硬件工程师,电源、单片机、高频、通信……你会做你就上!给你个嵌入式工程师的头衔你就是软件硬件小能手,堪比全栈工程师。

先从硬件说起:
硬件要做一款产品很不容易,要考虑各种方案的选型,而硬件方案的选型可不像移动开发一样是选Android呢还是iOS,是用Java还是Delphi那么简单,哦,你问我用什么框架?我还想问框架是什么意思呢!硬件工程师眼中只有电路图!原理图!(OS:电路图和原理图就是同一种东西好么...)以及这电路图是否有人实现过。

好了,会看电路图了,总要做出来给老板看的吧?于是必须会焊接。做嵌入式硬件的绝对离不开主控芯片,不然还叫什么嵌入式工程师啊?所以该芯片的最小系统是要会焊接出来的。

最小系统实现了,那么就可以搭接各种传感器,往智能硬件方向走;或者移植一个操作系统,往人机界面(UI)方向走。

当然,你也可以到此为止,不去做产品,而是做各种硬件模块或开发板,再拿出去卖。如果我没有理解错,这个叫方案提供商。
「我们公司是卖方案的。」——一个小工程师这么介绍自己的公司。

当然,也有的硬件公司是出售自家生产芯片及模块,附送自家的SDK(软件开发包)。我们这些客户(用户、工程师、二次开发者)称这硬件公司为原厂(官方),代码称为原厂的代码(或者官方的代码)。卖芯片的公司,叫芯片供应商

我想说的是,还有公司是拿原厂的芯片做最小系统模块,再卖给我们这些二次开发者(三次开发者)用……像这些卖方案卖芯片的公司,嵌入式硬件工程师最多了!

我喜欢把嵌入式分为四个层次,硬件层、驱动层、系统层和应用层,前面说完了硬件,下面说软件。

如果某个人在单片机上写过定时器、数码管、温度传感器的程序,用过UART、SPI、IIC、CAN等通信方式、更厉害的话接触过蓝牙协议栈或者TCP/IP协议栈,称其为驱动工程师应该没什么不妥吧?都是底层代码,虽然有难有易。

系统层。一般个人或小公司是写不了的,听说Windows某版本用了300人写了2年。只有大公司才会想着自己写系统,比如最近的新闻:华为推自主物联网操作系统Liteos 对全球免费开放
而我们个人所能做的是把操作系统移植到芯片上去。

另外补充一个知识点:一个操作系统,一般来说有五样东西:内存管理、进程管理、文件系统、设备硬件接口和网络通信。在嵌入式领域里,可能会针对不同的应用情况而对系统层进行裁减,比如裁减掉文件系统和网络通信,只留下内存、进程和硬件接口就可以了。

如果你现在干的活硬件层是ARM芯片、系统层是Linux。
那么就是ARM+Linux嵌入式工程师,但是你以为你是要做上面的活吗?不!
你只是在ARM+Linux上面修修改改,上面所说的硬件和驱动的活都交给其他人或上游公司做了,但是那些人也可以说是在做嵌入式!

然后呢,安卓本质上不也是Linux么?所以如果你是在做安卓底层开发安卓APP开发,本质上也是在做嵌入式!而且Android和iOS不是常常相提并论吗?于是iOS开发也是嵌入式开发了……真是让人不可思议!

另外,除了ARM+Linux/Android,还有其他的芯片+系统,比如:STM32+uCOS,ARM+WinCE。

按照目前社会对嵌入式这个词语的理解,可能就在这个范围内。像我这样电子专业出身的人,对嵌入式的理解就没那么狭隘。

我还想说的是:驱动层和系统层这一类的工程师,因为不需要大篇幅的修改而市场需求量少,因为需要阅读大量的代码和要有很多Debug经验而人才稀少。

近年来嵌入式这三个字那么火,但还是一个被培训机构炒作出来的概念!最重要的还是要回到现实中具体是做什么的!你在这一家公司做嵌入式工程师,可能根本就不能担任另一家的嵌入式工程师!所以……

嵌入式最大的坑,就是定义未清!

嵌入式定义未清,又被商家炒作,就会有一大堆人趋之若鹜(包括我),接触之后发觉并不是自己想象的那样,想退出却发现自己除了嵌入式其他什么也不会,想去互联网行业,发现自己HTML、CCS、JavaScript、PHP、Delphi、C#一概不知!

互联网只要一台电脑+一个服务器就能赚钱,软件还是零成本;而嵌入式,你们知道我妈看了我做的毕业设计之安卓手机蓝牙遥控三色灯,第一句话说了什么吗?这属于制造业吗?

2015-10-08补充:
后来想了想不能说定义未清,应该说是定义太广泛
嵌入式系统在书本上的定义很明确,也很长,具体可查某百科。我的嵌入式老师只用了三个词语就总结了嵌入式系统的精髓:专用的 可裁剪的 计算机系统

目前社会上对嵌入式的理解,也就是商家炒作出来的概念:嵌入式=ARM+Linux。可是作为电子专业出身的我,套用老师总结出的概念,我能发现很多东西都属于嵌入式:MP3、手机、ATM、好记星等等。学嵌入式为什么偏要去学ARM+Linux呢,而且还难!还不一定找的到工作!

所以,如果你是想进入嵌入式行业的人,请把握好自己的学习方向,不要被培训机构的炒作而迷途。

作者:阏男秀
链接:https://www.zhihu.com/question/28111300/answer/64780548
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Orange-Classification,Regression

1.Classification Orange和sklearn一样,提供了Classification和Regression等机器学习的算法,具体使用如下: import Orangedata Orange.data.Table("voting") lr Orange.classification.LogisticRegressionLearner() rf Orange…

再见,杀毒软件之父,王江民!

王江民,中国最早的反病毒专家,被业界尊称“中国杀毒软件之父”、“中国反病毒第一人。以38岁为分界,王江民的前半生,是中国青年身残志坚的楷模,他的后半生是中国安全软件的奠基人,带领中国商用软件第一个走…

百面机器学习——第一章特征工程

特征工程:是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。从本质上来讲,特征工程是一个表示和展现数据的过程。在实际工作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高…

C语言不调用库函数画一个三角形

这个是知乎上面的一个题目,非常有意思,晚上打球回来就下决心要写代码实现下,再加上自己剖析,让大家明白一个三角形在坐标系中如何用C语言画出来的。https://www.zhihu.com/question/53832071/answer/1625616415第一步就是要先构建…

JS高级——变量提升

JS执行过程 1、首先是预解析&#xff1a;预解析过程最重要的是提升&#xff0c;在JavaScript代码在预解析阶段&#xff0c;会对以var声明的变量名&#xff0c;和function开头的语句块&#xff0c;进行提升操作 2、执行操作 全局中解析和执行过程 <script>console.log(a);…

图像多分类——卷积神经网络

例子参考&#xff1a;https://www.jiqizhixin.com/articles/2019-05-15-2 数据集&#xff1a;https://www.cs.ccu.edu.tw/~wtchu/projects/MoviePoster/index.html 将获取到原始数据集&#xff0c;其中&#xff0c;有三个文件&#xff0c; Movie Poster Dataset是1980-2015年…

学习C++,知识点太多记不住怎么办?

学习一门新的编程语言之前&#xff0c;你首先会做什么&#xff1f;先熟悉变量、运算符、函数、类和结构、测试等工具&#xff0c;随后按照指导按部就班进行操作&#xff1f;这样的流程对于学习其他语言如Python、Java来说或许行得通&#xff0c;但C的话&#xff0c;够呛。想要真…

C语言编程规范 clean code

目的规则并不是完美的&#xff0c;通过禁止在特定情况下有用的特性&#xff0c;可能会对代码实现造成影响。但是我们制定规则的目的“为了大多数程序员可以得到更多的好处”&#xff0c; 如果在团队运作中认为某个规则无法遵循&#xff0c;希望可以共同改进该规则。参考该规范之…

DataWhale组队-Pandas(下)缺失数据(打卡)

1.缺失值概要 数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失&#xff0c;两者都会造成分析结果的不准确&#xff0c;以下从缺失值产生的原因及影响扥方面展开分析。 &#xff08;1&#xff09;缺失值产生的原因 1&#xff09;有些信息暂时无法获取&#xff0c;或…

南橘北枳

春秋战国时期&#xff0c;智者晏子曾经说过一句话&#xff1a;“桔生淮南为橘&#xff0c;生于淮北为枳”&#xff0c;说的是淮南香甜的橘子移植到淮北就变成苦涩难吃的枳。因为事物的条件和环境等变了&#xff0c;所以才会这样。这句话现在大多是针对人品说的&#xff0c;大概…

用C语言字符画圆

用C语言画圆&#xff0c;这是一是算法的问题&#xff0c;我们知道&#xff0c;程序是由数据结构加算法组成的&#xff0c;研究这类东西&#xff0c;其实也是研究算法的问题&#xff0c;是比较有意思的。圆心为0的时候&#xff0c;圆的公式公式&#xff1a;那我们要如何写代码呢…

Linux C目标文件

LinuxC目标文件 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、目标文件格式&#xff08;ELF格式&#xff09; 编译器编译源代码后生成的文件叫做目标文件。目标文件是已经编译后的可执行文件&#xff0c;只是还没有经过链接的过程。 PC平台流行…

Win2003下Exchange2003部署图解之七

Exchange 2003 基本配置在邮件服务器SERVERVM下打开“第一个存储组”&#xff0c;&#xff08;这里我们只看到一个缺省的存储组&#xff0c;在Exchange2003标准版中我们只能建立一个存储组&#xff0c;而企业版中我们可以建立4个存储组&#xff09;选择“邮箱存储”&#xff0c…

嵌入式Linux操作UART实例

1引言串口是我们实际工作中经常使用的一个接口&#xff0c;比如我们在Linux下使用的debug串口&#xff0c;它用来登录Linux系统&#xff0c;输出log。另外我们也会使用串口和外部的一些模块通信&#xff0c;比如GPS模块、RS485等。这里对Linux下串口使用做个总结&#xff0c;希…

Datawhale组队-Pandas(下)文本数据(打卡)

一、string类型的性质 1.string和object的区别 string类型和object不同之处有三&#xff1a; 字符存取方法&#xff08;string accessor methods&#xff0c;如str.count&#xff09;会返回相应数据的Nullable类型&#xff0c;而object会随缺失值的存在而改变返回类型某些Se…

sql语句遇到的问题

分别统计所有男同学的平均分&#xff0c;所有女同学的平均分及总平均分 //SELECT AVG(score),name,(SELECT AVG(score) FROM student) as 总平均分 from student GROUP BY sex; 按照分数从小到大的顺序打印分数大于总平均分的学员信息(id-name-sex-score),并将分数大于总平均分…

新唐单片机代码评审总结

昨晚上&#xff0c;我们一个同事组织了一个小会议&#xff0c;大家一起讨论了一个项目的单片机代码&#xff0c;这个单片机用的是新唐单片机&#xff0c;期间大家也讨论了一些问题&#xff0c;总结一下&#xff0c;希望对写单片机的同学们有帮助。我这个同事写的代码非常优秀&a…

Datawhale组队-Pandas(下)分类数据(打卡)

Categoricals是pandas的一种数据类型&#xff0c;对应于统计学中的Categorical variables&#xff08;分类变量&#xff09;&#xff0c;分类变量是有限且固定的可能值&#xff0c;例如&#xff1a;gender&#xff08;性别&#xff09;、血型、国籍等&#xff0c;与统计学的Cat…

【分享】一个集成tracert和ping的网络监测工具

最近接到一个需求&#xff0c;需求背景是这样的&#xff1a;目前Windows平台下本身都有tracert和ping的实现&#xff0c;而且可以直接在cmd下使用。 需求中有两个要求&#xff1a; 1. Windows平台中的tracert执行速度太慢&#xff0c;一次tracert可能要花十几分钟。所以&#x…

秀操作 | 函数宏的三种封装方式

作者&#xff1a;☆星轨★ 链接&#xff1a;https://blog.csdn.net/qq_35692077/article/details/1029949591. 函数宏介绍函数宏&#xff0c;即包含多条语句的宏定义&#xff0c;其通常为某一被频繁调用的功能的语句封装&#xff0c;且不想通过函数方式封装来降低额外的弹栈压…