??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品黄AA片一区二区三区,一本色道久久HEZYO无码,久久人妻少妇嫩草AV蜜桃http://www.shnenglu.com/xushaohua/articles/17597.htmlshaohuashaohuaSat, 13 Jan 2007 11:22:00 GMThttp://www.shnenglu.com/xushaohua/articles/17597.htmlhttp://www.shnenglu.com/xushaohua/comments/17597.htmlhttp://www.shnenglu.com/xushaohua/articles/17597.html#Feedback0http://www.shnenglu.com/xushaohua/comments/commentRss/17597.htmlhttp://www.shnenglu.com/xushaohua/services/trackbacks/17597.html关于嵌入式系l方?
  嵌入式系l无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式pȝ用在一些特定专用设备上Q通常q些讑֤的硬件资?如处理器、存储器{?非常有限Qƈ且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化Q嵌入式更显重要。像我们q_常见到的?
机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相?DC)、数字摄像机(DV)、U-Disk、机盒(Set Top Box)、高清电?HDTV)、游戏机、智能玩兗交换机、\由器、数控设备或仪表、汽车电子、家甉|制系l、医疗A器、航天航I备等{都是典型的嵌入式系l?

  嵌入式系l是软硬l合的东西,搞嵌入式开发的人有两类?

  一cL学电子工E、通信工程{偏g专业n的hQ他们主要是搞硬件设计,有时要开发一些与g关系最密切的最底层软gQ如BootLoader、Board Support
Package(像PC的BIOS一P往下驱动硬Ӟ往上支持操作系l?Q最初的硬仉动程序等。他们的优势是对g原理非常清楚Q不x他们更擅长定义各U硬件接口,但对复杂软gpȝ往往力不从心(例如嵌入式操作系l原理和复杂应用软g{??

  另一cL学Y件、计机专业n的hQ主要从事嵌入式操作pȝ和应用Y件的开发。如果我们学软g的h对硬件原理和接口有较好的掌握Q我们完全也可写BSP和硬仉动程序。嵌入式g设计完后Q各U功能就全靠软g来实CQ嵌入式讑֤的增值很大程度上取决于嵌入式软gQ?
q占了嵌入式pȝ的最主要工作(目前有很多公司将g设计包给了专门的g公司Q稍复杂的硬仉交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发YӞ因ؓ公司都知道,嵌入式品的差异很大E度在Y件上Q在软g斚w是最有“花头“可做的)Q?
所以我们搞软g的h完全不用担心我们在嵌入式市场上的用武之地Q越是智能设备越是复杂系l,软gv关键作用Q而且q是目前的趋ѝ?

  从事嵌入式Y件开发的好处?

  (1)
目前国内外这斚w的h都很E~。一斚wQ是因ؓq一领域入门门槛较高Q不仅要懂较底层软g(例如操作pȝU、驱动程序软g)Q对软g专业水^要求较高(嵌入式系l对软g设计的时间和I间效率要求较高)Q而且必须懂得g的工作原理,所以非专业IT人员很难切入q一领域另一?
面,是因一领域较新Q目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式操作pȝ、MPEG技术、无UK信协议{?Q掌握这些新技术的人当然很找。嵌入式人才E~,wh自然高Q越有经验h格就高。其实嵌入式人才E根本原因可能是大多Ch无条
件接触这需要相应的嵌入式开发板和Y件另外需要有l验的hq行指导开发流E?

  (2)
与企业计等应用软g不同Q嵌入式领域人才的工作强度通常低一?但收入不?。搞企业应用软g的IT企业Q这个用Lpȝ搞完了,又得L下一个用LQ而且每个用户的需求和完成旉都得按客戯求改变,往往疲于奔命Q重复劳动。相比而言Q搞嵌入式系l的公司Q都有自q
产品计划Q按自己的节奏行事。所开发的产品通常是通用的,不会因客L不同而修攏V一个品型号开发完了,往往有较长一D늩闲时?或只是对软gq行一些小修补)Q有旉q行充电和休整。另外,从事嵌入式Y件的每个人工作范围相对狭H,所涉及的专业技术范围就是那?ARM?
RTOS、MPEG?02.11{?Q时间长了这些东西会搞有l验Q卖卖老本Q几句指g够让那些初入道者琢半q的。若搞应用YӞ可能下一个客戯换成一个完全不同的软g开发^収ͼ那就苦了?

  (3)
哪天若想创业Q搞自已的品,那么嵌入式是一个不错的LQ这可不像应用Y仉样容易被盗版。土木学院有一个叫启明星的公司开发出一个好象叫“工Ee”的掌上PDA(南校区门口有q告)Q施工技术h员用该PDA可当行土木概预算和其它土木计,据说销路特好。我认识的某大学
老师Q他开发的饭馆用的点菜PDA(WinCEq_Q可无线q网和上|?Q据他说销路不错,饭馆点点PDA让客L菜,多显z֤档次。我记得00U?2班当q有一l同学在学WindowsE序设计评时用VC设计了一个功能很强的点菜pȝ做ؓ评目Q当时真惛_议他们将q个软g做成PDAQ估计会
有些销?上v火R站南q场的Macdonald便用很漂亮的PDAl用L食品Q像摸像L)。这些PDA的硬件设计一般都是请其它公司l订?q叫“脓牌?OEM)Q都是通用的硬Ӟ我们只管设计软g变成自q产品了?

  从事嵌入式Y件开发的~点?

  (1) 入门L较高Q所用到的技术往往都有一定难度,若Yg基础不好Q特别是操作pȝUY件功底不深,则可能不适于此行?

  (2)
q方面的企业数量要远于企业计算cM业。特别是从事嵌入式的企业数量较?企业要搞自q产品创业)Q知名大公司较少(搞嵌入式的大公司主要有Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半g、Microtek、研华、华为、中兴通信、上q电
{制造类企业)。这些企业的习惯思维方式是到电子、通信{偏专业找人。由于正规高校Y件学院以前毕业生以企业计ؓ主,所以正规高校Y件学院与q些企业联系相对较少。正规高校Y件学院正U极努力Q目前已与其中部分公司徏立了联系Q争取今后能有正规高校Y件学院同学到q?
些企业中实习或就业?

  (3)有少数公司经常要士以上的h搞嵌入式Q主要是Z嵌入式的隑ֺ。但大多数公怹q无此要求,只要有经验即可?

  正规高校软g学院同学若学习嵌入式Q显然应偏重于嵌入式软gQ特别是嵌入式操作系l方面,应是我们的强V对于搞嵌入式Y件的人,最重要的技术显然是(实际上很多公司的招聘q告上就是这样写?:

  (1) 掌握L嵌入式微处理器的l构与原?

  (2) 必须掌握一个嵌入式操作pȝ

  (3) 必须熟悉嵌入式Y件开发流Eƈ臛_做过一个嵌入式软g目?

  正规高校软g学院在嵌入式软g斚w最重要的课E包?

  (1)
嵌入式微处理器结构与应用:q是一门嵌入式g基础评Q正规高校Y件学院用q门译֏代了传统的“微机原理与接口”课E?目前国内已有部分高校IT专业q样做了Q因x86微机原理与接口很难找到实际用处,只ؓ教学而已)。我们说q,嵌入式是软硬件结合的技术,搞嵌入式软g
的h应对ARM处理器工作原理和接口技术有充分了解Q包括ARM的汇~指令系l。若不了解处理器原理Q怎么能控制硬件工作,怎么能写省内存又q行高速的最优代?嵌入式Y件设计特别讲I时I效?Q怎么能写出驱动程?驱动E序都是与硬件打交道?很多公司招聘嵌入式Y件h?
旉要求熟悉ARM处理器,来若同学到公司中从事嵌入式软g开发,公司都会l你一本该讑֤的硬件规D明书 (xxx
Specification)Q您必须能看懂其中的内存分布和端口用等最基本的说?像x86汇编一?Q否则怎么设计软g。有些同学觉得嵌入式处理器课E较枯燥Q这主要是硬件课E都较抽象的原因Q等我们的嵌入式实验?0月䆾建好后,您做了一些实验后׃觉得看得见摸得着。还有同学对A
RM汇编不感兴趣Q以为嵌入式开发用C语言p够了。其实不应仅是将汇编语言当成一个程序设计语aQ学汇编主要是ؓ了掌握处理器工作原理的。一个不熟悉汇编语言的hQ怎么能在该处理器写出最优的C语言代码。在嵌入式开发的一些关键部分,有时q必d汇编Q如Bootloader{??
能还包括BSP)。特别是在对速度有极高要求的场合(如DSP处理器的高速图像采集和囑փ解压~?Q目前主要还要靠汇编写程?我看到过很多公司是这样做?。当您在一个嵌入式公司工作Ӟ在查看描q原理的手册Ӟ可能很多都是用汇~描q的(我就遇到q?Q这是因为很多硬件设计h?
只会写或者喜Ƣ用汇编描述Q此时您必ȝ懂汇~程序,否则软硬件h员可能就无法交流。很多嵌入式职位招聘旉要求熟悉汇编?

  (2) 嵌入式操作系l类评

  除了WinCE的实时性稍差外Q大多数嵌入式操作系l的实时性都很强所以也可称为实时操作系lReal Time Operating System.从事嵌入式的须掌握一个嵌入式操作pȝ(当然掌握两个更好)q在嵌入式的所有技术中是最为关键的了。目前最重要的RTOS主要包括:

  W一cR传l的l典RTOS:最主要的便是Vxworks操作pȝQ以及其Tornado开发^台。Vxworks因出现稍早,实时性很?据说可在1ms内响应外部事件请?Qƈ且内核可极微(据说最可8K)Q可靠性较高等Q所以在北美QVxworks占据了嵌入式pȝ的多半疆山。特别是在通信讑֤{实?
性要求较高的pȝ中,几乎非Vxworks莫属。Vxworks的很多概念和技术都和Linux很类|主要是C语言开发。像Bell-alcatel、Lucent、华为等通信企业在开发品时QVxworks用得很多。但Vxworks因h格很高,所以一些小公司或小产品中往往用不赗目前很多公叔R在往嵌入式Linux?
听说华ؓ目前正在q样?。但无论如何QVxworks在一D长旉内仍是不可动摇的。与VxworkscM的稍有名的实时操作系l还有pSOS、QNX、Nucleus{RTOS?

  W二cR嵌入式Linux操作pȝ:Linux的前途除作ؓ服务器操作系l外Q最成功的便是在嵌入式领域的应用Q原因当然是免费、开源、支持Y件多、呼拥者众Q这样嵌入式产品成本会低。Linux本n不是一个ؓ嵌入式设计的操作pȝQ不是微内核的,q且实时性不强。目前应用在嵌入?
领域的Linuxpȝ主要有两c?一cL专ؓ嵌入式设计的已被裁减q的LinuxpȝQ最常用的是uClinux(不带MMU功能)Q目前占较大应用份额Q可在ARM7上跑另一cL跑在ARM 9上的Q一般是Linux 2.4.18内核UL在其上,可用更多的Linux功能(当然uClinux更可跑在ARM
9?。很多h预测Q嵌入式Linux预计占嵌入式操作系l的50以上份额Q非帔R要。缺Ҏ熟悉Linux的h太少Q开发难度稍大。另外,目前我们能发现很多教材和很多大学都以ucOS/II为教学用实时操作pȝQ这主要是由于ucOS/II较简单,且开源,非常适合入门者学习实时操作系l原?
Q但׃ucOS/II功能有限Q实用用得较,所以正规高校Y件学院不其作ؓ教学重点Q要学习应学直接实用的Q比?
uClinux很实用。况且熟悉了Linux开发,不仅在嵌入式领域有用Q对开发Linux应用软gQ对加深操作pȝ的认识也有帮助,可谓一丑֤得。据我所知,目前Intel、Philip都在大搞ARMLINUX的嵌入式开发,Fujitum则是在自q处理器上大搞Linux开发。目前在嵌入式Linux领域Q以下几
个方面的人特别难找,一是能LinuxUL到某个新型号的开发版上二是能写Linux驱动E序的h三是熟悉Linux内核裁减和优化的人。正规高校Y件学院在该嵌入式Linux斚w的课E系列是:本科生操作系l必修课Q然后是LinuxE序设计选修课,最后是嵌入式Linuxpȝ选修课。正规高校Y
件学院在Linux斚w目前已有较强力量Q魏老师和张老师熟悉Linux开发,金老师和唐老师熟悉Linuxpȝ理?

  W三cR?Windows
CE嵌入式操作系l?Microsoft也看准了嵌入式的巨大市场QMS永远是最厉害的,WinCE出来只有几年旉Q但目前已占据了很大市场份额Q特别是在PDA、手机、显CZA表等界面要求较高或者要求快速开发的场合QWinCE目前已很行(据说有一家卖工控机的公司板子卖得太好Q以x不及?
客户裁减WinCE)。WinCE目前主要?.2?.NET)Q开发^C要ؓWinCE Platform
BuilderQ有时也用EVC环境开发一些较上层的应用,׃WinCE开发都是大家熟悉的VC环境Q所以正规高校Y件学院学qWindowsE序设计评的同学都不会有多大难度,q也是WinCEҎ被h们接受的原因Q开发环境方便快速,微Y的强大技术支持,WinCE开发难度远低于嵌入式Linux。对
于急于完成Q不x嵌入式Linux冒险的开发场合,WinCE是最合适了(扑ֵ入式Linux的h可没那么好找?Q毕竟公怸能像学生学习那样试试看,保证开发成功更重要。根据不同的侧重?QWinCEq有两个Ҏ版本Q一个是MS PocketPC操作pȝ专用于PDA?掌上电脑)Q另一个是MS
SmartPhone操作pȝ用于手机?带PDA功能的手?Q两者也都属于WinCEq_。在PDA和手机市ZQ除WinCE外,著名的PDA嵌入式操作系l还有Palm
OS(因出现很早,很有?、Symbian{,但在WinCE的强劲冲MQPalm和Symbian来日q能有多长正规高校Y件学院可能是全国高校中唯一一家开设专门的“Windows
CE嵌入式操作系l“课E的学校Q这主要是基于以下原?正规高校软g学院本n前面便有WindowsE序设计评Q同学学qVC后再学WinCE非常方便自然Q通过学习WinCE同样也可了解嵌入式Y件的一般开发过E,对Linux有惧怕心理的同学也很合适。很昄Q嵌入式Linux永远不可能替代Wi
nCEQ而且来谁占份额大还很难Ԍ毕竟很多人更愿意接受MS的^収ͼ像各国政府都在大力推LINUX已好长时_但您能看到几个在PCZ真正使用LINUX的用h我观察目前在嵌入式^CLINUX是叫得最响但q是WinCE实际用得更多.嵌入式LINUX可能更多地是一些有长远产品计划的公
ؓ降低成本而进行长q考虑 二是微Y亚洲研究院对正规高校软g学院WinCE评的支持计划,我们也很希望来正规高校软g学院能有同学通过微Y的面试去实习。WinCE和多媒体(如MPEG技?是微软亚z工E院目前做得较多的项目领域之一他们很需要精通WinCE的h?

  ȝ关于嵌入式操作系l类评Q若您觉得自己功底较׃能钻研下去,则可d嵌入式Linux若您觉得自己VC功底较好且想短^快地学嵌入式开发,则正规高校Y件学院的WinCE评是最好的选择?

  (3) 嵌入式开发的其它相关软g评

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

  A、数字图像压~技?q是嵌入式最重要最热门的应用领域之一Q主要是应掌握MPEG~解码算法和技术,如DVD、MP3、PDA、高_视、机盒{都涉及MPEG高速解码问题。ؓ此,正规高校软g学院已预订了一位能开设数字图像处理课E的博士?

  B、通信协议及编E技?q包括传l的TCP/IP协议和热门的无线通信协议。首先,大多数嵌入式讑֤都要q入局域网或InternetQ所以首先应掌握TCP/IP协议及其~程Q这是需首要掌握的基本技术其ơ,无线通信是目前的大趋势,所以掌握无UK信协议及编E也是是很重要的。无l?
信协议包括无U局域网通信协议802.11pdQBluetoothQ以及移动通信(如GPRS、GSM、CDMA{??

  C、网l与信息安全技?如加密技术,数字证书CA{。正规高校Y件学院有q方面的选修课?

  D、DSP技?DSP是Digital Signal
Process数字信号处理的意思,DSP处理器通过g实现数字信号处理法Q如高速数据采集、压~、解压羃、通信{。数字信号处理是电子、通信{硬件专业的评Q对于搞软g的h若能了解一下最好。目前DSP人才较缺。如果有信号与系l、数字信号处理等评基础Q对于学习MPEG~解
码原理会有很大帮助?

  (4)嵌入式开发的相关g基础

  对于软g工程专业的学生,从事嵌入式Y件开发,像数字电路、计机l成原理、嵌入式微处理器l构{硬件课E是较重要的。另外,汇编语言、C/C、数据结构和法、特别是操作pȝ{Y件基课也是十分重要的。我们的主要目地是能看懂g工作原理Q但重点应是在嵌入式软g
Q特别操作系l软gQ那是我们的优ѝ?

  我们的研I生里有些是学电子、通信cM业过来的Q有较好的模拟电路和单片机基Q学嵌入式非常合适。嵌入式本n是从单片机发展q来的,只是单片Z带OSQ而现在很多嵌入式应用来复杂,以至不得不引入嵌入式操作pȝ。另外,求更高速的信号处理速度Q现在在一
些速度要求较高的场合,有不公司是一些DSP法Q如MPEG压羃解压~算法等用硬件来实现Q这涉及到HDL数字电\设计技术及其FPGA/IP核实现技术,q方面的人目前市Z也很~?

  (5) 题外?

  另外Q能写驱动程序的人目前是非常紧缺?驱动E序也可归于嵌入式范?Q包括桌面Windows中的DDK开发环境和WDM驱动E序。公司每时每刻都要推出新产品Q每一个新产品出来了,要能被操作系l所使用Q是必须写驱动程序的。写驱动E序必L握操作系l?如Windows或Linux)
的内部工作原理,q涉及到量g知识Q难度较大,所以这斚w的h很难找。想成ؓ高手的同学,也可从驱动程序方面获得突破。我可说一下自ql历Q三q前我曾短暂地在一家公司写qWinCE驱动E序(正是因ؓ知道q方面的人紧~,所以才要做q方面的?Q尽那以前从未做过?
动程序,应聘那个职位时正是看准了公司是很难招聘到q方面的人,既然都找不到人,驱动q得有h做,q正是可能有Z切入q一领域的大好机会。面试时大讲自己写过多少万行汇编E序Q对计算机工作原理如何清楚,历中又写着我曾阅读完两本关于Windows Driver
Model的两本英文原版书Q写q几个小型的驱动E序l习E序(其实Ҏ没写q,我们的同学将来千万不要像我这P早练׃q硬功夫Q就不至于落到我这{地步,׃用像我那样去“欺骗”公怺Q我q是一个典型的反面教材)Q居然一切都PASS(当然最重要的是W试和面试问题还说得
q去)Q这只能说明q一领域找h的困隄度。公司本未指望扑ֈ搞过驱动的hQ找个有相关基础的hq不错了。做了以后,发现也ƈ不是怎样隄。其实搞驱动E序的工作是很舒服的Q搞完一个版本就会空一D|_只有{公司新的芯片推出或新的OS出现后,才需要再d发新一?
驱动Q那时有近一个月旉I闲着在等WinCE .NET Beta版推出,准备驱动程序升U到CE .NET上,现在在Y件学院工作整日忙Q无限怀念那D|闲时光?

  很y合,最q本人无意中再次体会C嵌入式的qh之处。上周我那用?q的手机l于不能WORK了。此ơ更斎ͼ除要求有手机常见功能外,最好有MP3功能(现在很多p听力都有MP3文g)Q最好有英汉词典Q最好还能读WORD文档。最后选了个满以上条件的最便宜的手机DOPOD
515(斩了?.2KQ但xq也自己对嵌入式事业的支持Q这样便也想开?Q算得上最低档的智能手Z。回来一查,手机的about昄Q本手机Processor是ARMQ其OS是MS Smartphone(即WinCE .NET
4.2)Q这么y合,直可做ؓ学习嵌入式课E的产品案例?{我们的WinCE评开得有声有色后Q希望能从微软研I搞些Smartphone来开发开?。有OS的手机果然了得,金山词霸、WORD、EXCEL、REGEDIT{居焉有smartphone版的QPC上的MP3、DOC{居然在download旉可被自动转换
成smartphone格式Q真是爽。完全可用Windows CE自己开发一些需要的E序download到自q手机上。现在市面销售PDA手机火爆QMSL财源滚滚。但我已发现国的ARMLINUX手机出现在市面上Qh格只1.2K?

  在GOOGLE|上能搜索太多的关于嵌入式系l的讨论了,我刚发现一个http:www.embyte.com 非常不错Q有很多有经验者谈自己的体会投入到其中的论坛中Q你会切w感到嵌入式学习的热潮?

  要么走ARMWinCEQ要么走ARMLINUXQ要么走ARMVXWORKS。每个搞嵌入式的人都可选一条\Q条条大路通罗马?



shaohua 2007-01-13 19:22 发表评论
]]>
从Y件的角度看嵌入式 Linux pȝhttp://www.shnenglu.com/xushaohua/articles/14588.htmlshaohuashaohuaThu, 02 Nov 2006 15:02:00 GMThttp://www.shnenglu.com/xushaohua/articles/14588.htmlhttp://www.shnenglu.com/xushaohua/comments/14588.htmlhttp://www.shnenglu.com/xushaohua/articles/14588.html#Feedback0http://www.shnenglu.com/xushaohua/comments/commentRss/14588.htmlhttp://www.shnenglu.com/xushaohua/services/trackbacks/14588.html
1. 引导加蝲E序。包括固化在Zg(firmware)中的 boot 代码(可?Q和 Boot Loader 两大部分?

2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数?

3. 文gpȝ。包括根文gpȝ和徏立于 Flash 内存讑֤之上文gpȝ。通常?ram disk 来作?root fs?

4. 用户应用E序。特定于用户的应用程序。有时在用户应用E序和内核层之间可能q会包括一个嵌入式囑Ş用户界面。常用的嵌入?GUI 有:MicroWindows ?MiniGUI 懂?

引导加蝲E序是系l加电后q行的第一DY件代码。回忆一?PC 的体pȝ构我们可以知道,PC Z的引导加载程序由 BIOS(其本质就是一D固件程?和位于硬?MBR 中的 OS Boot LoaderQ比如,LILO ?GRUB {)一L成。BIOS 在完成硬件检和资源分配后,硬?MBR 中的 Boot Loader dpȝ?RAM 中,然后控制权交给 OS Boot Loader。Boot Loader 的主要运行Q务就是将内核映象从硬盘上d RAM 中,然后跌{到内核的入口点去q行Q也卛_始启动操作系l?

而在嵌入式系l中Q通常q没有像 BIOS 那样的固件程序(注,有的嵌入?CPU 也会内嵌一D늟的启动E序Q,因此整个pȝ的加载启动Q务就完全?Boot Loader 来完成。比如在一个基?ARM7TDMI core 的嵌入式pȝ中,pȝ在上甉|复位旉常都从地址 0x00000000 处开始执行,而在q个地址处安排的通常是pȝ?Boot Loader E序?img src ="http://www.shnenglu.com/xushaohua/aggbug/14588.html" width = "1" height = "1" />

shaohua 2006-11-02 23:02 发表评论
]]>
嵌入式Linux开发站?/title><link>http://www.shnenglu.com/xushaohua/articles/13774.html</link><dc:creator>shaohua</dc:creator><author>shaohua</author><pubDate>Tue, 17 Oct 2006 05:13:00 GMT</pubDate><guid>http://www.shnenglu.com/xushaohua/articles/13774.html</guid><wfw:comment>http://www.shnenglu.com/xushaohua/comments/13774.html</wfw:comment><comments>http://www.shnenglu.com/xushaohua/articles/13774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/xushaohua/comments/commentRss/13774.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xushaohua/services/trackbacks/13774.html</trackback:ping><description><![CDATA[ <img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /> <a target="_blank">http://www.linuxsir.org/bbs/showthread.php?t=106634</a> <br /> <br />相关的新ȝ?br /><br />嵌入式开发网──新闻<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.embed.com.cn/news/newsmain.asp</a><br /><br /><br />国内有关嵌入式开发的论坛<br /><br />嵌入者之家论?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.embeder.com/bbs/index.asp</a><br /><br />电子产品世界的论坛[2004q?9?0日]<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://bbs.edw.com.cn/index.asp</a><br /><br />恒颐高科论坛[2004q?9?0日]<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.hyesco.com/forum/index.asp</a><br /><br /><br />国内站点<br /><br />华恒公司的主,里面有很多的相关资料Q有待大家去发现<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.hhcn.com/chinese/embedlinux-res.html</a><br /><br />SkyEye嵌入式硬件仿真项?br />www.skyeye.org<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://gro.clinux.org/projects/skyeye/</a><br /><br />公社的SkyEye目专栏<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.linuxfans.org/nuke/module...viewforum&f=58</a><br /><br />SkyEye Project<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.huihoo.org/mirrors/skyeye/index.html</a><br /><br />Pday水清木华Q一个国内看嵌入式新ȝ好地方!<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.pday.com.cn/</a><br /><br />中国单片机公共实验室<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.bol-system.com/</a><br /><br />中国Linux论坛的嵌入式版,有很多开发板原理囄资料<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://openarm.linuxforum.net/</a><br /><br />嵌入开发网<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.embed.com.cn/</a><br /><br />北京U银京成技术公?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.coretek.com.cn/</a><br /><br />微芯力科技<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.winsilicon.com</a><br /><br />驱动开发网之嵌入式版块Q挺l合的一个网?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.driverdevelop.com/index.php</a><br /><br />电子爱好者家园[2004q?9?0日]<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://home.ee521.com/main.asp</a><br /><br />q州友善之臂电子有限公司<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.arm9.net/index.asp</a><br /><br />艾比德嵌入开发网<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.ebdev.com/</a><br /><br />嵌入式资讯网(非商?[2006q?1?2日]<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.embeded.cn</a><br /><br /><br />国外站点<br /><br />Linux讑֤|站Q由Rick Lehrbaum创徏和维护,是一个嵌入式Linux入门|站Q其中包含嵌入式Linux行业的每日新闅R完整系列的快速参考指南、由重要开发者撰写的大量文章Q还包括一个交互论坛?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.linuxdevices.com/</a><br /><br />下蝲嵌入式Linux交叉~译工具铄好地?br />SnapGear Embedded Linux Distribution Home Page<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.snapgear.org/snapgear/index.html</a><br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.uclinux.org/pub/uClinux/u...f-tools/gcc-3/</a><br /><br />嵌入式Linux联盟(ELC)Q一个非盈利性的厂商中立的同业工会,其目标是在整个嵌入式、应用和讑֤市场中发展和推广Linux?br />www.embedded-linux.org<br /><br />Beyond Logic公司主页Q提供了许多嵌入式Linuxpȝ开发的资料?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.beyondlogic.org</a><br /><br />嵌入式Linux期刊(ELJQEmbedded Linux Journal)Q主要关注Linux和其他开源Y件在嵌入式系l中的应用。 其中有很多业界领导者ؓELJ撰写文章?br />embedded.linuxjournal.com<br /><br />有几本写嵌入式Linuxpȝ的书<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.embeddedlogic.com/ELSweb/booklinks.html</a><br /><br />有关PowerPC体系的嵌入式<br />www.mvista.com<br />www.denx.de/e/index1.php<br /><br />IXP4XX Open Source Developers Guide<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://ixp4xx-osdg.sourceforge.net/</a><br /><br />uClinux/ARM目<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://adam.kaist.ac.kr/~hschoe/notice.html</a><br /><br /><br />个h主页<br /><br />一个业余爱好者代C周的个Z,都是实践出来?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.lomx.net/index.htm</a><br /><br />D_J嵌入式个Z,有很多资料!<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://staff.ustc.edu.cn/~wangzhuo/index.html</a><br /><br />renbagshoes的个Z,有些资料可能对你有用<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://timity2.a77.zgsj.com</a><br /><br />老刘软g<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.laoliu-soft.net/</a><br /><br /><br />嵌入式Linux操作pȝ<br />型化的嵌入式Linux版本<br />uClinux — 在没有 MMU 的系l上q行的 Linux。目前支持 Motorola 68K、MCF5206 和 MCF5207 ColdFire 微处理器?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.uclinux.org/index.html</a><br /><br />Etlinux — 设计用于在型工业计算机,其是 PC/104 模块上运行的 Linux 的完全分发版<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.prosa.it/etlinux/index.html</a><br /><br />Tiny Linux ── 可以q行在?86 上的 Linux 分发版?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://tiny.seul.org/en/</a><br /><br />ThinLinux ── 面向专用的照相机服务器、X-10 控制器、MP3 播放器和其它cM的嵌入式应用的最化的 Linux 分发版?br />www.thinlinux.org<br /><br />LRP(Linux Route Project)<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.linuxrouter.org</a><br /><br />Peeweelinux一个小的嵌入式Linux发行?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://freshmeat.net/projects/peeweelinux</a><br /><br />h实时扩展功能的嵌入式Linux版本<br />RTLinux(Real Time Linux)是新墨西哥州大学计算机系的Victor Yodaiken和Michael Baranov?996q开始开发的Q现由Fsm Labs公司开发,其最新版本是RTLinux Pro1.2?针对Linux-2.4版本内核)。RTLinux最基本的概念就是“架I”Linux内核Q以便让其他的实时进E尽快地被执行?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.fsmlabs.com</a><br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.rtlinux.com</a><br /><br />RTAI(Realtime Application Interface)源于RTLinuxQ当时由于RTLinux的架构问题,RTLinux内核?.0版移植到2.2版发生了很大的困难,一直没有完成。在Dipartimento di Ingegneria Aerospaziale Politecnico di Milano工作的Paolo Mantegazza和他的同事们决定自行做UL的工作,由RTLinux的困境他们认识到Q必解军_来可能面临的兼容性问题,于是RTAI诞生了。它是一个GNU目Q它在Linux内核中加入一pd可以保证实时的~程接口Q来实现Linux的实时性。RTAI和RTLinux的区别在于它们实现方法不同?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.rtai.org</a><br /><br />EL/IX<br /><br />SRT-Linux<br /><br />MontaVista Linux是MontaVista公司发行的具有商业性质的嵌入式实时Linux。它直接修改Linux内核代码中的调度机制和算法,把Linux内核修改成称为Relatively Fully Preemptable Kernel的抢占式内核Q以辑ֈ一定的实时性,是一UY实时的Linux?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.mvista.com</a><br /><br />TimeSys Linux是一个商业化软gQ它同时提供?U实时Linux的方法:一U与MontaVista LinuxcMQ把Linux的内核改为抢占式内核Q另一U采用与RTAIcM的方法,在内核层提供了一套保证实时要求的API接口?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.timesys.com</a><br /><br /><br />嵌入式GUI<br /><br />Microwindows由Century Software的CEO Greg HaerrL开发的一个公开源码(LGPL)的项目。Microwindows致力于ؓ一些小型设备和q_提供C囑ŞH口环境。Microwindows支持许多gq_Q移植性很强。Microwindows的主要目的之一便是q行在嵌入式Linux上,q且提供了基于Win32/X的两套API接口?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.microwindows.org</a><br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://microwindows.org</a><br /><br />MiniGUI由原清华大学教师永明先生开发,是中国h做的得较好的自由软g之一。MiniGUI 是一U面向嵌入式pȝ或者实时系l的公开源码(LGPL)的图形用L面支持系l。它主要q行于Linux控制収ͼ实际可以q行在Q何一U具有POSIXU程支持的POSIX兼容pȝ上?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.minigui.org</a><br />飞O软g的MiniGUI目<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.minigui.com/company/cindex.shtml</a><br /><br />Qt/Embedded是著名的QT库开发商Trolltech正在q行的面向嵌入式pȝ的QT版本。Qt/Embedded对于各种g接口到GUI工具包提供了完整的图形栈。Qt/Embedded的API同Qt/X11和Qt/Windows的相同,但它q不是基于X11库的。Qt/Embedded是公开源码(LGPL)目?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.trolltech.com</a><br /><br />OpenGUIZ一个用汇编实现的x86囑Ş内核Q提供了一个快速的?2位的、高层的C/C++囑Ş接口。OpenGUI也是一个公开源码(LGPL)目。OpenGUI提供了二l绘囑֎语,消息驱动的API和BMP文g格式支持?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.tutok.sk/fastgl</a><br /><br />PicoGUI是一个可以工作在包括手持式设备等各种g上的型的、可UL的、基于客?服务器结构的GUI。同X Windowpȝ一P它具有客户—服务器l构的灵zL,但又不同于X WindowpȝQ它字体、BMP文g、控件以及一些应用程序所需要的其它的一些资源直接集成在服务器。虽然减了pȝ的灵zL,但在速度上有了很大的提高Qƈ且减了E序大小?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://picogui.org</a><br /><br />Tiny-X是一个ؓ嵌入式系l而开发的紧羃型的X Window服务器。它由SuSE赞助Q由XFree86的核心成员Keith Packard开发。Tiny-X的目标是可以在小内存或几乎无内存的情况下良好q行?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.pps.jussieu.fr/~jch/software/kdrive.html</a><br /><br />PIXIL提供嵌入式在高因特|中应用E序的应用。它虽然是ؓ商业化准备的Q但它提供GPL协议下的版本Q区别是没有技术支持?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.pixil.org</a><br /><br />NxZilla - Mozilla on NanoX<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://nxzilla.sourceforge.net</a><br /><br />Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of "Civilization: Call To Power."<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.libsdl.org/index.php</a><br /><br />GtkFB: GTK+ for the Linux Framebuffer<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.linuxdevices.com/</a> articles/AT9024868021.html<br /><br /><br />嵌入式Linux与Java<br />Java 2 Micro Edition(J2ME官方站点)<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.javasoft.com/j2me/</a><br /><br />waba为小讑֤提供一个编E^台。它被定义ؓ一U语aQ一个虚拟机Q一个类文g格式以及功能cȝ讄?br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://wabasoft.com/products.shtml</a><br /><br />Kaffe is a clean room implementation of the Java virtual machine, plus the associated class libraries needed to provide a Java runtime environment. The Kaffe virtual machine is free software, licensed under the terms of the GNU General Public License.<br />Kaffe is a great choice as a base for virtual machine education and/or research, or if you need a virtual machine as an integral component of an open source or free software Java distribution.<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.kaffe.org</a><br /><br />Wonka(一个java虚拟机,小)<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.acunia.com/wonka</a><br /><br /><br />选择内核<br /><br />x86<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.kernel.org</a><br /><br />ARM<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.arm.linux.org.uk/developer</a><br /><br />PowerPC<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://penguinppc.org</a><br /><br />MIPS<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.linux-mips.org</a><br /><br />SuperH<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://linuxsh.sourceforge.net</a><br /><br />M68K<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.linux-m68k.org</a><br /><br /><br />其他<br /><img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" /><a target="_blank">http://www.linuxabc.net</a><br /><img src ="http://www.shnenglu.com/xushaohua/aggbug/13774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xushaohua/" target="_blank">shaohua</a> 2006-10-17 13:13 <a href="http://www.shnenglu.com/xushaohua/articles/13774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]走进嵌入式Linux的世?/title><link>http://www.shnenglu.com/xushaohua/articles/10531.html</link><dc:creator>shaohua</dc:creator><author>shaohua</author><pubDate>Wed, 26 Jul 2006 07:06:00 GMT</pubDate><guid>http://www.shnenglu.com/xushaohua/articles/10531.html</guid><wfw:comment>http://www.shnenglu.com/xushaohua/comments/10531.html</wfw:comment><comments>http://www.shnenglu.com/xushaohua/articles/10531.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/xushaohua/comments/commentRss/10531.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xushaohua/services/trackbacks/10531.html</trackback:ping><description><![CDATA[ <blockquote> <p align="left"> <a name="0"> <span id="vdpptvn" class="atitle2">一、嵌入式pȝ</span> </a> </p> </blockquote> <p>嵌入式系l是以应用ؓ中心Q以计算机技术ؓ基础Qƈ且Yg是可裁剪的,适用于对功能、可靠性、成本、体U、功耗等有严D求的专用计算机系l。嵌入式pȝ最典型的特Ҏ与h们的日常生活紧密相关QQ何一个普通h都可能拥有各cdŞ形色色运用了嵌入式技术的电子产品Q小到MP3、PDA{微型数字化讑֤Q大C息家c智能电器、R载GISQ各U新型嵌入式讑֤在数量上已经q远过了通用计算机。这也难怪美国著名未来学家尼葛洛庞帝?999q?月访华时预aQ?~5q后嵌入式智能工具将成ؓlPC机和Internet之后计算机工业最伟大的发明?/p> <p> <strong>1.1 历史与现?/strong> </p> <p>虽然嵌入式系l是q几q才开始真正风靡v来的Q但事实上嵌入式q个概念却很早就已经存在了,从上个世U?0q代单片机的出现C天各U嵌入式微处理器、微控制器的q泛应用Q嵌入式pȝ说也有了近30q的历史。纵观嵌入式pȝ的发展历E,大致l历了以下四个阶D:</p> <ul> <li> <p> <strong>无操作系l阶D?/strong> </p> <p>嵌入式系l最初的应用是基于单片机的,大多以可~程控制器的形式出现Q具有监、伺服、设备指C等功能Q通常应用于各cd业控制和飞机、导弹等武器装备中,一般没有操作系l的支持Q只能通过汇编语言对系l进行直接控Ӟq行l束后再清除内存。这些装|虽然已l初步具备了嵌入式的应用特点Q但仅仅只是使用8位的CPU芯片来执行一些单U程的程序,因此严格地说q谈不上"pȝ"的概c?/p> <p>q一阶段嵌入式系l的主要特点是:pȝl构和功能相对单一Q处理效率较低,存储定w较小Q几乎没有用h口。由于这U嵌入式pȝ使用ѝhg廉,因而曾l在工业控制领域中得C非常q泛的应用,但却无法满CҎ行效率、存储容量都有较高要求的信息家电{场合的需要?/p> </li> <li> <p> <strong>单操作系l阶D?/strong> </p> <p>20世纪80q代Q随着微电子工艺水q的提高QIC刉商开始把嵌入式应用中所需要的微处理器、I/O接口、串行接口以及RAM、ROM{部件统l集成到一片VLSI中,刉出面向I/O设计的微控制器,q一举成为嵌入式pȝ领域中异军突L新秀。与此同Ӟ嵌入式系l的E序员也开始基于一些简单的"操作pȝ"开发嵌入式应用软gQ大大羃短了开发周期、提高了开发效率?/p> <p>q一阶段嵌入式系l的主要特点是:出现了大量高可靠、低功耗的嵌入式CPUQ如Power PC{)Q各U简单的嵌入式操作系l开始出现ƈ得到q速发展。此时的嵌入式操作系l虽然还比较单,但已l初步具有了一定的兼容性和扩展性,内核_y且效率高Q主要用来控制系l负载以及监控应用程序的q行?/p> </li> <li> <p> <strong>实时操作pȝ阶段</strong> </p> <p>20世纪90q代Q在分布控制、柔性制造、数字化通信和信息家늭巨大需求的牵引下,嵌入式系l进一步飞速发展,而面向实时信号处理算法的DSP产品则向着高速度、高_ֺ、低功耗的方向发展。随着g实时性要求的提高Q嵌入式pȝ的Y件规模也不断扩大Q逐渐形成了实时多d操作pȝQRTOSQ,q开始成为嵌入式pȝ的主?/p> <p>q一阶段嵌入式系l的主要特点是:操作pȝ的实时性得C很大改善Q已l能够运行在各种不同cd的微处理器上Q具有高度的模块化和扩展性。此时的嵌入式操作系l已l具备了文g和目录管理、设备管理、多d、网l、图形用L面(GUIQ等功能Qƈ提供了大量的应用E序接口QAPIQ,从而得应用Y件的开发变得更加简单?/p> </li> <li> <p> <strong>面向Internet阶段</strong> </p> <p>21世纪无疑是一个网l的时代Q将嵌入式系l应用到各种|络环境中去的呼声自然也来高。目前大多数嵌入式系l还孤立于Internet之外Q随着Internet的进一步发展,以及Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与Internet的结合才是嵌入式技术的真正未来?/p> <p>信息时代和数字时代的到来Qؓ嵌入式系l的发展带来了巨大的机遇Q同时也对嵌入式pȝ厂商提出了新的挑战。目前,嵌入式技术与Internet技术的l合正在推动着嵌入式技术的飞速发展,嵌入式系l的研究和应用生了如下新的显著变化Q?/p> <ol> <li>新的微处理器层出不穷Q嵌入式操作pȝ自nl构的设计更加便于移植,能够在短旉内支持更多的微处理器? </li> <li>嵌入式系l的开发成了一系l工E,开发厂商不仅要提供嵌入式Ygpȝ本nQ同时还要提供强大的g开发工具和软g支持包? </li> <li>通用计算Z使用的新技术、新观念开始逐步UL到嵌入式pȝ中,如嵌入式数据库、移动代理、实时CORBA{,嵌入式Y件^台得到进一步完善? </li> <li>各类嵌入式Linux操作pȝq速发展,׃h源代码开放、系l内核小、执行效率高、网l结构完整等特点Q很适合信息家电{嵌入式pȝ的需要,目前已经形成了能与Windows CE、Palm OS{嵌入式操作pȝq行有力竞争的局面? </li> <li>|络化、信息化的要求随着Internet技术的成熟和带宽的提高而日益突出,以往功能单一的设备如电话、手机、冰、微波炉{功能不再单一Q结构变得更加复杂,|络互联成ؓ必然势? </li> <li>_pȝ内核Q优化关键算法,降低功耗和软硬件成本? </li> <li>提供更加友好的多媒体人机交互界面?</li> </ol> </li> </ul> <p> <strong>1.2 体系l构</strong> </p> <p>Ҏ国际甉|和电子工E师协会QIEEEQ的定义Q嵌入式pȝ?控制、监视或者辅助设备、机器和车间q行的装|?Qdevices used to control, monitor, or assist the operation of equipment, machinery or plantsQ。一般而言Q整个嵌入式pȝ的体pȝ构可以分成四个部分:嵌入式处理器、嵌入式外围讑֤、嵌入式操作pȝ和嵌入式应用软gQ如?所C?/p> <p align="center"> <img alt="" src="http://www-900.ibm.com/developerWorks/cn/linux/l-embed/part1/image001.gif" /> <br />? 嵌入式系l的l成</p> <ul> <li> <p> <strong>嵌入式处理器</strong> </p> <p>嵌入式系l的核心是各U类型的嵌入式处理器Q嵌入式处理器与通用处理器最大的不同点在于,嵌入式CPU大多工作在ؓ特定用户所专门设计的系l中Q它通用CPU中许多由板卡完成的Q务集成到芯片内部Q从而有利于嵌入式系l在设计时趋于小型化Q同时还h很高的效率和可靠性?/p> <p>嵌入式处理器的体pȝ构经历了从CISCQ复杂指令集Q至RISCQ精指o集)和Compact RISC的{变,位数则由4位?位?6位?2位逐步发展?4位。目前常用的嵌入式处理器可分Z端的嵌入式微控制器(Micro Controller UnitQMCUQ、中高端的嵌入式微处理器QEmbedded Micro Processor UnitQEMPUQ、用于计机通信领域的嵌入式DSP处理器(Embedded Digital Signal ProcessorQEDSPQ和高度集成的嵌入式片上pȝQSystem On ChipQSOCQ?/p> <p>目前几乎每个半导体制造商都生产嵌入式处理器,q且来多的公司开始拥有自ȝ处理器设计部门,据不完全l计Q全世界嵌入式处理器已经过1000多种Q流行的体系l构?0多个pdQ其中以ARM、PowerPC、MC 68000、MIPS{用得最为广泛?/p> </li> <li> <p> <strong>嵌入式外围设?/strong> </p> <p>在嵌入系l硬件系l中Q除了中心控刉ӞMCU、DSP、EMPU、SOCQ以外,用于完成存储、通信、调试、显C等辅助功能的其他部Ӟ事实上都可以作嵌入式外围设备。目前常用的嵌入式外围设备按功能可以分ؓ存储讑֤、通信讑֤和显C备三cR?/p> <p>存储讑֤主要用于各类数据的存储,常用的有静态易失型存储器(RAM、SRAMQ、动态存储器QDRAMQ和非易失型存储器(ROM、EPROM、EEPROM、FLASHQ三U,其中FLASH凭借其可擦写次数多、存储速度快、存储容量大、hg宜等优点Q在嵌入式领域内得到了广泛应用?/p> <p>目前存在的绝大多数通信讑֤都可以直接在嵌入式系l中应用Q包括RS-232接口Q串行通信接口Q、SPIQ串行外围设备接口)、IrDAQ红外线接口Q、I2CQ现场ȝQ、USBQ通用串行ȝ接口Q、EthernetQ以太网接口Q等?/p> <p>׃嵌入式应用场合的Ҏ性,通常使用的是阴极线(CRTQ、液晶显C器QLCDQ和触摸板(Touch PanelQ等外围昄讑֤?/p> </li> <li> <p> <strong>嵌入式操作系l?/strong> </p> <p>Z使嵌入式pȝ的开发更加方便和快捷Q需要有专门负责理存储器分配、中断处理、Q务调度等功能的Y件模块,q就是嵌入式操作pȝ。嵌入式操作pȝ是用来支持嵌入式应用的系lYӞ是嵌入式pȝ极ؓ重要的组成部分,通常包括与硬件相关的底层驱动E序、系l内核、设备驱动接口、通信协议、图形用L面(GUIQ等。嵌入式操作pȝh通用操作pȝ的基本特点,如能够有效管理复杂的pȝ资源Q能够对gq行抽象Q能够提供库函数、驱动程序、开发工具集{。但与通用操作pȝ相比较,嵌入式操作系l在pȝ实时性、硬件依赖性、Y件固化性以及应用专用性等斚wQ具有更加鲜明的特点?/p> <p>嵌入式操作系l根据应用场合可以分Z大类Q一cL面向消费电子产品的非实时pȝQ这c设备包括个人数字助理(PDAQ、移动电话、机盒QSTBQ等Q另一cd是面向控制、通信、医疗等领域的实时操作系l,如WindRiver公司的VxWorks、QNXpȝ软g公司的QNX{。实时系l(Real Time SystemQ是一U能够在指定或者确定时间内完成pȝ功能Qƈ且对外部和内部事件在同步或者异步时间内能做出及时响应的pȝ。在实时pȝ中,操作的正性不仅依赖于逻辑设计的正程度,而且与这些操作进行的旉有关Q也是_实时pȝ寚w辑和时序的要求非常严格Q如果逻辑和时序控制出现偏差将会生严重后果?/p> <p>实时pȝ主要通过三个性能指标来衡量系l的实时性,卛_应时_Response TimeQ、生存时_Survival TimeQ和吞吐量(ThroughputQ:</p> <ul> <li> <strong>响应旉</strong>  是实时系l从识别Z个外部事件到做出响应的时_ </li> <li> <strong>生存旉</strong> 是数据的有效{待旉Q数据只有在q段旉内才是有效的Q? </li> <li> <strong>吞吐?/strong>   是在l定的时间内pȝ能够处理的事件LQ吞吐量通常比^均响应时间的倒数要小一炏V?</li> </ul> <p>实时pȝҎ响应旉可以分ؓ弱实时系l、一般实时系l和强实时系l三U。弱实时pȝ在设计时的宗旨是使各个Q务运行得快好Q但没有严格限定某一d必须在多长时间内完成Q弱实时pȝ更多x的是E序q行l果的正与否,以及pȝ安全性能{其他方面,对Q务执行时间的要求相对来讲较ؓ宽松Q一般响应时间可以是数十U或者更ѝ一般实时系l是弱实时系l和强实时系l的一U折P它的响应旉可以在秒的数量上,q泛应用于消费电子设备中。强实时pȝ则要求各个Q务不仅要保证执行q程和结果的正确性,同时q要保证在限定的旉内完成Q务,响应旉通常要求在毫U甚臛_U的数量U上Q这Ҏ及到ȝ、安全、军事的软硬件系l来说是臛_重要的?/p> <p>旉QdeadlineQ是实时pȝ中的一个重要概念,指的是对d截止旉的要求,Ҏ旉对系l性能的媄响程度,实时pȝ又可以分Y实时pȝQsoft real-time-systemQ和实时系l(hard real-time-systemQ。Y实时指的是虽然对pȝ响应旉有所限定Q但如果pȝ响应旉不能满要求Qƈ不会Dpȝ产生致命的错误或者崩溃;实时则指的是对pȝ响应旉有严格的限定Q如果系l响应时间不能满求,׃引vpȝ产生致命的错误或者崩溃。如果一个Q务在旉到达之时未完成Q对软实时系l来说还是可以容忍的Q最多只会降低系l性能Q但对硬实时pȝ来说则是无法接受的,因ؓq样带来的后果根本无法预,甚至可能是灾难性的。在目前实际q用的实时系l中Q通常允许软硬两种实时性同时存在,其中一些事件没有时限要求,另外一些事件的旉要求是Y实时的,而对pȝ产生关键影响的那些事件的旉要求则是实时的?/p> </li> <li> <p> <strong>嵌入式应用Y?/strong> </p> <p>嵌入式应用Y件是针对特定应用领域Q基于某一固定的硬件^収ͼ用来辑ֈ用户预期目标的计机软gQ由于用户Q务可能有旉和精度上的要求,因此有些嵌入式应用Y仉要特定嵌入式操作pȝ的支持。嵌入式应用软g和普通应用Y件有一定的区别Q它不仅要求其准性、安全性和E_性等斚w能够满实际应用的需要,而且q要可能地q行优化Q以减少对系l资源的消耗,降低g成本?/p> </li> </ul> <p> <strong>1.3 关键问题</strong> </p> <p>嵌入式系l是先q的计算机技术、半g技术以及电子技术与特定行业的具体应用相l合的物,因此必然是一个技术密集、资金密集、高度分散、不断创新的知识集成pȝQ嵌入式pȝ的开发充满了竞争、机遇与创新Q需要解军_如下一些关键问题:</p> <ol> <li> <strong>内核_y</strong>  嵌入式系l的应用领域一般都是小型电子装|,pȝ资源相对有限Q因此对内核的要求相当高Q较之传l的操作pȝ来讲要小得多Q例如ENEA公司推出的OSE分布式嵌入式pȝQ整个内核只?KB? </li> <li> <strong>面向应用</strong>  嵌入式系l通常是面向用戗面向品、面向特定应用的。嵌入式pȝ中的CPU大多工作在ؓ特定用户定制的环境中,h低耗、体U小、集成度高等特点Q在q行软硬件设计时必须H出效率、去除冗余,针对用户的具体需求对pȝq行合理的配|,方能辑ֈ理想的性能? </li> <li> <strong>pȝ_</strong>  嵌入式系l中的系lY件和应用软g通常没有明显的区别,不要求其功能及实Cq于复杂Q这样一斚w有利于控制系l成本,另一斚w也有利于保证pȝ安全? </li> <li> <strong>性能优化</strong>  嵌入式系l通常都要求有一定的实时性保障,Z提高执行速度和系l性能Q嵌入式pȝ中的软g一般都固化在存储芯片或者处理器的内部存储器件当中,而不是存贮在盘{外部蝲体中。由于嵌入式pȝ的运速度和存储容量存在一定程度上的限Ӟ而且大部分系l都必须有较高的实时性保证,因此对Y件质量(特别是可靠性方面)有着较高的要求? </li> <li> <strong>专业开?/strong>  嵌入式系l本wƈ不具备自d发能力,用户不能直接在其上进行二ơ开发。当pȝ完成之后Q用户如果需要修改其中某个程序的功能Q必d助一套完整的开发工具和环境。嵌入式pȝ中专用的开发工具和环境通常是基于通用计算Z的Yg讑֤Q以及各U逻辑分析仪、؜合信L波器{?</li> </ol> <p> <a name="1"> <span id="ztjhlll" class="atitle2">二、嵌入式Linux</span> </a> </p> <p>Linux?991q问世到现在Q短短的十几q时间已l发展成为功能强大、设计完善的操作pȝ之一Q不仅可以与各种传统的商业操作系l分庭抗争,在新兴的嵌入式操作系l领域内也获得了飞速发展。嵌入式LinuxQEmbedded LinuxQ是指对标准Linuxl过型化裁剪处理之后,能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作pȝ?/p> <p> <strong>2.1 优势</strong> </p> <p>嵌入式Linux的开发和研究是操作系l领域中的一个热点,目前已经开发成功的嵌入式系l中Q大U有一半用的是Linux。Linux之所以能在嵌入式pȝ市场上取得如此辉煌的成果Q与其自w的优良Ҏ是分不开的?/p> <ul> <li> <p> <strong>q泛的硬件支?/strong> </p> <p>Linux能够支持x86、ARM、MIPS、ALPHA、PowerPC{多U体pȝ构,目前已经成功UL到数十种gq_Q几乎能够运行在所有流行的CPU上。Linux有着异常丰富的驱动程序资源,支持各种Lg讑֤和最新硬件技术,甚至可以在没有存储管理单元(MMUQ的处理器上q行Q这些都q一步促q了Linux在嵌入式pȝ中的应用?/p> </li> <li> <p> <strong>内核高效E_</strong> </p> <p>Linux内核的高效和E_已经在各个领域内得到了大量事实的验证QLinux的内核设计非常精巧,分成q程调度、内存管理、进E间通信、虚拟文件系l和|络接口五大部分Q其独特的模块机制可以根据用L需要,实时地将某些模块插入到内核或从内怸U走。这些特性得Linuxpȝ内核可以裁剪得非常小巧,很适合于嵌入式pȝ的需要?/p> </li> <li> <p> <strong>开放源码,软g丰富</strong> </p> <p>Linux是开放源代码的自由操作系l,它ؓ用户提供了最大限度的自由度,׃嵌入式系l千差万别,往往需要针对具体的应用q行修改和优化,因而获得源代码变得至关重要了。Linux的Y件资源十分丰富,每一U通用E序在Linux上几乎都可以扑ֈQƈ且数量还在不断增加。在Linux上开发嵌入式应用软g一般不用从头做P而是可以选择一个类似的自由软g做ؓ原型Q在其上q行二次开发?/p> </li> <li> <p> <strong>优秀的开发工?/strong> </p> <p>开发嵌入式pȝ的关键是需要有一套完善的开发和调试工具。传l的嵌入式开发调试工h在线仿真器(In-Circuit EmulatorQICEQ,它通过取代目标板的微处理器Q给目标E序提供一个完整的仿真环境Q从而开发者能够非常清楚地了解到程序在目标板上的工作状态,便于监视和调试程序。在U仿真器的h格非常昂贵,而且只适合做非常底层的调试Q如果用的是嵌入式LinuxQ一旦Yg能够支持正常的串口功能时Q即使不用在U仿真器也可以很好地q行开发和调试工作Q从而节省了一W不的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(Tool ChainQ,它利用GNU的gcc做编译器Q用gdb、kgdb、xgdb做调试工P能够很方便地实现从操作系l到应用软g各个U别的调试?/p> </li> <li> <p> <strong>完善的网l通信和文件管理机?/strong> </p> <p>Linux臌生之日v׃Internet密不可分Q支持所有标准的Internet|络协议Qƈ且很ҎUL到嵌入式pȝ当中。此外,Linuxq支持ext2、fat16、fat32、romfs{文件系l,q些都ؓ开发嵌入式pȝ应用打下了很好的基础?/p> </li> </ul> <p> <strong>2.2 挑战</strong> </p> <p>目前Q嵌入式Linuxpȝ的研发热潮正在蓬勃兴Pq且占据了很大的市场份额Q除了一些传l的Linux公司Q如RedHat、MontaVista{)正在从事嵌入式Linux的开发和应用之外QIBM、Intel、Motorola{著名企业也开始进行嵌入式Linux的研I。虽然前景一片灿烂,但就目前而言Q嵌入式Linux的研I成果与市场的真正要求仍有一D差距,要开发出真正成熟的嵌入式LinuxpȝQ还需要从以下几个斚w做出努力?/p> <ul> <li> <p> <strong>提高pȝ实时?/strong> </p> <p>Linux虽然已经被成功地应用CPDA、移动电话、R载电视、机盒、网l微波炉{各U嵌入式讑֤上,但在ȝ、航I、交通、工业控制等对实时性要求非怸格的场合中还无法直接应用Q原因在于现有的Linux是一个通用的操作系l,虽然它也采用了许多技术来加快pȝ的运行和响应速度Qƈ且符合POSIX 1003.1b标准Q但从本质上来说q不是一个嵌入式实时操作pȝ。Linux的内核调度策略基本上是沿用UNIXpȝ的,它直接应用于嵌入式实时环境会有许多~陷Q如在运行内核线E时中断被关闭,分时调度{略存在旉上的不确定性,以及~Z高精度的计时器等{。正因如此,利用Linux作ؓ底层操作pȝQ在其上q行实时化改造,从而构建出一个具有实时处理能力的嵌入式系l,是现在日益流行的解决Ҏ?/p> </li> <li> <p> <strong>改善内核l构</strong> </p> <p>Linux内核采用的是整体式结构(MonolithicQ,整个内核是一个单独的、非常大的程序,q样虽然能够使系l的各个部分直接沟通,有效地羃短Q务之间的切换旉Q提高系l响应速度Q但与嵌入式pȝ存储定w、资源有限的特点不相W合。嵌入式pȝl常采用的是另一U称为微内核QMicrokernelQ的体系l构Q即内核本n只提供一些最基本的操作系l功能,如Q务调度、内存管理、中断处理等Q而类g文gpȝ和网l协议等附加功能则运行在用户I间中,q且可以Ҏ实际需要进行取舍。Microkernel的执行效率虽然比不上MonolithicQ但却大大减了内核的体U,便于l护和移植,更能满嵌入式系l的要求。可以考虑Linux内核部分攚w成MicrokernelQLinux在具有很高性能的同Ӟ又能满嵌入式系l体U小的要求?/p> </li> <li> <p> <strong>完善集成开发^?/strong> </p> <p>引入嵌入式Linuxpȝ集成开发^収ͼ是嵌入式Linuxq一步发展和应用的内在要求。传l上的嵌入式pȝ都是面向具体应用场合的,软g和硬件之间必ȝ密配合,但随着嵌入式系l规模的不断扩大和应用领域的不断扩展Q嵌入式操作pȝ的出现就成了一U必Ӟ因ؓ只有q样才能促成嵌入式系l朝层次化和模块化的方向发展。很昄Q嵌入式集成开发^C是符合上q发展趋势的Q一个优U的嵌入式集成开发环境能够提供比较完备的仿真功能Q可以实现嵌入式应用软g和嵌入式g的同步开发,从而摆׃"嵌入式应用Y件的开发依赖于嵌入式硬件的开发,q且以嵌入式g的开发ؓ前提"的不利局面。一个完整的嵌入式集成开发^台通常包括~译器、连接器、调试器、跟t器、优化器和集成用L面,目前Linux在基于图形界面的特定pȝ定制q_的研I上Q与Windows CE{商业嵌入式操作pȝ相比q有很大差距Q整体集成开发环境有待提高和完善?/p> </li> </ul> <p> <a name="2"> <span id="xxthlrh" class="atitle2">三、关键技?/span> </a> </p> <p>嵌入式系l是一U根据特定用途所专门开发的pȝQ它只完成预期要完成的功能,因此其开发过E和开发环境同传统的Y件开发相比有着显著的不同?/p> <p> <strong>3.1 开发流E?/strong> </p> <p>在嵌入式pȝ的应用开发中Q整个系l的开发过E如?所C:</p> <p align="center"> <img alt="" src="http://www-900.ibm.com/developerWorks/cn/linux/l-embed/part1/image002.gif" /> <br />? 嵌入式系l的开发流E?/p> <p>嵌入式系l发展到今天Q对应于各种微处理器的硬件^C般都是通用的、固定的、成熟的Q这大大减了q件系l引入错误的Z。此外,׃嵌入式操作系l屏蔽了底层g的复杂性,使得开发者通过操作pȝ提供的API函数可以完成大部分工作Q因此大大简化了开发过E,提高了系l的E_性。嵌入式pȝ的开发者现在已l从反复q行gq_设计的过E中解脱出来Q从而可以将主要_֊攑֜满特定的需求上?/p> <p>嵌入式系l通常是一个资源受限的pȝQ因此直接在嵌入式系l的gq_上编写Y件比较困难,有时候甚x不可能的。目前一般采用的解决办法是首先在通用计算Z~写E序Q然后通过交叉~译生成目标q_上可以运行的二进制代码格式,最后再下蝲到目标^C的特定位|上q行?/p> <p>需要交叉开发环境(Cross Development EnvironmentQ的支持是嵌入式应用软g开发时的一个显著特点,交叉开发环境是指编译、链接和调试嵌入式应用Y件的环境Q它与运行嵌入式应用软g的环境有所不同Q通常采用宿主机/目标机模式,如图3所C?/p> <p align="center"> <img alt="" src="http://www-900.ibm.com/developerWorks/cn/linux/l-embed/part1/image003.jpg" /> <br />? 交叉开发环?/p> <p>宿主机(HostQ是一台通用计算机(如PC机或者工作站Q,它通过串口或者以太网接口与目标机通信。宿L的Yg资源比较丰富Q不但包括功能强大的操作pȝQ如Windows和LinuxQ,而且q有各种各样优秀的开发工P如WindRiver的Tornado、Microsoft的Embedded Visual C++{)Q能够大大提高嵌入式应用软g的开发速度和效率?/p> <p>目标机(TargetQ一般在嵌入式应用Y件开发期间用,用来区别与嵌入式pȝ通信的宿LQ它可以是嵌入式应用软g的实际运行环境,也可以是能够替代实际q行环境的仿真系l,但Yg资源通常都比较有限。嵌入式pȝ的交叉开发环境一般包括交叉编译器、交叉调试器和系l仿真器Q其中交叉编译器用于在宿L上生成能在目标机上运行的代码Q而交叉调试器和系l仿真器则用于在宿主Z目标机间完成嵌入式Y件的调试。在采用宿主机/目标机模式开发嵌入式应用软gӞ首先利用宿主Z丰富的资源和良好的开发环境开发和仿真调试目标Z的YӞ然后通过串口或者以|络交叉编译生成的目标代码传输q装载到目标ZQƈ在监控程序或者操作系l的支持下利用交叉调试器q行分析和调试,最后目标机在特定环境下q宿主机单独运行?/p> <p>建立交叉开发环境是q行嵌入式Y件开发的W一步,目前常用的交叉开发环境主要有开攑֒商业两种cd。开攄交叉开发环境的典型代表是GNU工具链、目前已l能够支持x86、ARM、MIPS、PowerPC{多U处理器。商业的交叉开发环境则主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C++{?/p> <p> <strong>3.2 交叉~译和链?/strong> </p> <p>在完成嵌入式软g的编码之后,需要进行编译和链接以生成可执行代码Q由于开发过E大多是在用Intel公司x86pdCPU的通用计算Zq行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall{系列的微处理器Q这p求在建立好的交叉开发环境中q行交叉~译和链接?/p> <p>交叉~译器和交叉链接器是能够在宿L上运行,q且能够生成在目标机上直接运行的二进制代码的~译器和链接器。例如在ZARM体系l构的gcc交叉开发环境中Qarm-linux-gcc是交叉编译器Qarm-linux-ld是交叉链接器。通常情况下,q不是每一U体pȝ构的嵌入式微处理器都只对应于一U交叉编译器和交叉链接器Q比如对于M68K体系l构的gcc交叉开发环境而言Q就对应于多U不同的~译器和链接器。如果用的是COFF格式的可执行文gQ那么在~译Linux内核旉要用m68k-coff-gcc和m68k-coff-ldQ而在~译应用E序时则需要用m68k-coff-pic-gcc和m68k-coff-pic-ld?/p> <p>嵌入式系l在链接q程中通常都要求用较的函数库,以便最后生的可执行代码能够尽可能地小Q因此实际运用时一般用经q特D处理的函数库。对于嵌入式Linuxpȝ来讲Q功能越来越强、体U越来越大的C语言函数库glibc和数学函数库libm已经很难满实际的需要,因此需要采用它们的_֌版本uClibc、uClibm和newlib{?/p> <p>目前嵌入式的集成开发环境都支持交叉~译和交叉链接,如WindRiver Tornado和GNU工具铄Q编写好的嵌入式软gl过交叉~译和交叉链接后通常会生成两U类型的可执行文Ӟ用于调试的可执行文g和用于固化的可执行文件?/p> <p> <strong>3.3 交叉调试</strong> </p> <p>嵌入式Y件经q编译和链接后即q入调试阶段Q调试是软g开发过E中必不可少的一个环节,嵌入式Y件开发过E中的交叉调试与通用软g开发过E中的调试方式有所差别。在通用软g开发中Q调试器与被调试的程序往往q行在同一台计机上,调试器是一个单独运行着的进E,它通过操作pȝ提供的调试接口来控制被调试的q程。而在嵌入式Y件开发中Q调试时采用的是在宿L和目标机之间q行的交叉调试,调试器仍然运行在宿主机的通用操作pȝ之上Q但被调试的q程却是q行在基于特定硬件^台的嵌入式操作系l中Q调试器和被调试q程通过串口或者网l进行通信Q调试器可以控制、访问被调试q程Q读取被调试q程的当前状态,q能够改变被调试q程的运行状态?/p> <p>交叉调试QCross DebugQ又常常被称E调试(Remote DebugQ,是一U允许调试器以某U方式控制目标机上被调试q程的运行方式,q具有查看和修改目标Z内存单元、寄存器以及被调试进E中变量值等各种调试功能的调试方式。一般而言Q远E调试过E的l构如图4所C?/p> <p align="center"> <img alt="" src="http://www-900.ibm.com/developerWorks/cn/linux/l-embed/part1/image004.jpg" /> <br />?q程调试l构</p> <p>嵌入式系l的交叉调试有多U方法,可以被细分成不同的层ơ,但一般都h如下一些典型特点:</p> <ol> <li>调试器和被调试进E运行在不同的机器上Q调试器q行在PC或者工作站上(宿主机)Q而被调试的进E则q行在各U专业调试板上(目标机)? </li> <li>调试器通过某种通信方式与被调试q程建立联系Q如串口、ƈ口、网l、DBM、JTAG或者专用的通信方式? </li> <li>在目标机上一般会具备某种形式的调试代理,它负责与调试器共同配合完成对目标Zq行着的进E的调试。这U调试代理可能是某些支持调试功能的硬件设备(如DBI 2000Q,也可能是某些专门的调试YӞ如gdbserverQ? </li> <li>目标机可能是某种形式的系l仿真器Q通过在宿L上运行目标机的仿真YӞ整个调试q程可以在一台计机上运行。此时物理上虽然只有一台计机Q但逻辑上仍然存在着宿主机和目标机的区别?</li> </ol> <p>在嵌入式软g开发过E中的调试方式有很多U,应根据实际的开发要求和条gq行选择。就调试Ҏ而言Q嵌入式pȝ的交叉调试可以分为硬件调试和软g调试两种Q前者用仿真调试器协助调试q程Q而后者则使用软g调试器完成调试过E?/p> <ul> <li> <p> <strong>g调试</strong> </p> <p>相对于Y件调试而言Q用硬件调试器可以获得更强大的调试功能和更优秀的调试性能。硬件调试器的基本原理是通过仿真g的执行过E,让开发者在调试时可以随时了解到pȝ的当前执行情c目前嵌入式pȝ开发中最常用到的g调试器是ROM Monitor、ROM Emulator、In-Circuit Emulator和In-Circuit Debugger?/p> <p>采用ROM Monitor方式q行交叉调试需要在宿主Zq行调试器,在目标机上运行ROM监视器(ROM MonitorQ和被调试程序,宿主机通过调试器与目标Z的ROM监视器徏立通信q接Q它们之间的通信遵@q程调试协议。ROM监视器可以是一D运行在目标机ROM上的可执行程序,也可以是一个专门的g调试讑֤Q它负责监控目标Z被调试程序的q行情况Q能够与宿主机端的调试器一同完成对应用E序的调试。在使用q种调试方式Ӟ被调试程序首先通过ROM监视器下载到目标机,然后在ROM监视器的监控下完成调试,目前使用的绝大部分ROM监视器能够完成设|断炏V单步执行、查看寄存器、修改内存空间等各项调试功能?/p> <p>采用ROM Emulator方式q行交叉调试旉要用ROM仿真器,它通常被插入到目标Z的ROM插槽中,专门用于仿真目标Z的ROM芯片。在使用q种调试方式Ӟ被调试程序首先下载到ROM仿真器中Q它{效于下载到目标机的ROM芯片上,然后在ROM仿真器中完成对目标程序的调试。ROM Emulator调试方式通过使用一个ROM仿真器,虽然避免了每ơ修改程序后都必重新烧写到目标机ROM中这一Ҏ费力的操作,但由于ROM仿真器本w比较昂贵,功能相对来讲又比较单一Q因此只适应于某些特定场合?/p> <p>采用In-Circuit EmulatorQICEQ方式进行交叉调试时需要用在U仿真器Q它是仿照目标机上的CPU而专门设计的gQ可以完全仿真处理器芯片的行为,q且提供了非怸富的调试功能。在使用在线仿真器进行调试的q程中,可以按顺序单步执行,也可以倒退执行Q还可以实时查看所有需要的数据Q从而给调试q程带来了很多的便利。嵌入式pȝ应用的一个显著特Ҏ与现实世界中的硬件直接相养I存在各种异变和事先未知的变化Q从而给微处理器的指令执行带来各U不定因素Q这U不定性在目前情况下只有通过在线仿真器才有可能发玎ͼ因此管在线仿真器的h非常昂贵Q但仍然得到了非常广泛的应用?/p> <p>采用In-Circuit DebuggerQICDQ方式进行交叉调试时需要用在U调试器。由于ICE的h格非常昂贵,q且每种CPU都需要一U与之对应的ICEQ得开发成本非帔RQ一个比较好的解军_法是让CPU直接在其内部实现调试功能Qƈ通过在开发板上引出的调试端口Q发送调试命令和接收调试信息Q完成调试过E。目前Motorola公司提供的开发板上用的是DBM调试端口Q而ARM公司提供的开发板上用的则是JTAG调试端口Q用合适的软g工具与这些调试端口进行连接,可以获得与ICEcM的调试效果?/p> </li> <li> <p> <strong>软g调试</strong> </p> <p>软g调试通常要在不同的层ơ上q行Q有时可能需要对嵌入式操作系l的内核q行调试Q而有时可能仅仅只需要调试嵌入式应用E序可以了。在嵌入式系l的整个开发过E中Q不同层ơ上的Y件调试需要用不同的调试Ҏ?/p> <p>嵌入式操作系l的内核调试相对来讲比较困难Q这是因为在内核中不便于增加一个调试器E序Q而只能通过q程调试的方法,通过串口和操作系l内|的"调试?Qdebug stubQ进行通信Q共同完成调试过E。调试桩可以看成是一个调试服务器Q它通过操作pȝ获得一些必要的调试信息Qƈ且负责处理宿L发送来的调试命令。具体到嵌入式Linuxpȝ内核Q调试时可以先在Linux内核中设|一个调试桩Q用作调试过E中和宿L之间的通信服务器,然后可以在宿主Z通过调试器的串口与调试桩q行通信Qƈ通过调试器控制目标机上Linux内核的运行?/p> <p>嵌入式应用Y件的调试可以使用本地调试和远E调试两U方法,相对于操作系l的调试而言Q这两种方式都比较简单。如果采用的是本地调试,首先要将所需的调试器UL到目标系l中Q然后就可以直接在目标机上运行调试器来调试应用程序了Q如果采用的是远E调试,则需要移植一个调试服务器到目标系l中Qƈ通过它与宿主Z的调试器共同完成应用E序的调试。在嵌入式Linuxpȝ的开发中Q远E调试时目标Z使用的调试服务器通常是gdbserverQ而宿L上用的调试器则是gdbQ两者相互配合共同完成调试过E?/p> </li> </ul> <p> <strong>3.4 pȝ试</strong> </p> <p>嵌入式系l的g一般采用专门的试仪器q行试Q而Y件则需要有相关的测试技术和试工具的支持,q要采用特定的测试策略。测试技术指的是软g试的专门途径Q以及能够更加有效地q用q些途径的特定方法。在嵌入式Y件测试中Q常常要在基于目标机的测试和Z宿主机的试之间做出折衷Q基于目标机的测试需要消耗较多的旉和经费,而基于宿L的测试虽然代仯,但毕竟是在仿真环境中q行的,因此难以完全反映软gq行时的实际情况。这两种环境下的试可以发现不同的Y件缺P关键是要对目标机环境和宿L环境下的试内容q行合理取舍?/p> <p>试工具指的是那些能够用来辅助测试的工具Q测试工具主要用来支持测试h员的试工作Q本w不能直接用来进行测试,试工具一般都是通用工具Q测试h员应该根据实际情况对它们q行适当的调整。嵌入式软g试中经常用到测试工具主要有内存分析工具、性能分析工具、覆盖分析工兗缺陯t工L?/p> <ul> <li> <p> <strong>内存分析工具</strong> </p> <p>嵌入式系l的内存资源通常是受限的Q内存分析工具可以用来处理在q行动态内存分配时产生的缺陗当动态分配的内存被错误地引用Ӟ产生的错误通常难以再现Q可出现的失效难以追t,使用内存分析工具可以很好地检出q类~陷。目前常用的内存分析工具有Y件和g两种Q基于Y件的内存分析工具可能会对代码的执行性能带来很大影响Q从而媄响系l的实时性;Zg的内存分析工具h格昂贵,q且只能在特定的环境中用?/p> </li> <li> <p> <strong>性能分析工具</strong> </p> <p>嵌入式系l的性能通常是一个非常关键的因素Q开发h员一般需要对pȝ的某些关键代码进行优化来改进性能Q而首先遇到的问题自然是定需要对哪些代码q行优化。性能分析工具可以为开发h员提供有关的数据Q说明执行时间是如何消耗的Q是什么时候消耗的Q以及每个进E所使用的时间。这些数据可以帮助确定哪些进E消耗了q多的执行时_从而可以决定如何优化YӞ以获得更好的旉性能。此外,性能分析工具q可以引导开发h员发现在pȝ调用中存在的错误以及E序l构上的~陷?/p> </li> <li> <p> <strong>覆盖分析工具</strong> </p> <p>在进行白盒测试时Q可以用代码覆盖分析工兯t哪些代码被执行q,分析q程一般通过插桩来完成,插桩可以是在试环境中嵌入硬Ӟ也可以是在可执行代码中加入YӞ或者是两者的l合。开发h员通过对分析结果进行ȝQ可以确定哪些代码被执行q,哪些代码被遗漏了。目前常用的覆盖分析工具一般都会提供有兛_能覆盖、分支覆盖、条件覆盖等信息?/p> </li> </ul> <p> <a name="3"> <span id="jtvhvpx" class="atitle2">四、小l?/span> </a> </p> <p>C的嵌入式pȝ在网l化潮流的推动下Q已l逐渐摆脱q去那种y而简单的模式Q开始进入复杂度高、功能强大的阶段Q吸引了许多E序设计人员和硬件开发h员的视线。本文讨Z嵌入式Linuxpȝ的基本知识、开发流E、开发工兗调试工兗测试工LQƈ指出了嵌入式pȝ的开发与一般通用计算Y件开发的不同点及应该注意的事,q些都是今后在进行嵌入式Linuxpȝ开发时必须具备的基知识?/p> <img src ="http://www.shnenglu.com/xushaohua/aggbug/10531.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xushaohua/" target="_blank">shaohua</a> 2006-07-26 15:06 <a href="http://www.shnenglu.com/xushaohua/articles/10531.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.xiaomaidou.cn" target="_blank">ƷëƬþþþþþ</a>| <a href="http://www.banburi.cn" target="_blank">ۺϾþһ</a>| <a href="http://www.51peini.cn" target="_blank">ҹƷþ</a>| <a href="http://www.yjtrade.cn" target="_blank">ɫվþþþۺywww</a>| <a href="http://www.geekon.com.cn" target="_blank">˾þվ</a>| <a href="http://www.guceka.cn" target="_blank">þþþӰԺС</a>| <a href="http://www.jj123.com.cn" target="_blank">AŮAVۺϾþþ</a>| <a href="http://www.goldquote.cn" target="_blank">vĻþ</a>| <a href="http://www.ondai.com.cn" target="_blank">2020þþƷ</a>| <a href="http://www.kangaiw.cn" target="_blank">޾ƷþþþAV鶹</a>| <a href="http://www.51xwj.cn" target="_blank">Ļþۺ</a>| <a href="http://www.mir818.cn" target="_blank">97þþƷˬ</a>| <a href="http://www.s5273.cn" target="_blank">޾ƷҾþþþþ</a>| <a href="http://www.fozhun.cn" target="_blank">þav߳avav紵</a>| <a href="http://www.kkha.cn" target="_blank">þþþƷsmվ</a>| <a href="http://www.lae.net.cn" target="_blank">þˬˬƬAV鶹</a>| <a href="http://www.etcaisn.cn" target="_blank">պAVþһ </a>| <a href="http://www.lyfulinmen.com.cn" target="_blank">ۿ ۺϾþþþùɫ ŷ һ </a>| <a href="http://www.aktg.com.cn" target="_blank">ƷŷƬþùŷ </a>| <a href="http://www.40theft.cn" target="_blank">þ99ۺϾƷ</a>| <a href="http://www.tgl999.cn" target="_blank">þ˳ƷCAOPOREN</a>| <a href="http://www.touzhi8.cn" target="_blank">þþƷˬӰ</a>| <a href="http://www.hypcba.cn" target="_blank">ɫۺϾþ</a>| <a href="http://www.6q7q.cn" target="_blank">˾þó˳ۺ222</a>| <a href="http://www.52cxw.cn" target="_blank">þþžѸƵ</a>| <a href="http://www.0577114.cn" target="_blank">91þþžվ</a>| <a href="http://www.ampv.cn" target="_blank">þþƷˬ97</a>| <a href="http://www.3344pltn.cn" target="_blank">99ƷþþƷһ</a>| <a href="http://www.langmyc.cn" target="_blank">ھƷ˾þþӰԺ</a>| <a href="http://www.jytextile.cn" target="_blank">޾ƷþþþAV鶹</a>| <a href="http://www.qq577.cn" target="_blank">ŷþ޾Ʒ</a>| <a href="http://www.xxupng.cn" target="_blank">һþöۺ </a>| <a href="http://www.wzorg.cn" target="_blank">þþþavۺϲҰ</a>| <a href="http://www.anatolia.com.cn" target="_blank">LƷþ</a>| <a href="http://www.hz-yarnexpo.com.cn" target="_blank">ƷŮþþþþ2018</a>| <a href="http://www.wltceiling.cn" target="_blank">þˬһ</a>| <a href="http://www.panda-pc.cn" target="_blank">Ļþþ</a>| <a href="http://www.qp576.cn" target="_blank">99þþƷѿһ </a>| <a href="http://www.t2tt.cn" target="_blank">ھƷþþþӰԺձ</a>| <a href="http://www.51maicha.cn" target="_blank">69Ʒþþþվ</a>| <a href="http://www.bxxlsl.cn" target="_blank">պƷþĻ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>