您的位置 首页 新品

嵌入式初学者必知的常识和过程

嵌入式初学者必知的知识和步骤-目前嵌入式处理器常见的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire (冷火)等,但ARM占据了绝对主流(有资料说手机中几乎90%都是ARM处理器)。

嵌入式门槛虽然较高,但也跟其他事物相同,并不是牢不可破。只需咱们用心去对待,冬雪终将化去,春风定会吹来。详细进程如下:

1、《C言语》第二版 谭浩强; 《C程序规划言语》第二版 徐宝文译 机械工业出版社

你能区分隔指针数组和数组指针吗?你知道函数指针吗?

你能区分隔界说一个变量时体系给它分配的空间与用malloc()函数给一个变量分配的空间有什么不相同吗?

2、《数据结构》C言语版  黄国愉、叶乃青编 清华大学出版社

你能合上书本,用C言语完结书中的单链表、双链表数据结构吗?

3、《有用C++程序规划》第二板 我国电力出版社 Steve_Oualline著

此阶段首要是学习其面向对象的编程思维,加深对C言语和数据结构的了解。

嵌入式初学者必知的常识和进程

4、学习单片机,最好能找个长辈带一带。

你能用51单片机做出相同实践的东西吗?即便它再简略!
      要注意加深对中止的了解。

5、学习ARM单片机。

(1)、细读《ARM微操控器根底与实战》周立工编写(注:即便你不必书中的开发板)

(2)、细读相关芯片的原版英文文档。如:arm920TE.pdf  S3C2410_1.2.pdf

6、学习uCOS!!操作体系。

(1)、细读《嵌入式实时操作体系uC/OS-!!》第二版 召贝贝译

你能把uCOS!!移植到自己的渠道上吗?

(2)、能编写在uCOS!!操作体系环境下运转的针对详细硬件的驱动程序

7、了解Linux环境,学习Linux环境编程,学习穿插编程

(1)、细读《linux指令大全.pdf》

(2)、细读《GNU Make 运用手册(中译版).pdf》

(3)、学习创立穿插编程环境.

8、学习Linux操作体系。

(1)、《UNIX环境高档编程》

(2)、细读“joyfire 笔记”,可在“www.qianrushi.com”网站的好书下载栏目获取

(3)、细读《linux内核彻底注释》

(4)、细读《understanding the linux kernel 2》

(5)、运用源代码阅览利器东西"Source Insight"进行真实的linux内核原码刨析

(6)、最终进行内核移植,并能编写在linux操作体系环境下运转的针对详细硬件的驱动程序

9、学习Linux设备驱动编写。可参阅《Linux设备驱动程序》

10、温习C++,学惯用QT进行图形界面编程

(1)、细读《QT编程宝典》

(2)、学会经过检查QT电子文档进行QT GUI实地编程

(3)、学习穿插编程.(其实便是把指令qmake变为tmake)

11、当然,你也可学习一下PCB的制作和规划一个自己的CPU(即软壳)

在嵌入式软件方面最重要的课程包含:

(1) 嵌入式微处理器结构与运用:

这是一门嵌入式硬件根底课程,咱们说过,嵌入式是软硬件结合的技能,搞嵌入式软件的人应对ARM处理器作业原理和接口技能有充沛了解,包含ARM的汇编指令体系。若不了解处理器原理,怎样能操控硬件作业,怎样能写出节约内存又运转高速的最优代码(嵌入式软件规划特别考究时空功率),怎样能写出驱动程序(驱动程序都是与硬件打交道的)?许多公司招聘嵌入式软件人员时都要求了解ARM处理器,将来若同学到公司中从事嵌入式软件开发,公司都会给你一本该设备的硬件标准阐明书 (xxx SpecificaTIon),你有必要能看懂其间的内存散布和端口运用等最根本的阐明(就像x86汇编相同),不然怎样规划软件。有些同学觉得嵌入式处理 器课程较单调,这首要是硬件课程都较笼统的原因。还有同学对ARM汇编不感爱好,认为嵌入式开发用C言语就足够了。其实不该仅是将汇编言语当成一个程序规划言语,学汇编首要是为了把握处理器作业原理的。一个不了解汇编言语的人,怎样能在该处理器写出最优的C言语代码。在嵌入式开发的一些要害部分,有时还有必要写汇编,如Bootloader等(或许还包含BSP)。特别是在对速度有极高要求的场合(如DSP处理器的高速图画搜集和图画解紧缩),现在还会用到汇编写程序的,虽然用到的时机相对C要小得多。当你在一个嵌入式公司作业时,在检查描绘原理的手册时,或许许多都是用汇编描绘的,这是因为许多硬件规划人员只会写或许喜爱用汇编描绘,此刻你就有必要看懂汇编程序,不然软硬件人员或许就无法沟通。许多嵌入式职位招聘时都要求了解汇编。

