嵌入式的坑在哪方面?

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

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

嵌入式工程师简直就是硬件工程师与软件工程师的合体!别问我是哪一类软件工程师,反正不是前端、后端、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…

CentOS、Ubuntu、Debian三个linux比较异同

Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。 商业版本以Redhat为代表,开源社区版本则以debian为代表。这些版本各有不同的特点,在不同的应用领域发挥着不同的作用&a…

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

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

arm流水线相关

不管是arm几,只要是在执行指令时采用的是流水线机制,前3级的都是:取指->译码->执行.在"执行"阶段,pc总是指向该指令地址加8字节的地址.换句话说,pc总是指向正在执行的指令地址再加2条指令的地址.之所以是2条指令,是因为在"执行"阶段前还有"取指…

C语言——回调函数

C语言——回调函数 宗旨:技术的学习是有限的,分享的精神是无限的。 如果参数是一个函数指针,调用者可以传递一个函数的地址给实现者,让实现者去调用它,这就是回调函数。 void func(void (*f)(void*), void *p) 提供…

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

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

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);…

ocs 2007技巧:查看存档服务记录的消息内容

要查看存档服务记录的消息内容&#xff0c;请进入SQL&#xff0c;运行下列命令&#xff1a;USE LcsLogGOSELECT * FROM Messages转载于:https://www.cnblogs.com/kksip/archive/2008/01/08/1030858.html

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

例子参考&#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语言——可变参数

C语言——可变参数 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 1、目前为止&#xff0c;见过比较熟悉的可变参数的函数就是printf()函数 int printf(const char *format, …);<span style"font-family: Arial, Helvetica, sans-serif; back…

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

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

【转】建立公用程序库,提升软件开发生产力

当我们谈及软件开发的生产力时&#xff0c;其实有相当多的因素在影响着。举凡程序人本身的素质、所使用的程序语言、应用程序框架&#xff08;Application Framework&#xff09;的选择、是否具备好的开发工具&#xff08;例如IDE、程序代码产生器&#xff09;、对开发环境的熟…

vim使用指南

1 删除 https://www.jianshu.com/p/ab7936af747c 转载于:https://www.cnblogs.com/zhaoyz/p/8341231.html

C语言编程规范 clean code

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

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

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

状态机——protothreads

状态机——Protothreads 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、prothreads的优缺点 优点&#xff1a; 1. 以纯C语言实现&#xff0c;无硬件依靠性&#xff1b;因此不存在移植的困难。 2. 极少的资源需求&#xff0c;每个Protothread仅需要…

南橘北枳

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

CentOS经常使用文件操作命令[百度博客搬家]

路径操作的CentOS经常使用命令 如今整理例如以下&#xff08;百度博客搬家) cd pwd NO1. 显示当前路径 [rootrehat root]# pwd NO2. 返回用户主文件夹 [rootrehat root]# cd NO3. 改变到其他路径 [rootrehat root]# cd /etc NO4. 返回到上一级文件夹 [rootrehat root]…

Apache配置SSL证书服务器傻瓜步骤

在LinuxApacheOpenSSL中配置SSL安全证书认证是不难的&#xff0c;我的另一篇工作随记中曾提到[url]http://www.host01.com/article/server/00070002/0621409075193649.htm[/url]中有所有步骤&#xff0c;不过其中的一些描述有点复杂&#xff0c;并且依赖关系也没有这些严格。这…