热点文章介绍|点击标题阅读
近年来,随着移动互联网、物联网的快速发展,嵌入式技术日益普及,在通信、网络、工业控制、医疗、电子等领域发挥着越来越重要的作用; 在介绍嵌入式开发的职业发展方向之前,我们先来了解一下嵌入式设备的本质。 嵌入式设备的本质是一台专用的微型计算机,因此它就像计算机一样由三个层次的东西组成:
事实上,凡是具有数字接口的设备,大到飞机、火箭,小到手机、电脑,甚至组成普通PC终端设备的键盘、鼠标、硬盘嵌入式系统软件教程,以及目前市面上的各种智能硬件产品,都采用了嵌入式系统。 嵌入式系统是先进的计算机技术、半导体技术和电子技术与各行业具体应用相结合的产物。 嵌入式系统无疑是当前最热门、最有前途的IT应用领域之一。
嵌入式开发的发展方向有很多,门槛也不同。 下面主要介绍四大职业发展方向:
1.ARM+Linux/Android开发
据统计,全球99%的智能手机和平板电脑都采用ARM架构。 所有 iPhone 和 iPad 都使用 ARM 芯片,大多数 Kindle 电子阅读器和 Android 设备也是如此。 大多数领先的网络/电信制造商都在积极将其下一代平台迁移到ARM平台,并且有理由相信ARM将在未来几年内在行业中发挥极其重要的作用。
嵌入式系统是软件和硬件的结合。 开发ARM的人主要分为两类:
嵌入式软件开发工程师
(1)应用开发,包括Android应用开发或Linux应用开发(QT等)。 目前有很多人在做。 找工作很容易,工资也不错。 你需要掌握C语言、C++、Java等开发语言。
(2)操作系统移植比较复杂,如Linux、Android等。现在很多手机厂商(如小米、魅族、乐视等)都推出了修改内核、换皮肤、找东西的操作系统。就业还是很容易的;
(3)底层驱动开发不易上手和深入。 需要对硬件和操作系统有深入的了解,发展前景非常好。
嵌入式硬件开发工程师
(1) 就像手机一样,在处理器上构建整体电路比开始使用微控制器要困难得多。 一旦你成为技术专家,你就不会缺钱了。
(2)SOC、架构开发。 它叫做片上系统,也叫片上系统,意思是它是一种产品,是一种专用用途的集成电路,包含了一个完整的系统和嵌入式软件的所有内容。 同时,它是用于实现从确定系统功能到软硬件划分、完成设计的整个过程的技术。
2.FPGA开发
FPGA(Field Programmable Logic Device)产品的应用领域非常广泛,包括通信、消费电子、汽车电子、工业控制、测试测量等,应用领域的变化也使得FPGA产品的演进趋势越来越明显。近年来显而易见:一方面,FPGA供应商致力于采用最先进的工艺来提高产品性能、降低产品成本; 另一方面,越来越多的通用IP(知识产权)或客户定制IP被引入到FPGA中,以满足客户产品快速上市的要求。
FPGA的开发与传统PC和单片机的开发有很大不同。 FPGA主要基于并行运算,用硬件描述语言实现。 与PC或单片机的顺序操作(无论是冯·诺依曼结构还是哈佛结构)相比有很大不同,这也导致FPGA开发上手困难。
学习FPGA时常见的四个误区:
3.DSP开发
DSP(数字信号处理)是一门新兴学科,涉及多个学科,广泛应用于多个领域。 全球DSP市场前景十分广阔,DSP产业将成为21世纪最具发展潜力的朝阳产业。 近年来,随着DSP芯片产品价格的不断下降,DSP已经能够从以前的军用领域迅速扩展到民用领域,比如被应用于计算机、网络、手机、调制解调器、磁盘驱动器、以及众多的消费电子产品。
DSP学习涉及内容较多,所以有的放矢,学以致用很重要。 有几个重要的部分一定要学好:硬件制作和学习; 类/微驱动器模型; c/汇编程序开发; CSL/BSL 的使用和理解; RF5算法架构; 图像领域的知识等
4. 集成电路设计
你可知道? 上班用的公共交通IC卡、ATM机取款的银行卡、大楼的门卡等都是用IC设计的产品,是现代社会不可或缺的。 IC设计(Integrated Circuit Design),又称集成电路设计,是电气工程和计算机工程的一门学科。 其主要内容是运用专业逻辑和电路设计技术来设计集成电路。
2009年以来,中国IC设计业凭借强大的市场购买力和自主品牌的成长,在全球市场的份额逐步提升。 中国IC设计行业订单需求未来三年有机会成为全球增速最高的地区。 为了赶上这波浪潮,2015年至2017年将是全球代工厂争夺位置的重要时期。
如何学习IC设计? 需要有一定的模拟电路基础,有数模混合电路设计经验; 良好的电子电路分析能力; 有SOC设计和验证经验; 熟练掌握Verilog、Tcl、C、Perl等设计语言。
嵌入式系统设计是电子产品设计的重要组成部分。 目前,国内外大多数科技公司和创客团队都建立了自己的嵌入式开发团队。 团队所需人员职位包括:系统设计工程师、硬件工程师、底层驱动工程师、Linux系统工程师、应用设计工程师等。华清视觉教育集团推荐计算机、电子、通信、自动化等专业的学生相关专业应将嵌入式开发作为未来职业发展的方向。 无论是薪资还是发展前景都非常不错。 从工程师开始,一般有几个发展方向。 一是成为技术核心、领域专家; 二是接受项目培训,成为项目主管或管理人才; 三是利用自己的技术和行业经验来创业。 总之,在物联网背景下,嵌入式开发将成为最有前途的职业发展方向之一。
嵌入式开发需要学习什么
对于搞嵌入式软件的人来说,最重要的技术显然是(其实很多公司的招聘广告都是这么说的):
(1)掌握主流嵌入式微处理器的结构和原理
(2)必须掌握嵌入式操作系统
(3) 必须熟悉嵌入式软件开发流程,至少完成过1个嵌入式软件项目。
首先要明确嵌入式工作是有分工的。 有的搞硬件,有的搞软件。 硬件工程包括从事PCB、SOPC技术和芯片设计的人员。 一般来说,市场对嵌入式软件工程师的需求高于硬件工程师。 大,在较大的公司里,硬件工程师和软件工程师的比例一般在1:3到1:5左右。 如果你根本没有基础知识,我们建议学习嵌入式软件,因为它就业面广,而且很容易找到工作。 。
嵌入式软件工程师也有多种分工,如嵌入式应用工程师、嵌入式驱动工程师、嵌入式系统工程师等。
这些都需要不同的知识。 首先,嵌入式应用工程师一般掌握嵌入式开发环境、Linux下的C编程以及一些应用专业知识,如界面方面的QT、MINIGUI等。
对于嵌入式驱动工程师和系统工程师来说,不仅需要掌握以上知识,还需要了解处理器的相关知识,如ARM、MIPS等,当然还需要了解其外设,如UART、Memory Control、flash、I2C、SPI等相关知识。
嵌入式驱动工程师和系统工程师的薪资普遍高于应用工程师。 然而,这并不意味着新手必须寻找嵌入式驱动和系统职位。 我们建议您首先从事嵌入式应用程序的工作,并拥有一到两年的经验。 转换嵌入式驱动程序的工作。
如何学习这些课程? 你可以按照我上面列出的相关内容一一学习,也可以在网上找到一些嵌入式视频教程。 我们的教程从最基础的C语言、Linux基础等课程开始,然后是相关的驱动和系统课程、C++,最后会讲ARM架构。
最后,嵌入式学习最重要的是坚持。 学习两天后不要放弃,因为你永远学不到。
【基本情况】
嵌入式行业门槛非常高,这也是嵌入式人才稀缺而身价不断上升的主要原因。 学习嵌入式需要具备哪些基本条件? 嵌入式行业的门槛有多高?
1、积极的学习态度
想要学好嵌入式Linux专业技术,学习的心态和方法也至关重要。 很多朋友只了解嵌入式Linux光明的发展前景,只关注高收入、丰富就业机会等热门话题,却忽略了学习过程本身。 为了最大程度地发挥集中培训的效果,建议大家在开始学习前详细了解嵌入式产品开发的特点、需要掌握的技术规范和工作要点,并注意基础的补充和学习要求,以便为后续的强化学习过程做好心理准备。 毕竟,态度往往决定了最终作品的结果。
2、不怕苦、不怕累的精神
很多人都知道,四个月学会一门技术是非常具有挑战性的,也是一个非常艰苦的过程,因为在整个集中学习的过程中,需要保证上课认真听讲和实际练习。 还要保证课后继续进行实践练习和资料复习。 只有通过这种高强度、实战性的培训,才能在较短的时间内掌握标准化的嵌入式开发工作流程,满足嵌入式公司相应岗位的需求。
3、有一定的C语言基础
嵌入式Linux领域的开发大部分采用C语言。 C语言简洁、紧凑、易用、灵活,加上GNU在实际项目开发中的扩展,使得C语言在整个嵌入式Linux开发过程中发挥着至关重要的作用。 所以想要学习Linux首先必须有一定的C语言基础。 虽然目前很多院校都有C语言相关的课程,但是我还是要提醒大家,如果你真的想参与Linux的学习,一定要复习一下你的C语言知识,因为扎实的C语言基础更好。 保证你以后的学习。
嵌入式软件最重要的课程
1、嵌入式微处理器结构及应用
这是一门嵌入式硬件基础课程。 本课程替代传统的《微机原理与接口》课程(目前国内高校有少数IT专业这样做,因为很难找到x86微机原理与接口的实践课程。用于教学目的仅有的)。 我们说过,嵌入式是一种软件和硬件相结合的技术。 从事嵌入式软件的人应该充分了解ARM处理器的工作原理和接口技术,包括ARM的汇编指令系统。 如果不了解处理器的原理,怎么能控制硬件的工作呢? 如何才能编写出既节省内存又高速运行的最优代码(嵌入式软件设计特别注重时间和空间效率)? 你怎么能写一个驱动程序(驱动程序都是与硬件相关的)处理)?
很多公司在招聘嵌入式软件人员时都要求熟悉ARM处理器。 以后如果学生来公司从事嵌入式软件开发,公司会给你一份设备的硬件说明书(xxx规范),你一定能看懂。 最基本的指令比如内存分配和端口使用(就像x86汇编一样),否则如何设计软件。 有的同学觉得嵌入式处理器课程比较枯燥,主要是因为硬件课程比较抽象。 有些同学对ARM汇编不感兴趣,认为嵌入式开发用C语言就够了。 事实上,汇编语言不应该仅仅被视为一种编程语言。 学习汇编的主要目的是掌握处理器的工作原理。 一个不熟悉汇编语言的人如何能在这个处理器上编写最优的C语言代码。 在嵌入式开发的一些关键部分,有时必须要编写汇编,例如Bootloader等(其中也可能包括BSP)。 尤其是在速度要求极高的场合(比如DSP处理器的高速图像采集、图像解压缩),目前程序主要依靠汇编(我见过很多公司都是这么做的)。 当你在嵌入式公司工作时,当你看描述原理的手册时,很多可能都是用汇编来描述的(我就遇到过这种情况)。 这是因为许多硬件设计人员只能编写或喜欢使用汇编描述。 此时你必须了解汇编程序,否则软件和硬件的人可能无法沟通。
2.嵌入式操作系统课程
除了WinCE的实时性能稍差外,大多数嵌入式操作系统都具有很强的实时性能,因此也可以称为实时操作系统。 从事嵌入式的人必须至少掌握一种嵌入式操作系统(当然掌握两种更好),这是所有嵌入式技术中最关键的。 目前最重要的 RTOS 包括:
第一类,传统经典RTOS:最主要的是Vxworks操作系统及其Tornado开发平台。 由于Vxworks出现较早,所以它的实时性很强(据说可以在1ms内响应外部事件请求),而且它的核心可以做到极小(据说最小可以到8K),而且它的可靠性高。 因此,在北美,Vxworks占据了嵌入式系统的市场份额。 其中大部分是山。 尤其是在通信设备等实时性要求较高的系统中,Vxworks几乎是最佳选择。 Vxworks的很多概念和技术与Linux非常相似,主要是C语言开发。 贝尔阿尔卡特、朗讯、华为等通信公司在开发产品时大量使用Vxworks。 不过,由于Vxworks非常昂贵,一些小公司或者小产品往往买不起。 目前很多公司都在改用嵌入式Linux(听说华为目前也在改用这个)。 但无论怎样,Vxworks将在很长一段时间内保持不可动摇的状态。 与Vxworks类似的稍有名气的实时操作系统有pSOS、QNX、Nucleus等RTOS。
第二类,嵌入式Linux操作系统:除了其未来作为服务器操作系统之外,Linux最成功的应用是在嵌入式领域。 原因当然是它免费、开源、支持软件很多、粉丝众多。 这样,嵌入式产品的成本就会更低。 Linux本身并不是一个为嵌入式系统设计的操作系统,它不是基于微内核的,实时性能不强。 目前嵌入式领域使用的Linux系统主要有两种:一种是专为嵌入式使用而设计的小型化Linux系统。 最常用的是uClinux(不带MMU功能),目前在应用中占有很大份额。 可运行在ARM7上; 另一种运行在ARM 9上,一般在其上移植Linux 2.4.18内核,这样可以使用更多的Linux功能(当然uClinux也可以运行在ARM 9上)。 很多人预测嵌入式Linux有望占嵌入式操作系统的50%以上嵌入式系统软件教程,这一点非常重要。 缺点是熟悉Linux的人太少,开发难度稍大。 另外,目前我们可以发现很多教材和很多大学都采用ucOS/II作为实时操作系统进行教学。 这主要是因为ucOS/II比较简单并且开源,非常适合初学者学习实时操作系统的原理。 但由于ucOS/II II功能有限,在实际应用中很少使用,所以我院并不将其作为教学重点。 如果你想学,就应该学直接的、实用的。 比如uClinux就很实用。 而且,熟悉Linux开发不仅在嵌入式领域有用,对于开发Linux应用软件、加深对操作系统的理解也有帮助。 可以说是一举多得。 据我了解,目前Intel和Philip都在从事ARM+LINUX的嵌入式开发,而Fujitum则在自己的处理器上从事Linux的开发。 目前,在嵌入式Linux领域,以下方面的人才特别难找:第一,能够将Linux移植到新模式的开发版本的人; 第二,会写Linux驱动的人; 第三,熟悉Linux内核缩减和优化器的人。 我院嵌入式Linux系列课程是:本科生操作系统必修课,然后是Linux编程选修课,最后是嵌入式Linux系统选修课。
第三类,Windows CE嵌入式操作系统:微软也瞄准了巨大的嵌入式市场。 MS永远是最强大的。 WinCE问世才几年,但目前占有很大的市场份额,尤其是在PDA领域。 、手机、显示仪表等接口要求较高或需要快速开发的场合,WinCE现在很流行(据说有一家卖工控机的公司,板卡卖得好,根本来不及砍WinCE顾客)。 由于WinCE开发是基于大家都熟悉的VC++环境,所以学过Windows编程课程的同学不会有太大的困难。 这也是WinCE容易被人们接受的原因。 开发环境方便快捷,加上微软强大的技术支持,使得WinCE的开发难度比嵌入式Linux低很多。 对于急于完成又不想用嵌入式Linux冒险的开发情况,WinCE是最合适的(想要找到嵌入式Linux的人不是那么容易找到的)。 毕竟企业不能像学生一样尝试,更重要的是保证发展成功。
3、嵌入式开发其他相关软件课程
如果从事嵌入式技术,熟悉嵌入式应用的一些主要领域,这样的人会更受企业欢迎。 主要相关领域包括:
A、数字图像压缩技术:这是嵌入式最重要、最流行的应用领域之一。 主要是要掌握MPEG编解码算法和技术,如DVD、MP3、PDA、高精度电视、机顶盒等都涉及MPEG高速解码。 问题。 为此,我校预留了一名可以讲授数字图像处理课程的博士。
B、通信协议和编程技术:包括传统的TCP/IP协议和流行的无线通信协议。 首先,大多数嵌入式设备都需要连接到局域网或者互联网,所以首先应该掌握TCP/IP协议及其编程。 这是首先需要掌握的基础技术。 其次,无线通信是当前的大趋势,所以掌握无线通信。 协议和编程也非常重要。 无结通信协议包括无线局域网通信协议802.11系列、蓝牙、移动通信(如GPRS、GSM、CDMA等)。
C、网络与信息安全技术:如加密技术、数字证书CA等。我院有这方面的选修课。
D、DSP技术:DSP的意思是数字信号处理。 DSP处理器通过硬件实现数字信号处理算法,如高速数据采集、压缩、解压、通信等。数字信号处理是电子、通信等硬件专业的课程。 如果从事软件工作的人能够理解的话那就最好了。 目前DSP人才紧缺。 如果有信号与系统、数字信号处理等课程的基础,对于学习MPEG编解码原理会有很大帮助。
4、嵌入式开发相关硬件基础
对于从事嵌入式软件开发的软件工程专业来说,数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程更为重要。 另外,汇编语言、C/C++、数据结构与算法等基础软件课程,尤其是操作系统也非常重要。 我们的主要目的是了解硬件是如何工作的,但重点应该放在嵌入式软件,特别是操作系统级软件,这将是我们的优势。
我们的一些研究生主修电子和通信。 他们在模拟电路和单片机方面有很好的基础,所以非常适合他们学习嵌入式。 嵌入式本身是从微控制器发展而来的,但微控制器不附带操作系统。 现在很多嵌入式应用变得越来越复杂,不得不引入嵌入式操作系统。 另外,为了追求更高的信号处理速度,现在很多公司在一些速度要求较高的场合,都采用硬件来实现一些DSP算法,如MPEG压缩和解压缩算法。 这涉及到HDL数字电路。 设计技术及其FPGA/IP核实现技术目前市场上供不应求。
5. 题外话
另外,能写驱动程序的人目前非常紧缺(驱动也可以归为嵌入式)。 公司每时每刻都会推出新产品,而每一款新产品要被操作系统使用,都必须编写一个驱动程序。 编写驱动程序需要掌握操作系统(如Windows或Linux)的内部工作原理,而且还涉及少量的硬件知识,难度较大,所以这方面的人很难找。 想要成为高手的同学,也可以从驱动方面来突破。
我可以谈谈我自己的经历。 我在一家公司简单写过WinCE的驱动(正是因为知道这方面缺人所以才决定去做),虽然之前从来没有做过驱动。 当我申请这个职位时,我意识到公司很难招到这个领域的人。 既然找不到人,就得有人来当司机。 这是进入这个领域的绝佳机会。 面试的时候,我谈到了我写过多少万行汇编程序,对计算机的工作原理有多清楚。 我的简历中还写到,我读过两本Windows Driver Model的英文原版书籍,写过几个小驱动程序。 练习计划(其实根本就没有写过,以后我们的同学一定不能像我一样,如果早点练习一些优秀的技能,就不会沦落到我的境地,也不用“欺骗”了) “像我这样的公司。我就是典型的反面教材),却什么都通过了(当然最重要的是笔试和面试题都过关了),这只能说明找人有多难在这个领域里。 公司没想到找有驾驶经验的人,所以找有相关背景的人就好了。 做了之后我发现其实并没有那么难。 事实上,从事司机工作是很舒服的。 完成一个版本后,你会闲置一段时间。 只有当公司新的芯片推出或者新的操作系统出现时,才需要开发新版本的驱动程序。
在公众号后台回复【嵌入式】即可查看嵌入式方向最新出版的书籍。
嵌入式书籍,从入门到精通(点击下图放大!)