您的位置首页  家电资讯  新闻

学习门槛很高的“嵌入式”,如何选择对口的职业方向?

  • 来源:互联网
  • |
  • 2020-07-31
  • |
  • 0 条评论
  • |
  • |
  • T小字 T大字

一直以来,“学嵌入式是个大坑”这个话题很火。大部分原因是因为从事嵌入式的人员 赚钱少,平常任务也比较简单、重复性的工作,但是每次不同的项目,都需要重新投入精力,去学习一套又一套新的片内外设操作,不能像做互联网的,在Github之类网站找个例程、复制代码修改后就能用。薪资低,却还是习惯了脚踏实地干活,羡慕着别人赚钱,默默接受被嵌入式坑的日子...

不仅如此,嵌入式还属于门槛比较高的技术方向。

因为你平常不仅要跟软件打交道,很多时候还需要了解硬件的知识,只有了解它的工作原理,才能正确地对其进行编程。一些错误的理解可能会导致运行结果与预期相去甚远,所以说嵌入式是一项软硬件紧密结合的技术方向。

作为一名嵌入式工程师,需要了解的知识包括如下方面:硬件部分,电路结构、芯片逻辑设计、时序等;软件部分,操作系统、编译原理、汇编语言、高级语言等等。要学习的知识可谓多之又多,想在短时间内掌握这些知识并不容易。在过往的经历中,确实见过不少同学缺乏足够的耐心,或者早早失去兴趣,从而放弃了嵌入式行业,转投其他领域。

但是, 从容易到困难,是学习的一般规律,学习嵌入式也不例外。但需要强调的是,从一个初级嵌入式工程师到高级嵌入式工程师,甚至是资深嵌入式工程师,并不是一件容易的事情,这中间会遇到一些瓶颈,需要克服很多困难,只有不断地提升自己的能力,才能面对后面复杂的嵌入式系统。

那么,针对嵌入式学习门槛高,所需掌握技术层面复杂、涉及的知识面广等问题,工程师如何做到深入学习,积累经验,然后如何去选择与自己能力最匹配的职业方向呢?下面从嵌入式的概述、分层原理及对技术专业的要求,来谈谈嵌入式工程师的职业定位。

什么是“嵌入式系统”?

在工程师看来:着重理解“嵌入”的概念,主要从三个方面来理解:

1、从硬件上,将基于CPU 的外围器件,整合到CPU 芯片内部,比如早期基于X86体系结构下的计算机,CPU 只是有运算器和累加器的功能,一切芯片要靠外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控 制器芯片实现。目前这种串口控制器芯片早已集成到CPU 内部。还有PC 机有显卡,而多数嵌入式处理器都 带有LCD 控制器,但某种意义上就相当于显卡。比较高端的ARM 类Intel Xscale 架构下的IXP 网络处理器CPU 内部集成PCI 控制器(可配成支持4个PCI 从设备或配成自身为CPI 从设备);还集成3个NPE 网络处理器引擎,其中两个对应于两个MAC 地址, 可用于网关交换用,而另外一个NPE 网络处理器引擎支持DSL,只要外面再加个PHY 芯片即可实现DSL 上网功能。IXP 系列最高主频可以达到1.8G,支持2G 内存,1G×10或10G×1的以太 网口或Febre channel 的光通道。IXP 系列应该是目标基于ARM 体系结构下由Intel 进行整合后成Xscale 内核的最高的处理器了。

2、从软件上,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM 中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE 在内核定制时,会有相应选择,其中就是 wordpad,PDF,MediaPlay 等等选择,如果我们选择了,在CE 启动后,就可以在界面中找到这些东西,如果是以前PC 上的windows 操作系统,多半的东西都需要我们得新再装。

3、把软件内核或应用文件系统等东西烧到 嵌入式系统硬件平台中的ROM 中就实现了一个真正的“嵌入”。以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围 内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,因为毕竟嵌入式系统是计算机范畴下的一门综合性学科。

