当前位置:首页 > 新闻资讯 > FPGA之家动态 >

课程体系 | 嵌入式系统的学习路线图

时间:2024-07-25      来源:网络搜集 关于我们 0

热文导读 | 点击标题阅读

嵌入式专业系列图书

近几年来,随着移动互联网、物联网的迅猛发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用;在介绍嵌入式开发职业发展方向之前,先了解一下嵌入式设备的本质。嵌入式设备的本质就是一台专用的、微型计算机,所以就像计算机一样由三个层次的东西组成:

硬件,包括cpu(如ARM)、存储(如flash)、I/O(显示模块、通讯模块、视音频模块、I/O控制电路等)。

系统级软件,主要是操作系统也就是OS,以及I/O软件如LCD、蓝牙、wifi、CDMA、声音等子系统。

应用软件,如基于linux的应用开发,基于Android的应用开发,基于iOS的应用开发等。

事实上,所有带有数字接口的设备,大到飞机火箭,小到手机,电脑,甚至组成普通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) 底层驱动开发,这个入门、深入都不容易,需要对硬件及OS有较深的了解,发展前景很不错。

嵌入式硬件开发工程师

(1)就像手机一样在处理器上做整体的电路,比单片机入门难的多,做成技术大牛了不缺钱。

(2)SOC,架构开发。称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。

2. FPGA开发

FPGA(现场可编程逻辑器件)产品的应用领域非常广泛,包括通信、消费电子、汽车电子、工业控制、测试测量等。而应用的变化也使FPGA产品近几年的演进趋势越来越明显:一方面,FPGA供应商致力于采用当前最先进的工艺来提升产品的性能,降低产品的成本;另一方面,越来越多的通用IP(知识产权)或客户定制IP被引入FPGA中,以满足客户产品快速上市的要求。

FPGA的开发相对于传统PC、单片机的开发有很大不同。FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别,也造成了FPGA开发入门较难。

学习FPGA常见的四大误区:

不熟悉FPGA的内部结构,不了解可编程逻辑器件的基本原理。

错误理解HDL语言,怎么看都看不出硬件结构。

FPGA本身不算什么,一切皆在FPGA之外。

数字逻辑知识是根本。

3. DSP开发

DSP(Digital Signal Processing,数字信号处理),是一门涉及许多学科而又广泛应用于许多领域的新兴学科。全球DSP市场的前景非常广阔,DSP产业将成为21 世纪最具发展潜力的朝阳产业。近年来,随着DSP芯片产品价格的不断下滑,使DSP能够从以往的军用领域迅速拓展到民用领域,例如应用于计算机、网络、移动电话、调制解调器和磁盘驱动器以及众多的消费电子产品。

DSP学习涉及内容多,因此有的放矢,学以致用很重要。有几个重要的部分是一定要学好的:硬件的制作及学习;类/微驱动模型;c/汇编程序的开发;CSL/BSL的使用和理解;RF5算法构架;图像领域的知识等。

4. IC设计

你知道吗?上班的公交IC卡,ATM取钱的银行卡,楼宇的门卡等都是应用IC设计的产品,在现代世界不可或缺。IC设计(Integrated Circuit Design),或称为集成电路设计,是电子工程学和计算机工程学的一个学科,其主要内容是运用专业的逻辑和电路设计技术设计集成电路。

中国自2009年以来,透过强大的市场购买力与自有品牌的茁壮,中国IC设计业产值在全球市场的占有率逐步攀升。中国IC设计业者的订单需求在未来三年内有机会成为全球成长性最高的地区,为了搭上此波浪潮,2015~2017年将会是全球晶圆代工厂商争相布局卡位的重要时刻。

如何学习IC设计?需要具有一定的模拟电路基础,有数模混合电路设计经验;良好的电子电路分析能力;具有SOC的设计和验证的经验;精通Verilog,Tcl,C,Perl等设计语言。