[小常识] 现在嵌入式处理器常见的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire (冷火)等,但ARM占有了肯定干流(有材料说手机中简直90%都是ARM处理器)。ARM是一个只卖常识产权的公司,现在取得购买了ARM CPU核授权答应的大公司许多,包含Intel、Samsung、Amstel、Motorola、Philip等,他们都在ARM CPU核的根底上进行了一些外围扩展,构成自己的处理器(如Samsung S3C2410,Motorola i.MXL9328等处理器都是选用ARM 9内核,指令一级是相同的)。而许多中小公司又购买了这些处理器,规划了各式各样的开发板,如华恒等国内许多闻名嵌入式公司都出产依据SamsungS3C2410的开发板,供最终用户运用或供教育试验。在ARM这个食物链上,ARM公司是大鱼,Intel、Samsung等公司是小鱼,而华恒等则是虾米,最终用户(咱们这些要收购嵌入式开发板的)则是喂虾米的。Intel前期出产的是低端ARM(StrongARM,相当于ARM 7),现在转向首要出产高端ARM(即Intel Xscale处理器,归于ARMv5宗族,首要用在高端PDA上,如HP和DELL出产的PDA都选用Intel Xscale,价格较高)。现在运用最多的是ARM 7和ARM 9两类处理器。 ARM 7较廉价,可跑uclinux(是一个不支持高档内存办理功用的嵌入式Linux体体系)、Vxworks、uc/os II等实时操作体系,但因处理器不带内存办理单元MMU(无内存分页和地址映射机制,所以不能运用虚拟内存),所以不能跑WindowsCE,别的通用Linux中的某些内存办理功用也不能用在ARM 7上。ARM 9大都是一个带MMU功用的高端处理器,可跑WinCE或通用Linux的大多数功用。ARM7和ARM9的差异是在与体系结构上,前者是冯·诺伊曼结 构,后者是哈佛结构——指令和数据总线是分隔的。以上是我的一点了解,或许有不对的当地。咱们学院有十几套ARM 7开发体系(选用SamsungS3C44b0x开发板,首要用于嵌入式处理器结构、实时操作体系等课程试验用),ARM 9的体系好象也现已到了(选用的芯片我不知道也没去问),还有曾经的十几套MPC860开发板(传闻价格都很贵,很简略损坏),同学应保护运用和爱惜这样 的试验时机。

(2) 嵌入式操作体系类课程

除了WinCE的实时性稍差外,大多数嵌入式操作体系的实时性都很强,所以也可称为实时操作体系Real TIme OperaTIngSystem.从事嵌入式的人至少须把握一个嵌入式操作体系,这在嵌入式的一切技能中是最为要害的了。现在最重要的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上跑;另一种是跑在 ARM9上的,一般是将Linux2.4.18内核移植在其上,可运用更多的Linux功用(当然uClinux更可跑在ARM 9上)。许多人猜测,嵌入式Linux估计将占嵌入式操作体系的50%以上比例,十分重要。缺陷是了解Linux的人太少,开发难度稍大。别的,现在咱们 能发现许多教材和许多大学都以ucOS/II为教育用实时操作体系,这首要是因为ucOS/II较简略,且开源,十分适宜入门者学习实时操作体系原理,但因为ucOS/II功用有限,有用用得较少。何况了解了Linux开发,不仅在嵌入式范畴有用,对开发Linux运用软件,对加深操作体系的知道也有帮 助,可谓一举多得。据我所知,现在Intel、Philip都在大搞ARM+LINUX的嵌入式开发,Fujitum则是在自己的处理器上大搞Linux 开发。现在在嵌入式Linux范畴,以下几个方面的人特别难找,一是能将Linux移植到某个新类型的开发版上;二是能写Linux驱动程序的人;三是了解Linux内核削减和优化的人。不过LINUX有一个硬伤,便是没有WINDOWS那样的友爱便利漂亮的交互界面,不然微软帝国早就守不住了。