嵌入式系统分层及对专业能力的要求

嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层

1、硬件层:是整个嵌入式系统的根本。如果现在单片机及接口这块很熟悉,并且能用C 和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD 的逻辑设计的,同时还要对操作系统内核及其调度有相当的熟悉。但硬件平台是基础,增值还要靠软件。

硬件层比较适合于电子、通信、自动化、机电一体、信息工程类专业的人来搞。需要掌握的专业基础知识有:单片机原理及接口技术、微机原理及接口技术、C 语言等。

2、驱动层:这部分相对而言比较难。驱动工程师不仅要能看懂电路图,还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导致其它任务不能运行。若不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,这样可能连个初级的驱动工程师的水平都达不到,所写的驱动在应用调用时就如同windows 下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几遍,不是太容易成功的,但其工资在嵌入式系统四层中是最高的。驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞。当然除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通。

3、操作系统层:对于操作系统层而言目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP 操作系统是微软投入300人用两年时间才搞定的,总时工时是 600人/年;中科院软件所自己的女娲Hopen 操作系统估计也得花几百人/年才能搞定。因此这部分工作相对来讲没有太大意义。

4、应用层:相对来讲较为容易。如果会在windows 下进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及Java方面的编程也是如此。嵌入式系统中涉及算法的由专业算法的人来处理,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面的嵌入式数据库、基于嵌入式系统的网络编程和基于某些应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面,又较为复杂,并且有度了。

嵌入式工程师,如何定位个人职业目标?

学习嵌入式,我们一贯提倡先有目标,再去定位。

学ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C 语言的板级编程。从软件上讲,就是要学习基于ARM 处理器的操作系统层面的驱动和移植。这些对于初学者来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于API 的应用层的编程,硬件的寄存器类的东西还是要能看懂的、基于板级的汇编和C 编程还是要会的。因此针对于嵌 入式系统的硬件层和驱动层的人来说,ARM 的接口电路设计、ARM 的C 语言和汇编语言编程及调试开发环境还是需要掌握的。

对于初学者必然要把握住方向,自己的目标是什么,自己要在哪一层面上走。然后再着手学习才比较好, 与 ARM 相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。如果想从嵌入式系统的应用层面的走的话,可能与ARM 及其它体系相去较远,要着重研究基嵌入式操作系统的环境应用与相应开发工具链,比如WinCE 操作系统下的EVC 应用开发(与windows 下的VC 相类似),如果想再有突破就往某些音视频类的协议上靠,比如VOIP 领域的基于SIP 或H.323协议的应用层开发,或是基于嵌入式网络数据库的开发等等。

对于初学者来讲,要量力而行,不要认为驱动层工资高就把它当成方向了,要结合自身特点,嵌入式系统四个层面上,无论哪个层面上来讲都是有高人存在,当然高人也对应的高工资。我是做硬件层的,以前每月工资中个人所得税要被扣上近3千大元。当然我一方面充当工程师的角色,一方面充当主管人物的角色,两个职位我一个人干,但上班时间就那些。硬件这方面上可能与我PK 的人很少了,才让我拿到那么多的工资。

所以要想在嵌入式方面有更高的造诣,我们必须要对计算机的底层逻辑自己动手进行深入研究才能让自己的理解更为深刻。这样才有可能创造出突破常人认知的产品找到属于自己的舞台,成为一个浪漫的工程师。

针对很多朋友没有时间和有效的方法来动手做实验去深入学习计算机相关的基础知识。

在这里我 给大家强烈推荐这套 《从入门到精通Linux内核网络协议栈》的全套课程来助力各位成为一名基本功扎实的工程师!

做这套课程的目的,就是 希望能够帮助已经从事嵌入式或内核相关开发的朋友,想要从事这方面的朋友们增加自己的职业竞争力,提高自己的职业天花板,赢得高薪职位。

同时,让大家借助Linux内核用最少的时间来更为深刻的理解计算机网络原理,操作系统,数据结构等等这些计算机的基础知识。