嵌入式系统设计是电子产品设计的重要组成部分,目前国内外大部分科技公司、创客团队都建立了自己的嵌入式开发团队。团队所需的人员职位构成包括:系统设计工程师 、硬件工程师、底层驱动工程师、Linux系统工程师、应用设计工程师等。华清远见教育集团建议计算机、电子、通信、自动化等相关专业的同学可把嵌入式开发作为未来职业发展的方向,不论从薪资待遇还是发展前景来看,都非常不错。从工程师起步,一般有几个发展方向,一个是成为技术方面的核心,领域内的专家; 另一个是从项目中锻炼起来,成为项目主管或是管理型人才;再有就是利用自己的技术及行业经验去创业。总之,在物联网大的环境下,嵌入式开发将会成为最有发展前景的职业发展方向之一。

嵌入式开发要学什么

对于搞嵌入式软件的人,最重要的技术显然是(实际上很多公司的招聘广告上就是这样写的):(1) 掌握主流嵌入式微处理器的结构与原理(2) 必须掌握一个嵌入式操作系统(3) 必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。

首先要明确,嵌入式的工作有分工,有做硬件的,也有做软件的,硬件的工程如有做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 Specification),您必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件。有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原因.还有同学对ARM汇编不感兴趣,以为嵌入式开发用C语言就足够了。其实不应仅是将汇编语言当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。一个不熟悉汇编语言的人,怎么能在该处理器写出最优的C语言代码。在嵌入式开发的一些关键部分,有时还必须写汇编,如Bootloader等(可能还包括BSP)。特别是在对速度有极高要求的场合(如DSP处理器的高速图像采集和图像解压缩),目前主要还要靠汇编写程序(我看到过很多公司是这样做的)。当您在一个嵌入式公司工作时,在查看描述原理的手册时,可能很多都是用汇编描述的(我就遇到过),这是因为很多硬件设计人员只会写或者喜欢用汇编描述,此时您就必须看懂汇编程序,否则软硬件人员可能就无法交流。

2. 嵌入式操作系统类课程

除了WinCE的实时性稍差外,大多数嵌入式操作系统的实时性都很强,所以也可称为实时操作系统Real Time Operating System

.从事嵌入式的人至少须掌握一个嵌入式操作系统(当然掌握两个更好),这在嵌入式的所有技术中是最为关键的了。目前最重要的RTOS主要包括:

第一类、传统的经典RTOS

:最主要的便是Vxworks操作系统,以及其Tornado开发平台。Vxworks因出现稍早,实时性很强(据说可在1ms内响应外部事件请求),并且内核可极微(据说最小可8K),可靠性较高等,所以在北美,Vxworks占据了嵌入式系统的多半疆山。特别是在通信设备等实时性要求较高的系统中,几乎非Vxworks莫属。Vxworks的很多概念和技术都和Linux很类似,主要是C语言开发。像Bell-alcatel、Lucent、华为等通信企业在开发产品时,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功能有限,实用用得较少,所以我院不将其作为教学重点,要学习就应学直接实用的,比如 uClinux就很实用。况且熟悉了Linux开发,不仅在嵌入式领域有用,对开发Linux应用软件,对加深操作系统的认识也有帮助,可谓一举多得。据我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式开发,Fujitum则是在自己的处理器上大搞Linux开发。目前在嵌入式Linux领域,以下几个方面的人特别难找,一是能将Linux移植到某个新型号的开发版上;二是能写Linux驱动程序的人;三是熟悉Linux内核裁减和优化的人。我院在该嵌入式Linux方面的课程系列是:本科生操作系统必修课,然后是Linux程序设计选修课,最后是嵌入式Linux系统选修课。

第三类、 Windows CE嵌入式操作系统

:Microsoft也看准了嵌入式的巨大市场,MS永远是最厉害的,WinCE出来只有几年时间,但目前已占据了很大市场份额,特别是在PDA、手机、显示仪表等界面要求较高或者要求快速开发的场合,WinCE目前已很流行(据说有一家卖工控机的公司板子卖得太好,以至来不及为客户裁减WinCE)。由于WinCE开发都是大家熟悉的VC++环境,所以学过Windows程序设计课程的同学都不会有多大难度,这也是WinCE容易被人们接受的原因,开发环境方便快速,微软的强大技术支持,WinCE开发难度远低于嵌入式Linux。对于急于完成,不想拿嵌入式Linux冒险的开发场合,WinCE是最合适了(找嵌入式Linux的人可没那么好找的),毕竟公司不能像学生学习那样试试看,保证开发成功更重要。

3. 嵌入式开发的其它相关软件课程

搞嵌入式若能熟悉嵌入式应用的一些主要领域,这样的人更受企业欢迎。主要的相关领域包括:

A、数字图像压缩技术:这是嵌入式最重要最热门的应用领域之一,主要是应掌握MPEG编解码算法和技术,如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。为此,我院已预订了一位能开设数字图像处理课程的博士。

B、通信协议及编程技术:这包括传统的TCP/IP协议和热门的无线通信协议。首先,大多数嵌入式设备都要连入局域网或Internet,所以首先应掌握TCP/IP协议及其编程,这是需首要掌握的基本技术;其次,无线通信是目前的大趋势,所以掌握无线通信协议及编程也是是很重要的。无结通信协议包括无线局域网通信协议802.11系列,Bluetooth,以及移动通信(如GPRS、GSM、CDMA等)。

C、网络与信息安全技术:如加密技术,数字证书CA等。我院有这方面的选修课。

D、DSP技术

:DSP是Digital Signal Process数字信号处理的意思,DSP处理器通过硬件实现数字信号处理算法,如高速数据采集、压缩、解压缩、通信等。数字信号处理是电子、通信等硬件专业的课程,对于搞软件的人若能了解一下最好。目前DSP人才较缺。如果有信号与系统、数字信号处理等课程基础,对于学习MPEG编解码原理会有很大帮助。

4. 嵌入式开发的相关硬件基础

对于软件工程专业的学生,从事嵌入式软件开发,像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程是较重要的。另外,汇编语言、C/C++、 数据结构和算法、特别是操作系统等软件基础课也是十分重要的。我们的主要目地是能看懂硬件工作原理,但重点应是在嵌入式软件,特别操作系统级软件,那将是我们的优势。

我们的研究生里有些是学电子、通信类专业过来的,有较好的模拟电路和单片机基础,学嵌入式非常合适。嵌入式本身就是从单片机发展过来的,只是单片机不带OS,而现在很多嵌入式应用越来越复杂,以至不得不引入嵌入式操作系统。另外,为追求更高速的信号处理速度,现在在一些速度要求较高的场合,有不少公司是将一些DSP算法,如MPEG压缩解压缩算法等用硬件来实现,这就涉及到HDL数字电路设计技术及其FPGA/IP核实现技术,这方面的人目前市场上也很缺。

5.  题外话

另外,能写驱动程序的人目前是非常紧缺的(驱动程序也可归于嵌入式范畴)。公司每时每刻都要推出新产品,每一个新产品出来了,要能被操作系统所使用,是必须写驱动程序的。写驱动程序就必须掌握操作系统(如Windows或Linux)的内部工作原理,还涉及到少量硬件知识,难度较大,所以这方面的人很难找。想成为高手的同学,也可从驱动程序方面获得突破。

我可说一下自己的经历,我曾短暂地在一家公司写过WinCE驱动程序(正是因为知道这方面的人紧缺,所以才要做这方面的事),尽管那以前从未做过驱动程序,应聘那个职位时正是看准了公司是很难招聘到这方面的人,既然都找不到人,驱动还得有人做,这正是可能有机会切入这一领域的大好机会。面试时大讲自己写过多少万行汇编程序,对计算机工作原理如何清楚,简历中又写着我曾阅读完两本关于Windows Driver Model的两本英文原版书,写过几个小型的驱动程序练习程序(其实根本没写过,我们的同学将来千万不要像我这样,早练就些过硬功夫,就不至于沦落到我这等地步,就不用像我那样去“欺骗”公司了,我这是一个典型的反面教材),居然一切都PASS(当然最重要的是笔试和面试问题还说得过去),这只能说明这一领域找人的困难程度。公司本就未指望找到搞过驱动的人,找个有相关基础的人就算不错了。做了以后,发现也并不是怎样难的。其实搞驱动程序的工作是很舒服的,搞完一个版本就会空一段时间,只有等公司新的芯片推出或新的OS出现后,才需要再去开发新一版驱动。

在公众号后台回复【嵌入式】,可以查看最新出版的嵌入式方向的图书。

嵌入式图书,从入门到精通点击下图,可以放大观看!

作者| 图文来自网络、如涉及版权问题,请联系我们以便处理。文章内容纯属作者个人观点,不代表本网观点。

编辑| 老猫

读书吧QQ群:481160039

-END-


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言