第三类、 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还有两个特别版别,一个是MSPocketPC操作体系专用于PDA上(掌上电脑),另一个是MS SmartPhone操作体系用于智能手机上(带PDA功用的手机),两者也都归于WinCE渠道。在PDA和手机商场上,除WinCE外,闻名的PDA 嵌入式操作体系还有Palm OS(因呈现很早,很有名)、Symbian等,但在WinCE的微弱冲击下,Palm和Symbian往日还能有多长?同学学过VC++后再学 WinCE,十分便利天然,经过学习WinCE相同也可了解嵌入式软件的一般开发进程,对Linux有惧怕心思的同学也很适宜。很显然,嵌入式Linux 永久不或许代替WinCE,而且将来谁占比例大还很难讲,究竟许多人更乐意承受MS的渠道,就像各国政府都在大力推LINUX已好长时刻,但你能看到几个 在PC机上真实运用LINUX的用户?据我调查,现在在嵌入式渠道上,LINUX是叫得最响,但仍是WinCE实践用得更多。嵌入式LINUX或许更多地是一些有久远产品方案的公司,为降低成本而进行久远考虑.WinCE和多媒体(如MPEG技能)是微软亚洲工程院现在做得较多的项目范畴之 一,现在社会很需求通晓WinCE的人。现在有WINCE的智能手机,金山词霸、WORD、EXCEL、REGEDIT等竟然都有 smartphone版的,PC上的MP3、DOC等竟然在download时都可被主动转换成smartphone格局,很爽的。彻底可用 Windows CE自己开发一些需求的程序download到自己的手机上。现在市道出售PDA智能手机火爆,MS总是财源滚滚。

总结关于嵌入式操作体系类课程,若你觉得自己功底较深且能研究下去,则可去学嵌入式Linux;若你觉得自己VC++功底较好且想短平快地学嵌入式开发,自学WINCE是十分好的挑选。

(3) 嵌入式开发的相关范畴

搞嵌入式若能了解嵌入式运用的一些首要范畴,这样的人更受企业欢迎。首要的相关范畴包含:

A、数字图画紧缩技能:这是嵌入式最重要最抢手的运用范畴之一,首要是应把握MPEG编解码算法和技能,如DVD、MP3、PDA、高精电视、机顶盒等都触及MPEG高速解码问题。

B、通讯协议及编程技能:这包含传统的TCP/IP协议和抢手的无线通讯协议。首要,大多数嵌入式设备都要连入局域网或Internet,所以首要应把握 TCP/IP协议及其编程,这是需首要把握的根本技能;其次,无线通讯是现在的大趋势,所以把握无线通讯协议及编程也是是很重要的。无线通讯协议包含无线局域网通讯协议802.11系列,Bluetooth,以及移动通讯(如GPRS、GSM、CDMA等)。

C、网络与信息安全技能:如加密技能,数字证书CA,以及各种网络安全设备,包含硬件防火墙,侵略检测IDS,还有防毒墙,IPS等,我国在这方面仍是没有自己优势的,咱们陈院长好象正在往这方面开展。

D、 DSP技能:DSP是Digital Signal Process数字信号处理的意思,DSP处理器经过硬件完结数字信号处理算法,如高速数据搜集、紧缩、解紧缩、通讯等。数字信号处理是电子、通讯等硬件 专业的课程,关于搞软件的人若能了解一下最好。现在DSP人才较缺。假如有信号与体系、数字信号处理等课程根底,关于学习MPEG编解码原理会有很大协助。

(4)嵌入式开发的相关硬件根底

关于软件工程专业的学生,从事嵌入式软件开发,像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程是较重要的。别的,汇编言语、C/C++ 数据结构算法、特别是操作体系等软件根底课也是十分重要的。咱们的首要目地是能看懂硬件作业原理,但要点应是在嵌入式软件,特别操作体系级软件,那将是咱们的优势。咱们的研究生里有些是学电子、通讯类专业过来的,有较好的模仿电路和单片机根底,学嵌入式十分适宜。嵌入式自身便是从单片机开展过来的,仅仅单片机不带OS,而现在许多嵌入式运用越来越杂乱,以致不得不引进嵌入式操作体系。别的,为寻求更高速的信号处理速度,现在在一些速度要求较高场合,有不少公司是将一些DSP算法,如MPEG紧缩解紧缩算法等用硬件来完结,这就触及到HDL数字电路规划技能及其 FPGA/IP核完结技能,这方面的人现在商场上也很缺。

学习嵌入式体系的10点主张

现在,国内如同在进行一个全民学习嵌入式的运动,但据了解,许多人在整个学习的进程中,因为某些技能范畴的空白或许是技能没有老练,再加上个人学习方法不正确,给个人的学习造成了极大的阻止,遇到这种状况该怎么处理?依据自己有限的学习经历,给学习嵌入式的人以下10点主张:

1. 遇到问题,首要进入baidu.com、www.google.com(或是其他查找引擎)查找一下,任何一个嵌入式工程师都不敢否定,这是学习嵌入式最好的教师!

2. 尽或许多的论坛,遇到问题,及时发贴,状况紧急的时分,能够在不同的论坛一起发贴,这样,并行处理你的问题或许会处理得更快些。

3.  尽或许多的结交嵌入式高手,最好是在公司上班的嵌入式工程师,他们有一个优势:了解商场,了解业界的开展动态。和他们多混混,对没有上班的学习者来说,是十分有必要的。

4.  要常常进入一些好的嵌入式网站,尤其是一些国外的网站,去看看嵌入式的开展动态,而且,要把这些网站都搜集起来。。。

5.  假如或许,我主张咱们在网上订一下电子刊物,这些电子刊物是准时发到你邮箱的,那些资讯都是最新的,能够说是很前卫的了。。。。。假如资金答应,主张报名参与嵌入式培训班,

6. 信任自己的挑选,信任自己职业的开展前景,要对自己的挑选和自己的职业有稠密的爱好,这一点做不到,你就很难学到很深邃的层次!

7. 寻求要执着!刚开始学习嵌入式体系,肯定会遇到许多问题,我其时也是这样,学了三个多月,如同一点发展都没有,我在置疑:莫非我不适宜搞嵌入式?其时我也想过抛弃,但心里太不甘愿了,脚都踏出了一只,我不能就这样屈了!于是就硬上,不断的揣摩。。。。(现在,总算知道什么是嵌入式linux了,哈哈。。。。)

8. 不要对自己要求过高,只需你比昨日前进了一点,你就离成功又近了一步!学习嵌入式也忌浮气燥(其实这一点,我最有感受!),也便是要结壮。

9. 万丈高楼平地起,不要疏忽了低层的东西,你越是学习到高层的技能,越是发觉低层的东西有用,这些咱们今后会有所领会的!我大一学习51单片机的时分,感觉它没什么用途,大二学习ARM处理器,才知道,没有51的根底,或许还不知道要多花多少时刻才干搞懂ARM的硬件。

10. 体系的选型的问题。现在的开源操作体系现已许多了,而且也做得十分老练,初学者也会为此而烦恼。现在较为盛行的嵌入式操作体系有:linux,winCE,VxWork,uC/OS2等等。。。。首要差异在于实时性的问题。假如你是搞自控(像我学习的专业,不过我不玩操控的。。。。),学习实时性高一点的操作体系更有协助,如VxWork.假如你想今后搞民用产品,如手机,机顶盒,终端设备之类的,学习linux,winCE这些便利于多任务运转的操作体系较好!主张你在学习之前先了解该体系的商场占有率,学东西得看看学完它之后究竟有没有作为啊,不然,你就一辈子只需自己玩体系啰。。.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/102507.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部