这套课程也比较适合想要从事嵌入式开发的新手,在这套课程里,老师会带着大家用qemu虚拟机来搭建一个最小系统学习计算机网络原理、操作系统、数据结构以及Linux内核网络协议栈开发,对Linux内核网络协议栈以及Linux内核相关部分做一个彻底的剖析,并且会将计算机网络原理,操作系统,数据结构和Linux内核代码的实现结合着来讲,大家可以在这套课程里既学到计算机网络与操作系统的底层原理,又能学到嵌入式驱动和内核协议栈的开发。

掌握Linux内核网络协议栈,也是提高我们薪资水平的一个发力,其原因主要有四条:

第一、市场需求量大:随着5G、高速光纤网络和工业物联的快速发展,在嵌入式网络通讯方面,网络通讯设备的需求量以及研发难度剧增,目前嵌入式市场上急需大量精通网络底层方面的人才。

第二、行业前景乐观:大部分涉及网络通讯的企业,像华为,中兴,博通,高通基本都是技术垄断型企业,工资水平高于做其他嵌入式产品的公司

第三、先手优势:嵌入式开发从业者已经对内核有一定程度的了解,能够更快的掌握Linux内核相关的其他功能包括Linux内核网络协议栈

第四、行业天花板高:在网络通讯行业,新技术,新协议层出不穷,人们对网络的速度永无止境的追求,所以行业的天花板非常高,同时这些技术又都是基于内核协议栈做的一个延申,学好内核协议栈就可以打好基础从而不断提高自己的职业高度。

课程能够帮到大家什么?

1.完全掌握嵌入式Linux内核开发

2.彻底理解计算机网络以及Linux内核网络协议栈

3.少走弯路:分享嵌入式以及网络协议开发时可能遇到的坑

4.零成本搭建便捷式嵌入式学习环境,让嵌入式入门变得更简单

5.网络协议栈开发:手把手教学员如何从零开发网络协议

6.助力学员达成:嵌入式+网络协议栈=高薪 的目标

课程介绍

本次课程主要从嵌入式开发环境的搭建,网络设备驱动到内核网络协议栈再到Linux网络功能应用,通过对计算机网络原理以及Linux内核代码实现的解析,结合着大量内核协议栈开发的实战项目,对嵌入式Linux内核开发以及Linux内核网络栈的实现进行了全面的剖析。

主要内容包括:网络驱动,桥接设备,路由原理,IPv4/IPv6协议栈,防火墙原理及开发,网络安全,以及Linux网络应用(Qos,vpn,alg)等 。

课程时长约为30小时,具体以实际课程课时为准。

课程主要讲解知识点

课程详细大纲

课程案例、项目学习内容截图

课程亮点

目前, 课程《从入门到精通Linux内核网络协议栈》正在华秋众筹中, 全网限时最低价,众筹时间仅剩最后 1天!最后机会!想报名学习的童鞋们不要错过了!

如何报名课程学习?

扫一扫以下课程二维码,进入页面后 点击“立即众筹”选择相应想学习的课程即可。

若对课程还有疑问,可添加学院助教老师微信,进行详细咨询了解。

助教喵喵

助教小优

课程FAQ

1. 课程适合哪些用户学习?

· 想学习嵌入式技术的小白或初学者

· 遇到职业瓶颈的嵌入式从业者

· 从事网络通讯技术方面的开发人员

2. 学生或新手能不能学会?

可以的,学习本课程的学员,只要能够看懂C语言程序即可。

3. 老手有没有必要入手学习?

很有必要,制作本课程的初衷就是为了帮助广大嵌入式新手学员、从业多年的嵌入式开发者,突破职业发展瓶颈,掌握嵌入式内核协议栈开发的高级技术,从而让其能够胜任更高薪的岗位。

讲师介绍

讲师:丁光宇

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186
  • 标签:教室轮流上h文
  • 编辑:郭晓刚
  • 相关文章