嵌入式开发都要学习那些课程
转载:
嵌入式软件方面最重要的课程包括:
(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核实现技术,这方面的人目前市场上也很缺。
了解一下,你就知道大同小异了, 主要就是C、Linux和ARM课程。
我原来 想去培训,可是家里条件不允许,我没有那么多钱,后来我只好自学了,不懂的就上论坛问,我自己学了四个月,差不多也入门了,现在也是在做嵌入式开发。想想我自己走过的路,其实我发现,其实嵌入式并没有想象的难,关键是要花时间去学,要坚持几个月就可以了。
如果楼主还有时间,不妨自己学下。实在觉得困难的话再去培训吧。我朋友去杭州达内嵌入式培训的,学的比我系统,比我快。 楼主如果家里经济不错的话,也可以去培训吧。
嵌入式开发主要分2个方向(当然了还有更细的分类)
嵌入式硬件开发工程师
嵌入式软件开发工程师()
如果是偏硬件类:你需要懂电路,各种硬件(元器件),会看原理图,这些你得精通,数电模电你得熟悉,语言:C是必须的,汇编你也得熟悉(电子专业的最合适不过了),ARM体系结构要很熟悉,因为你是走底层的,大概就是这样的,linux也要熟悉(相对软件开发工程师,会玩就行),还有一些,我一时也想不起来了。
如果是偏软件类(我是这类的):相对硬件来说,我可以不需要精通电路,元器件,但是要得简单的懂点点,原理图要看的(这些在工作中可以和硬件人员慢慢沟通,问问他们,久了也就略知一二了)
下面要说重点了(主要偏LINUX系统),C语言必须完成掌握,汇编需要熟悉,熟悉一门面向对象语言(C++/JAVA等),我比较熟悉的是C++,因为偏软件类,你走的路线应该是中--上层(也就是OS层+APP层)
必须至少掌握一门IDE开发工具(比如QT,MFC,QT尤其重要)
ARM体系结构必须掌握
LINUX系统必须熟悉(当然了,如果选择WIN_CE的话,也是你的自由)
LINUX内核必须熟悉
嵌入式软件工程师一般的必须任务是什么呢:
1:u-boot的移植,编译
2:内核的裁剪,编译,移植
3:linux驱动的编译,编译,移植
4:文件系统的创建,编译,移植
5:应用程序你得会写(主要用QT写),当然你去玩android,你还得会java
写完了还不算完,你得用在板子上,所以,你要如果将写好的程序,交叉编译移植到板子上面去才行
基本都是这些了吧,一时没想到其它的
语言组织能力有限
可以追问
我也是自学嵌入式的!一开始很迷茫不知学什么!又没一个系统的学习计划!走了不小歪路!其实你想知道嵌入式学习那些课程,很简单!你上百度查一下那些培训机构在嵌入式开发都交一些什么课程,你就知道你应该要学哪些了!c是一定,linux也是必须,linux的版本建议选择ubantu。网络编程,系统编程看个人需要,内核、arm、驱动、arm汇编小不了!你要学习好嵌入式你首先就要有自己的一个学习计划!先学什么再学什么。所以培训机构网上招生说的课程就是你学习的一个很好的参考计划!第二步,如何找这些学习资料?如果只看书,那么你可以放弃学习嵌入式。嵌入式没那么简单!你可以上淘宝买一些学习嵌入式的视频看!国嵌收费版的还可以(在淘宝都是10块钱以内的)。当然你有钱有时间最好还是去培训一些。有人教还是容易上手小走歪路!
以上是我的一些个人经历和看法。希望对你有帮助!因为我曾经跟你一样的迷茫与无助!
看你使用哪种语言。还要看你准备嵌入的是哪种
想成为嵌入式工程师需要学习哪些内容
大致分为三个阶段:基础篇、进阶篇、大咖篇。入门嵌入式工程师 此阶段主要是前期的入门过程,主要针对入行没多久的新人。其实成功没有捷径,所以打好基础才是关键。嵌入式开发要学什么主要包含以下4个方面的内容:1.电路知识 首先你要学习电路、模电、数电,认识电阻、电容、三极管,基础器件要知道,放大...
嵌入式软件开发培训怎么样能学到什么
嵌入式软件开发是一门有广泛应用的技术,在汽车、智能家居、物联网等领域都有重要的作用。如果您对嵌入式软件开发感兴趣,想要系统地学习和掌握相关技能,那么选择千锋教育作为您的培训机构绝对是明智的选择。作为国内领先的IT互联网技术培训机构,千锋教育在嵌入式软件开发培训方面拥有丰富的经验和优势。更...
嵌入式开发需要学什么
1、掌握主流嵌入式微处理器的结构与原理,初学者建议学arm9微处理器。2、掌握一个嵌入式操作系统,一般而言,初学者建议学习uclinux系统或者linux系统。3、熟悉嵌入式软件开发流程并能够独立做一个嵌入式软件项目。
软件开发需要学习什么?
软件开发主要分为WEB开发、移动端开发、嵌入式开发三个开发方向,不同方向的学习内容也不同。1、WEB分为前端开发和后端开发,前端开发需要学CSS3、JavaScript、Html5,后端开发开发需要学PHP、Python、Java。2、移动端开发需要学OC或者Swift。3、嵌入式开发需要学C语言、计算机基础知识等。关于软件开发 软件...
嵌入式软件开发需要学哪些东西
嵌入式软件开发需要学的东西很杂,因为它跟普通的上层软件开发还是存在一定的差别的,主要表现在嵌入式软件是指针对某一种特定的需求或者应用而定制的硬件和软件平台,以及在该平台上运行的软件。所以,学习嵌入式软件开发不仅仅要懂软件开发方面的东西,也需要一些主流嵌入式操作系统、硬件体系架构和硬件资源...
想从事嵌入式开发,C语言学算法要学到很高深吗?
然而,并非所有嵌入式开发工作都需要高深的算法知识。具体要求取决于您所从事的项目和领域。有些嵌入式系统可能需要更复杂的算法,例如数字信号处理、图像处理或机器学习等领域。总体而言,对于初学者,建议先掌握C语言的基础知识,理解基本的算法和数据结构,并逐步深入学习与您所选择的嵌入式开发项目相关的...
请问,零基础自学嵌入式开发要学多久能到达参加工作的水平
学习嵌入式开发需要掌握电子、嵌入式系统、嵌入式编程语言等相关知识。对于有一定编程经验的学员来说,可能会相对容易上手。而对于零基础的学员来说,可能需要更多的时间和精力来学习和理解这些概念。在千锋教育,我们提供全面的嵌入式开发培训课程,并致力于帮助学员从零基础起步,掌握嵌入式开发技能,并达到...
嵌入式要学哪些东西?
刚开始:1)学习 Linux系统安装、 常用命令、应用程序安装。2) 学习 Linux 下的 C 编程 3)程序员大都要学:数据结构,嵌入式程序员数据结构必学!4)底层开发人员大都要学:微机原理、计算机体系结构,嵌入式开发人员必学!5)单片机可以让一个从事软件开发的人了解和如何操作硬件,有必要学,因为一开始...
学嵌入式开发都要学什么?
学习嵌入式开发需要掌握一系列的知识和技能,千锋教育是您更好的选择之一。我们致力于提供优质的IT互联网技术培训,包括嵌入式开发。更系统全面的学习资料,点击查看在学习嵌入式开发时,首先需要掌握的是C\/C++编程语言。C\/C++是嵌入式开发中最常用的编程语言,通过学习这两门语言,您可以了解到嵌入式系统...
嵌入式开发学习步骤
嵌入式开发的学习其实并没有那么难,只要了解学习的体系,掌握正确的学习方法,学习起来并不难。来讲一下嵌入式开发都要学些啥!嵌入式开发的主要学习内容:C,Java核心编程:c语言核心编程,Java核心编程;Linux核心操作与算法:Linux系统使用,Linux-c编程核心技术,精品数据结构,Linux-c编程精髓;核心...
月栋磷酸: 1、嵌入式系统作为除PC端外的另一种系统,应用领域极其广泛,分为单片机、ARM、FPGA、DSP、IC设计、微处理器体系结构几个方面.2、需要学习的东西有:Linux系统、c++、等.3、推荐华清星创客学院的教程,每个知识点都有对应的案例,理解起来很容易,零基础入门的量身教程.4、技术让你的每天的问题可以得到及时的解答,不留尾巴.5、课程内容干货多,废话少,交互式让枯燥的课程变得生动有趣,加强你的学习欲望.6、线上无费用试听.7、祝你学有所成.
非国家标准行政区划只宜作为统计汇总用地址代码18094604631: 嵌入式开发要学些什么? - ?
月栋磷酸: 1.C/C++语言,可以说这是计算机行业的一门必修课,所以要扎扎实实掌握好. 2.操作系统,要学习一下操作系统的基本原理,熟悉Linux环境下的开发环境,然后你就照着相关的资料写一个操作系统试试看. 3.计算机组成原理,要能够熟悉计算机的基本原理,看看你一个计算机的基本组成以及软件实质是如何来跑的. 4.可以选择一些书籍来作为参考. 5.arm,可以说是当下很流行的微机,自己可以想办法移植一个操作系统上去. 6.硬件编程语言,芯片到底是怎么做成的呢,学习完这门课程,你就很清楚了. 7.模拟电路&数字电路,硬件的基础,如果可以的话,学习下protel ,自己做个硬件pcb板试试. 要学的太多,嵌入式学习搜索朱 有 鹏
非国家标准行政区划只宜作为统计汇总用地址代码18094604631: 嵌入式开发要学哪些? - ?
月栋磷酸: 嵌入式主要内容包括linux系统,C语言开发,数据库等,JAVA部分的安卓开发等,学成后可以开发应用软件的,内核开发,驱动开发等工作,做项目.目前国内零基础的入门性课程较多,如果自己是软件开发相关专业或有较好的基础的,应该考虑星创客这样的专为培养中高级工程师的课
非国家标准行政区划只宜作为统计汇总用地址代码18094604631: 嵌入式开发要学什么?学习嵌入式开发要学哪些? - ?
月栋磷酸: 入门嵌入式工程师 此阶段主要是前期的入门过程,主要针对入行没多久的新人.其实成功没有捷径,所以打好基础才是关键.嵌入式开发要学什么主要包含以下4个方面的内容:1.电路知识 首先你要学习电路、模电、数电,认识电阻、电容、三...
非国家标准行政区划只宜作为统计汇总用地址代码18094604631: 嵌入式开发需要学什么? - ?
月栋磷酸: 看你是做嵌入式平台上的应用程序开发 还是嵌入式平台本身的开发.如果是应用级别的开发,现在主要是C语言和C++语言,不过手机游戏现在大量是用java.如果是平台本身的开发你就需要好好学习汇编语言和操作系统.因为要自己写平台的驱动和小型的操作系统.驱动大部分是汇编代码.其他 数据结构必需学好,然后就是单片机原理,高数,线数.要想写的代码效率高 数学很关键.建议先学C,然后数据结构,操作系统,汇编,单片机原理.以上学好已经足够开发.
非国家标准行政区划只宜作为统计汇总用地址代码18094604631: 学习嵌入式开发要学习哪些知识??
月栋磷酸: 学习嵌入式开发要学习C语言,汇编,数据结构,linux高级编程,ARM系统,嵌入式内核,嵌入式驱动等课程.详细的嵌入式系统学习要到专业的嵌入式培训机构,你可以到我毕业的粤嵌培训去看看,十分不错的,那里的讲师都出书了.
非国家标准行政区划只宜作为统计汇总用地址代码18094604631: 谁知道嵌入式开发专业主要学哪些内容 ? - ?
月栋磷酸: 你好,我是学ITO的,嵌入式专业很多的, 从基础来,入门后分向硬软两个方向偏重: 基础:计算机基础,数据结构,软件工程,C编程,C++原理,单片机原理,微机原理,计算机体系结构 软件偏重:Linux系统编程,软件工程高级,操作系统 硬件偏重:数字电路,FPGA,电路设计,自动控制
非国家标准行政区划只宜作为统计汇总用地址代码18094604631: 嵌入式开发要学什么 - ?
月栋磷酸: 嵌入式开发需要学习哪些基础知识:主要是C语言,熟悉linux系统.如果要侧重应用开发的话,掌握C++,学习QT;如果要侧重系统开发,对于linux内核以及计算机操作系统要有了解,当然不仅是linux,也有winCE等;如果要侧重设备驱动,那么你也要熟悉数据结构,了解内核,以及硬件的相关参数等等.
非国家标准行政区划只宜作为统计汇总用地址代码18094604631: 嵌入式系统专业课程有哪些? - ?
月栋磷酸: 嵌入式软件方面最重要的课程包括: (1) 嵌入式微处理器结构与应用 这是一门嵌入式硬件基础课程,我院用这门课取代了传统的“微机原理与接口”课程(目前国内已有少部分高校IT专业这样做了,因为讲x86微机原理与接口很难找到实际用...
非国家标准行政区划只宜作为统计汇总用地址代码18094604631: 嵌入式需要学什么? - ?
月栋磷酸:嵌入式是当前最热门最有发展前途的IT应用领域之一.像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、...