请选择 进入手机版 | 继续访问电脑版

浅谈嵌入式

[复制链接]
陈雪霜 发表于 2021-1-1 09:57:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
浅谈嵌入式


  

​相比耳熟能详的互联网行业,嵌入式这几个字眼出现在公众眼前的几率可以到达忽略不计的水平,这不光说明嵌入式行业的工程师数量远比互联网少,同时意味着嵌入式行业的吸引力貌似低于互联网。
但是,随着物联网时代的即将到来,嵌入式行业的热头又重新燃起,其是否能借助时代的趋势,发展到比肩如今的互联网?这,也许得由时间去答复。
嵌入式释意
那么,什么是嵌入式?
百度百科:
IEEE(Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操纵机器和设备的装置”。原文为:Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)。
嵌入式系统是一种专用的盘算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制步伐存储在ROM中的嵌入式处理处罚器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操纵系统,但大多数嵌入式系统都是由单个步伐实现整个控制逻辑。
从应用对象上加以定义,嵌入式系统是软件和硬件的综合体,还可以涵盖机器等附属装置。国内广泛认同的嵌入式系统定义为:以应用为中心,以盘算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、资本、体积、功耗等严格要求的专用盘算机系统。
**实在说白了,嵌入式属于硬件开发层面。就是在已有的硬件上移植操纵系统。**以单片机作比力,单片机的工作模式是使用软件编程控制硬件,实现一些功能。嵌入式是在软件与硬件之间参加一个操纵系统。现在火热的嵌入式操纵系统主要是linux,android,鸿蒙等。
嵌入式是做什么的:
传统嵌入式产品:空调主控模块、冰箱主控模块、家用遥控器、智能手机、讲授投影仪、音响系统、雷达系统、路由器等等
前沿嵌入式产品:无人机、智能音响、机器人控制、城市天眼系统、智能家具、自动驾驶汽车、扫地机器人、小米手环等等
嵌入式行业前景
现在的嵌入式开发更倾向于智能化,也就是我们所说的智能硬件(硬件+软件),从现在各种前沿的嵌入式产品来看的确如此,嵌入式产品的一个发展趋势是更倾向与自动化控制和人机交互,而不是强调“算法”这一块。
要区分你仅仅是一名嵌入式工程师而不是算法工程师,什么一大堆“人工智能”、“阿尔法狗”、“深度学习”、“神经网络”都不需要深入明确,那是研究生、博士生做的,并不是说本科的本领不敷,而是“术业有专攻”,这并不是一名嵌入式工程师的工作量,你需要做的仅仅是与他们的“云端大脑”举行对接,调用他们API就完事了。
由于人工智能、深度学习、神经网络、区块链、大数据等先进学科的崛起,许多人都产生质疑:“嵌入式另有发展前景吗”?
这个问题我在这里可以很肯定地告诉你:“嵌入式有很好的发展前景,前沿嵌入式技术即将崛起,或者说已经崛起”。的确,人工智能、大数据这些学科会给嵌入式带来打击,就现在来看,大学生更倾向于python编程语言、机器学习这一块,而嵌入式学者的确比往年有所下降。
但学者少了并不代表他的需求就少了,并不代表他的薪资水平下降了,现在的一个嵌入式技术更倾向于与智能学科相团结的趋势,以百度机器人为例,机器人的焦点是大脑,便是“数据和算法”,但机器人大脑想机器人身躯可以大概像人类一样活动,能说会道,行走自如,那么就必须得依靠嵌入式技术,这就是我所说的嵌入式+智能学科应用。
从长期来看,嵌入式只会越来越火,智能学科的崛起肯定带动新型的嵌入式技术发展。
嵌入式学习、从事方向
许多不相识行业的人说起嵌入式,他们就会说,“啊,我知道,就是搞单片机嘛。”甚至,连科班身世的学生许多都是这么认为。
为什么会出现这种局面?究其原因照旧因为大学专业里并没有嵌入式行业根正苗红的专业。嵌入式知识体系庞大,差别方向所需要的知识大不相同,网上关于嵌入式的学习门路甚至五花八门,没有统一的答案,这对求学者简直太不友好。
学嵌入式的主要有两个专业的人,一个就是电子类专业,另一个是盘算机类专业,电子类专业一般从硬到软学,盘算机类的从软到硬学。本人更倾向于电子类的学习走向,硬件要过分软件,相对简朴,但是要是纯软没打仗过硬件,想迈这个坎可就难了。从这可以看出,嵌入式行业要求工程师软件硬件都要掌握,只是侧重点差别罢了。
表明完嵌入式,接下来分析一下嵌入式的大要方向。嵌入式主要分为软件硬件两个方向。
嵌入式硬件方向:
为产品设计硬件电路原理图,设计硬件PCB板,选择符合的元器件,焊接调试硬件电路板,包管硬件电路板的可靠性、稳定性和抗干扰本领。因为现在集成电路发展迅速,大部分集成电路厂商都会提供参考电路,所以硬件电路原理图的设计相对来说比力简朴,硬件工程师工作的含金量主要体现在产品的可靠性和稳定性设计、以及电磁兼容设计,这才是硬件设计工程师的含金量所在。一个资深的嵌入式硬件工程师年薪都在10万~ 30万之间。
要成为一个资深的嵌入式工程师相当难,一方面要有非常扎实的理论知识,同时也要有相当的那种大型的、高频CPU、多层PCB板的设计履历。嵌入式硬件工程师要学的课程主要有模拟电路设计、数字电路设计、电磁波理论等。熟悉常用的放大电路、滤波电路、电源电路设计和分析。
嵌入式软件方向详细可以分三类:
嵌入式驱动工程师
编写和移植各种芯片驱动(如音频芯片),优化硬件设备驱动(如温湿度传感器),得醒目各种硬件接口协议(如I2C协议)、系统调治、信号量、锁机制等等,开发难度最大。该类开发者一般是软硬件综合型人才,一般的嵌入式驱动工程师指Linux上的驱动开发工程师,需要醒目Linux驱动框架(platform框架、input子系统框架等),团结芯片自己去编写驱动,驱动的优劣很洪流平上决定一个产品的优劣。业界对驱动人才的定义是三年才算入门,可见此门槛之高。
嵌入式系统工程师
主要是编写固件,根据差别平台移植操纵系统,根据应用场景来优化系统,需要熟悉整个操纵系统组成与调治,对固件的稳定性高求很高,如果系统不稳定,驱动和应用也是白做的。
嵌入式应用工程师
编写业务逻辑步伐,调用驱动工程师提供的接口控制设备,软件开发过程所涉内容范围非常广,主要使用C语言开发,但常常会涉及C++、Java、python、JavaScript、PHP等各类语言以及各种脚本语言、数据库、前端背景、各种通讯协议、甚至一些从来没听过的协议或概念,需要很强的学习本领,该职位也是各大公司需量最大的,一般10人的开发小组,驱动开发与系统开发与应用开发的比例是1:2:7。
嵌入式linux方向学习门路
C语言
嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式范畴最重要也是最主要的编程语言,通过大量编程实例重点明确C语言的基础编程以及高级编程知识。包罗:根本数据范例、数组、指针、结构体、链表、文件操纵、队列、栈等。
Linux基础
Linux操纵系统的概念、安装方法,详细相识Linux下的目次结构、根本命令、编辑器VI ,编译器GCC,调试器GDB和Make项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发情况的搭建。
Linux系统编程
重点学习尺度I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的明确和代码调试的本领。
Linux网络编程
盘算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面相识Linux网络应用步伐开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,相识HTTP协议及实在现方法,熟悉UDP广播、多播的原理及编程方法,掌握混淆C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。
数据结构与算法
数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的优劣直接影响步伐的效率、简便及结实性。此阶段的学习要重点明确数据结构与算法的基础内容,包罗顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。
C++ 、QT
C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的根本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式范畴的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI步伐,并移植QT应用步伐到Cortex-A8平台。包罗IDE使用、QT部件及结构管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理处罚及文件处理处罚的应用。
Cortex A7 、Linux 平台开发
通过基于ARM Cortex-A7处理处罚imx6ull相识芯片手册的根本阅读本领,掌握imx6ull系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包罗内核淘汰、内核移植、交织编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在imx6ull实验平台上运行自己制作的Linux系统,集成摆设Linux系统整个流程。同时相识Android操纵系统开发流程。Android系统是基于Linux平台的开源操纵系统,该平台由操纵系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,现在它的应用不再范围于移动终端,还包罗数据电视、机顶盒、PDA等消费类电子产品。
驱动开发
驱动步伐设计是嵌入式Linux开发工作中重要的一部分,也是比力困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动步伐与用户级应用步伐的接口,掌握系统对设备的并发操纵。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM Cortex-A7处理处罚器imx6ull各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。
关于后续内容
由于本人现在从事方向为ARM+Linux,故借此时机回首并记载从大学时代,0基础开始学习嵌入式的过程,同时受益于读者,希望与读者共同进步,成为一名出色的嵌入式行业从事者。
接待读者关注我的公众号:青葙子嵌入式

参考资料:
[1] 物联网研究室——一线工程师告诉你嵌入式真实现状与发展前景(https://blog.csdn.net/fengfeng0328/article/details/82925001?utm_source=app)
[2] 嵌入式ARM——嵌入式工程师出路之我见:就业,技术,行业…
(https://mp.weixin.qq.com/s/CFDb0IaM1c6D3qq64Jaf3A)
[3] 奥芯软件方案——嵌入式linux学习门路
(https://www.zhihu.com/question/314486500/answer/615709864)
整理文章为传播相关技术,版权归原作者所有
如有侵权,请联系删除

来源:https://blog.csdn.net/weixin_44555888/article/details/111908479
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )