其一:
我虽然是从事嵌入式开发,但不敢说是高人.学习嵌入式软件开发大概有几个部分.
一,要求精通C语言编程,最好有些汇编知识.
二,要求英语功底要好,因为一些芯片手册都是英语写的.
三,要有数字电路和模拟电路的常识.因为在嵌入式系统后期测试的时候,都是依靠一些硬件设备进行测试,例如:示波器.
四,要熟悉操作系统.当然,所说的操作系统并不一定是WINDOWS,当中有LINUX,WINCE等,也有一些不同的RTOS,例如三菱和NEC的系统就与LINUX,WINCE和WINDOWS不同,是单任务操作系统,并非实时操作系统.
五,要有良好的软件工程知识.因为一切开发都是基于软件工程来实施的.
六,了解系统移植.
这些如果能做到,基本上可以了.找到一份嵌入式相关的工作应该没问题.
其二:这是一个学校的学院开设的课,但也有值得注意的地方
嵌入式软件方面最重要的课程包括:
(1)
嵌入式微处理器结构与应用:这是一门嵌入式硬件基础课程,我院用这门课取代了传统的“微机原理与接口”课程(目前国内已有少部分高校IT专业这样做了,因为讲x86微机原理与接口很难找到实际用处,只为教学而已)。我们说过,
嵌入式是软硬件结合的技术,搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解,包括ARM的汇编指令系统。若不了解处理器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬件打交道的)?很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器,将来若同学到公司中从事嵌入式软件开发,公司都会给你一本该设备的硬件规格说明书
(xxx
Specification),您必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件。有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原因,等我们的嵌入式实验室10月份建好后,您做了一些实验后就会觉得看得见摸得着。还有同学对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系统选修课。我院在Linux方面目前已有较强力量,魏老师和张老师熟悉Linux开发,金老师和唐老师熟悉Linux系统管理。
第三类、 Windows
CE嵌入式操作系统:Microsoft也看准了嵌入式的巨大市场,MS永远是最厉害的,WinCE出来只有几年时间,但目前已占据了很大市场份额,特别是在PDA、手机、显示仪表等界面要求较高或者要求快速开发的场合,WinCE目前已很流行(据说有一家卖工控机的公司板子卖得太好,以至来不及为客户裁减WinCE)。WinCE目前主要为4.2版(.NET),开发平台主要为WinCE Platform Builder,有时也用EVC环境开发一些较上层的应用,由于WinCE开发都是大家熟悉的VC++环境,所以我院学过Windows程序设计课程的同学都不会有多大难度,这也是WinCE容易被人们接受的原因,开发环境方便快速,微软的强大技术支持,WinCE开发难度远低于嵌入式Linux。对于急于完成,不想拿嵌入式Linux冒险的开发场合,WinCE是最合适了(找嵌入式Linux的人可没那么好找的),毕竟公司不能像学生学习那样试试看,保证开发成功更重要。根据不同的侧重点,WinCE还有两个特殊版本,一个是MS PocketPC操作系统专用于PDA上(掌上电脑),另一个是MS SmartPhone操作系统用于智能手机上(带PDA功能的手机),两者也都属于WinCE平台。在PDA和手机市场上,除WinCE外,著名的PDA嵌入式操作系统还有Palm OS(因出现很早,很有名)、Symbian等,但在WinCE的强劲冲击下,Palm和Symbian来日还能有多长?我院可能是全国高校中唯一一家开设专门的“Windows CE嵌入式操作系统“课程的学校,这主要是基于以下原因:我院本身前面便有Windows程序设计课程,同学学过VC++后再学WinCE,非常方便自然,通过学习WinCE同样也可了解嵌入式软件的一般开发过程,对Linux有惧怕心理的同学也很合适。很显然,嵌入式Linux永远不可能替代WinCE,而且将来谁占份额大还很难讲,毕竟很多人更愿意接受MS的平台,就像各国政府都在大力推LINUX已好长时间,但您能看到几个在PC机上真正使用LINUX的用户?据我观察,目前在嵌入式平台上,LINUX是叫得最响,但还是WinCE实际用得更多.嵌入式LINUX可能更多地是一些有长远产品计划的公司,为降低成本而进行长远考虑;
二是微软亚洲研究院对我院WinCE课程的支持计划,我们也很希望将来我院能有同学通过微软的面试去实习。WinCE和多媒体(如MPEG技术)是微软亚洲工程院目前做得较多的项目领域之一,他们很需要精通WinCE的人。
总结关于嵌入式操作系统类课程,若您觉得自己功底较深且能钻研下去,则可去学嵌入式Linux;若您觉得自己VC++功底较好且想短平快地学嵌入式开发,则我院的WinCE课程是最好的选择。
(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核实现技术,这方面的人目前市场上也很缺
分享到:
相关推荐
嵌入式优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目。 本人单片机开发经验充足,深耕嵌入式领域,有任何使用问题欢迎随时与我联系,我会...
"软件技术专业(嵌入式软件开发工程师方向)" 本资源摘要信息是关于软件技术专业(嵌入式软件开发工程师方向)的详细信息,涵盖了该专业的培养目标、职业岗位、课程体系、毕业标准等方面。 培养目标 软件技术专业...
例如,基于OCL约束建模的嵌入式软件安全性分析、嵌入式伺服控制器调试软件研究、以及大型服务器软件嵌入式开发与改进设计等,都是当前嵌入式软件设计与开发的重要研究方向。 通过以上的分析,我们可以看到,将人工...
嵌入式软件方向包括: 1.根据产品的功能需求设计软件 2.软件的设计工作量是硬件设计的4-5倍 面试电路单片机学习路径 面试电路单片机学习路径包括: 1.C语言基本语法 2.基础电路 3.51单片机 4.51单片机项目 5....
通过本课程,学生预期能提升C语言编程能力,学会使用实时操作系统进行多任务处理,理解嵌入式软件开发流程,掌握基本的硬件知识,独立或合作完成嵌入式游戏开发,精通嵌入式软件编程,以及具备操作系统移植的能力。...
嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。一方面,是...
嵌入式软件缺陷模式的探索和应用是一个深入的话题,涉及软件质量保证、软件测试以及故障诊断等多个方面。在当前计算机技术不断发展的背景下,嵌入式系统在我们的日常生活和工业生产中扮演着越来越重要的角色。安全...
嵌入式学习是循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式 Linux 方向,关注这个方向,大概分 3 个阶段:嵌入式 linux 上层应用、嵌入式 linux 系统开发、嵌入式 linux 驱动开发。...
针对嵌入式软件开发人员的培训,可以分为以下几个方向: - **系统开发**:专注于开发环境的搭建、内核原理、交叉编译等方面。 - **嵌入式Linux应用开发**:重点在于Linux应用程序的编写、内核编译和系统调用。 - **...
3. **软件开发**:嵌入式软件涵盖了操作系统(如RTOS,实时操作系统)、驱动程序、应用程序等。RTOS在嵌入式系统中尤为重要,因为它保证了任务的实时响应。 4. **编程语言**:C/C++是嵌入式开发最常用的编程语言,...
课程概况中,课程名称为嵌入式软件开发教学大纲,所属专业为计算机科学与技术,开课单位为数学计算机科学学院,课程类型为专业方向课程,课程代码为07492090,开课学期为6学分,学时为2学时,课堂讲授16+实验,核心...
"嵌入式软件开发面试题15道" 本文将对嵌入式软件开发面试题进行详细的解释和分析,从而帮助读者更好地理解嵌入式软件开发的知识点。 题目1:volatile关键字 在这道题中,我们可以看到volatile关键字的使用。...
【软件技术专业(嵌入式软件开发工程师方向)】 嵌入式软件开发是软件技术领域的一个重要分支,专为在各种设备的微处理器上运行的软件进行设计和开发。这个专业方向主要关注通信、电子、工控、安防等行业的产品设计和...
综上所述,基于人工智能的模块化嵌入式软件开发是一种创新的发展方向,它通过融合人工智能技术和模块化设计思想,有望彻底改变传统嵌入式软件开发模式,提升嵌入式软件的智能化水平和应用效果。未来,随着技术的不断...
物联网与嵌入式软件方向旨在培养基础扎实、知识面宽、具有创新精神、能够适应物联网技术发展需要的复合型人才。该方向涵盖了嵌入式系统原理及应用、操作系统开发技术、物联网工程等知识点,学生毕业后可从事物联网...
嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作。从事嵌入式软件开发的好处是: (1) 目前国内外这方面的人都很稀缺。一方面,是...
随着技术的发展,许多硬件设计工作被外包,而嵌入式软件成为产品差异化和增值的主要因素。因此,对于软件开发者来说,掌握嵌入式开发技能提供了广阔的职业前景。嵌入式领域的专家在市场上非常稀缺,这主要由于该领域...