YIG37GOG学位论文@基于ARM视频采集系统的设计与实现周广荣指导教师申请学位级别专业名称学位授予单位夏志忠教授工学硕士通信与信息系统大连海事大学中文摘要摘要随着计算机技术的不断发展,ARM技术和嵌入式系统的出现,嵌入式系统的应用领域在不断发展,它所涉及的领域包括工业控制、消费电子、网络通信、科学研究、军事国防、医疗卫生、航空航天等方方面面。本文采用理论与实践相结合的方式,通过对ARM系统的设计与调试,从而掌握了对嵌入式系统的设计与开发。本文采用ARM920T芯片作为嵌入式系统视频采集的处珲器,详细阐述了嵌入式系统的设计与开发过程,其中包括:交叉编译环境的搭建:交叉编译环境是嵌入式开发工具的集合,搭建该环境就足在系统中编译安装开发工具链。操作系统内核的移植:内核移植是嵌入式开发的重要部分,移植内核主要是对内核进行重新配置,使它符合特定系统的需要,然后重新编译生成可执行的内核镜像文件。文件系统的移植:文件系统是操作系统对数据进行管理的有效和必要的助手。移植文件系统包括制作义件系统镜像,在Flash上为文件系统分配存储空间以及文件系统与嵌入式操作系统的有效配合。驱动程序的设计:驱动是操作系统与硬件沟通的桥梁,驱动设计就是编写具体硬件的读写控制函数并向操作系统提供统一的接口。本文着重介绍了液晶厨驱动程序的编写,USB摄像头驱动程序的编译与移植,以及视频显示程序的编’;。最后,通过重新编译移植WebcamServer应用程序,实现了网络摄像机。关键词:嵌入式系统;ARM;USB摄像头;视频采集英文摘要TheDesign&RealizationofVideoCollectionSystemBasedonARMAbstracttechnologyandembeddedWiththecomputertechnology’sdevelopment,ARMoperatingsystemappearwhichincludesindustryTheareaofembeddedsystemisdevelopingunceasingly,control,consumptionelectron,networkcommunication,etcscientificresearch,nationaldefenses,medicaltreatment,navigationandspaceflightThisarticlecombinesthetheoryandthepracticeBydesigninganddebugingARMsystem,wecanmastertheembeddedsystemdesign.Thism-ticleadoptedARM920Tchipasembeddedsystemprocessor,andeN)atiatedthedesignanddevelopmentoftheembeddedSetupzhenameofallCROSSsystem,including:CROSScompilingenvironment:ThetoolsIncompilingenvironmentisthesetupacrosstheembeddeddevelopingordertocompilingenvironment,weshouldcompileandinstallthetoolchainsneededindevelopmentTransplantofOSkernel:Thisissystem.InordertooneofthemaindevelopingunitsofembeddedtotransplanttheOSkernel,weshouldconfigurethekernelagaintomakeitmeetspecificrequirement,andthencompileitagainOSkernelimagefilegeneratetheexecutableTransplantoffilesystem:Filesystemistheeffectiveandnecessaryassistantof"aoperatingsystemtomanagethedot&Transplantoffilesystemsincludesmakingfilesystem’Simage,assigningthememoryfortheminfilesystemandtheembeddedOSaflashchip,andvalidcooperateofDesignofdrivers:DriveristhebridgeofOSandhardwareofdriverstocommunicateaDesignspecificistOtowritefimctionswhichareusedtoread,writeandcontrolhardware,andofferacommonInterfaeefortheOSonThisarticleemphasizesintroduingtheprogrammerofLCDdrivers,compilingInandtransplantofUSBcameradrivers,andcompilingtheprogramofvideodisplayservertheend,compilingandtransplantthewebeamCamefaapplication,realizethenetwork英文摘要KeyWords:EmbeddedSystem;ARM;USBCamera;VideoSample大连海事大学学位论文原创性声明和使用授权说明原创性声明本人郑重声明:本论文是在导师的指导下,独立进行研究t作所取得的成果,撰写成硕士学位论文“基FARM视频采集系统的设计0实现”。除论文中已经注明引用的内容外,对论文的研究做出重要贡献的个人和集体,均己在文中以明确方式标明。本论义中不包含任何未加明确注明的其他个人或集体己经公开发表或未公开发表的成果。本声明的法律责任山本人承担。论文作者签名:同卞藩w・7年3月】牛日学位论文版权使用授权书本学位论文作者及指导教师完全了解“大连海事大学研究生学位论文提交、版权使用管理办法”,同意大连海事大学保留并向国家有关部门或机构送交学位论文的复印件和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和jr:编学位论文。保密口,在——年解密后适用本授权书。本学付论文属于:保密口不保密文请在以上方框内打“、,一)论文阼者签名司日f期X导1师年签弓基于ARM视频采集系统的设计与实现第1章1.1课题背景绪论随着嵌入式系统不断地发展,它所涉及的领域包括工业控制、消费电予、网络通信、科学研究、军事国防、医疗卫生、航空航天等方方面面。我们所熟悉的电严产品几乎都可以找到嵌入式系统的影子。随着ARM(AdvanceRISCMachines)技术的推广,嵌入式芯片从原来的8位、16位等升级到了32位,嵌入式领域的发展展现了一片新的天地。Linux操作系统以其源代码的开放性、可裁减性,对多处理器的支持,尤其是AR№体系结奉句的广泛支持,以及对多任务多文件系统的支持,解决了限制嵌入式系统发展的软件瓶颈问题。嵌入式系统设计是一门综合性的课程,涉及电子、计算机、自动控制等诸多专、fk知识,综合性强,可包括微机原理、单片机设计、操作系统等课程内容。嵌入式系统设计需要软件和硬件紧密配合,协调工作,共同完成系统的预定功能。1.2系统设计思路嵌入式系统波计中微处理器的选型非常重要。目前市场上有各种型号的ARM芯片,从CPU处理速度,技术指标以及软件支持工具上进行选型,选择了三星公。d的ARM9芯片¥3C2410。由于ARM9芯片的封装基本上都是BGA封装格式,由于受条件的限制,电路板的设计、制作以及芯片的焊接都比较困难,因此采用购买核心板的方式,这样就可以根据设计的需要来制作底层板,这样可以节省成本,并且只要接口相同,同一块核心板可以用在不同的底板上。图1l是购买的华恒公司的ARM9核心板的实物图。核心板上有16MB的Flash、64MB的SDRAM和三星的ARM9芯片S3C2410,核心板接口采用DIMMl44标准接口。本设计的系统框图如图l2所示。核心板区域主要是焊接连接核心板的DIMMl44插槽;电源转换电路主要是将外部输入的电压转化为电路板上需要的33V和5V电压,采用的电源芯片为LMl086一ADJ和LMl086.33V,LMl086.ADJ卜要是将外部输入电压转为5V,5V电压可以给液晶屏供电,LMl086.33将5V第1章绪论电压转为3.3V,给电路板L的其他器件供电;网络接口部分使用了DM9000芯片,实现嵌入式系统的网络连接功能;串口区设计了2个串口,其中串叫1用作交叉编译环境的调试信息输出口,串口0作为扩展用。图11核心板实物图Figurel1PictureofCoreBoardi『-‘:二‘一’l『_二三:一-一_一_一。一。:三’一。}li一.::.一l-一。}二二二-二二二I。一._jf.。一。{{{簪TFT{1.一.ji!;r.一.一.一.一.一.一{;核心板{Ir‘一。一。一。一。一。一i!核心板!!;忙二=㈡……一k爱[.-----USB_:Ei.■。二,=。二。之.二_二:二:二:二o!=L三。二lli!im叫jiTFT液晶屏接L]用来接TFT液晶屏:USB接口区,USB主接口宅要是用来接USB摄像头,USB从接LJ作扩展使用。I.LJARM视频采集系统的设计与实I地在软件方面,经过比较,决定采用ppcboot作为引导装拔器,采用ARMLmux作为嵌入式操作系统,采川RAMFS、JFFS2和CRAMFS作为史件系统,jeq・JFFS2足町写的日志型文件系统,州’以在该文件系统中存储l【台j时数缸C。软件部分除了以I‘各个部分的移机外,迅也{^升发环境的搭建,液晶驱动稃}卜编写,USB摄像又・鼾动的实现以及捌应的{『I!小稃序的编写。1.3论文的意义目前,嵌入武系统作为个新兴的技术,正确:贯穿实阿;应川的各个钡域。确个||界,有100多咏半导仆公州经ARM公司授权,t产各j-tq:J包的芯片。本没if以f啦频监控系统为硎究7fji:,遽过具体的软硬件系统设计,熟恳嵌入式系统的软蚀f1开发过程,掌掷嵌入,℃系统升发的基本技术。本文所研究的内容,适应当自U}:}’’严技术的发展与史新,jl仃定的研究价值。第2章嵌入式系统概述及、RM介绍第2章2.1嵌入式系统的定义嵌入式系统概述及ARM介绍什么足嵌入式系统(EmbeddedSystem)?广义地沂,J’L圯不用于迎川H的n0I—J.编程训算机设备,就IJj以弹足嵌入式计算机系统。举例水说,个人计勇机(PC)小足~种嵌入式系统,川为它是用于通用目的的系统。『fI『儿电话系统!j9c是乐川个人计算机技术矬妒的嵌入上弋iI算机系统,最典掣的嵌入,℃系统如手机、町戳IU【^等;另外还有此嵌入式系统采用特殊的微处理器,如传爽帆、打E¨机i;。狭义上而吉,嵌入-℃系统是指咀应用为核心,计算机技术为基础,软硬r}川找减。对功能、iJ‘靠一H、成本、体积和功耗严格要求的专川iI锋机系统。一般的嵌入式系统的设i1过程足:从产品定义开始,接着进行嫂f,l设汁,然厉将软rI政操作系统移植到6史什卜,ji:fl进行应用程序的开发,最历纾过测试与调试后即JI始销售或使用。根据IEEE(|1'|际电7L和}乜了工程师协会)的定义:嵌入-℃系统是“}{JJ‘拧i|Jf】、;湓事或者辅助探作杉L器f¨发备的装置”(原文为devicesorusedtocontrol,moflltor,assisttheoperationofequipment,machineryorplants)。可以“-ffj此定义从啦川I‘虑,嵌入式系统足软r}利硬什的综合体。2.2嵌入式系统的特点作为专用计算机系统的嵌入式系统与通用计算机相比,jl仃以下几个蕈=要}I∽:(1)系统内核小由于嵌入式系统般足应用于小型电子装置的,系统资源牛¨对有限,所以内予幺较之传统的探作系统婴小得多。f2)专用性强嵌入式系统的个忖化很强,其中的软件系统和硬件的结合|j常紧密,股要{I刈硬件系统进行移植,【{【j使仡同一品牌、同~系列的产・l川-也i薪要根引系统艘rlI.Lj.^RⅥ视频采集系统的设if与寅现旧变化和增减小断进iJ0%收。同时针对不同的任务,往行i^i篮尉系统j』[仃较人史I2,程序的编详p拔眨11系统相结合,这种修改和通用软f,I的“升级”是完伞小I帕々概念。(3)系统精简嵌入式系统帔没fJ系统软件和应用软件的明髭lX分,小篮求其功能发计及。1:L腿卜过卜复杂,返样(4)高实时俐OSnJill利J:控制系统成本,l丌J时卡『利J’艾现系统安个。这是嵌入式软¨的j.i夺盐求,r毗且软件要求刚念存储,以{足r岛速度。软件代n,‘埋求岛质量和高¨J’;:rI、戈州忡。(51嵌入式7I发走川hHi化宵此嵌入式Ji,用柑吁,IJ以没有操作系统直接在芯片}‘运jJ.,但为了合胛地调他乡任务、利用系统资源、系统函数以及和函数库接口,JI发存必须自行选酰RTOSlReal--TimerOpelatmgSvstem)开发平台,这样才能保hl:n!li'-执行的实叫。r{、¨J%’。f’},并减少歼发叫问,n!:v软件质量。(6)嵌入式系统斋盐』f发I:具和环境由于基本不其备[J1外发能力,即使设计完成以后,川户通常也不能对其r㈨0{IIT序功能进行修改,必坝仃套开发工具和环境才能进行Jf发。这些].贝和环j,f殷是肇于计算机{:的40艘“没备以及各种逻辑分析仪、泓台信号示波器等。J’iH’J_f手往仃主机年¨}{机、㈨n慨念,手机用于稃序的扦发,Il|,J’机作为由2瓜的执iJ仉,开发时斋要,爻替幺I,jf进行…。≯.3常见的嵌入式操作系统嵌入式操作系统nJ‘以分为商_I{j型和免费型。商用型的实探f1=系统功能程定、,rJ’,蠢,宵完善的技术支{j川11.JI一服务,但往往价格昂贵。免赀Jp的实时搽作系统订价格方而具囱.优坍,{‘喽(iLmuxjj=tl吧的嵌入式操作系统仃】:cf|r儿个:(1)VxWorksuC/OS,但稳定性‘JJ】K务rI存在挑战。目6娟t稚2亭嵌入式系统概述及ⅦⅥ介钎{VxWorks探f1系统足父『r,[WmdRwer公司于1983年改ifJI发的一种嵌入式实叫j兼作系统(RTOS),j}仃良好的持续发展能力、岛忭能的内卡幺以及友酊的j}j,1Jl发环境,在嵌入式实II-J探f{系统钡域牢牢山据着一席之地。VxWorks所』}仃的{I^^特点足;可铝忭、灾时州1=IInr裁减性,而fj.它支拍多种处jql器,女ffx86、1963、SunSparc、MotorolaMC68xxx、MIPS、POWERPC等等。人多效|,E;JVxWorksAPI足00的,火星机器人使川的・IlJc足VxWorks操作系统。(2)WmdowsCEWmdowsCE3O足种tf对小容量、移动式、智能化、32I;r、连接设箭的板坎化实H.J嵌入J弋操f1系统。针对掌l:设备、无线设备的动念胁川柑序和服务提fJI了种功能{二富的探作系统17台,WlndowsCE嵌入式小够实叫,槲于软实H’J垛f1.系境。南于其Wmdows背景,界曲比较统一认可。操作系统的上L小内核需要午,)200KI/.jROM空问。(3)PalmOSPalmOS足蒋名的H络设备制造商3COM旗下的PalmComputmg掌』电脯公川h"J产品。PalmOS在PDMb-场J二占有很大的市场份额,Il酊j1眨与wINCE进“激烈竞争。(4)QNXQNX足加争人QNX公,・J的J”品。它足舀,X86体系上㈨Jl技fI{来的,驯的女f多RTOS都足从68Kfl7,jCPU|fnf丌.发成熟,然后再移植至1]X86体系l:面米的。QNX“I个实州的、司扩充的探f1系统,它部分遵循POSIXXI{父杯Ⅲ,由于QNX贝fI泊i人的图形界面功能,队I此很适合作为桃顶盒、手持设备(丁。≯IU脑、手牡L)、GPS躞各的实吲探作系统使川。(5)laC/OSMmroLabrosseControllerOperatingSystem,微控制器操作系统.它是南又}I.{入Jean1992年完成的。应川向覆盖了诸多领域.如照卡}{机、队,,器械、出。u『日设备、z乏动机控制、高速公路I【i话系统、自动提款机等。1998i[-丁f级剑laC/OS一11,2000‘l:,得剑美国航‘。管,¨4(FAA)的认证,可以用于飞{J器j。J.LJ、RⅥ视频采集系统的设il与实现(6)嵌入式LmuxLmux的核心址山LmusTorvalds在1991年开发出来,ji:放纠叫络上供人家}4k’学习使用。开放iJ!;!代码,内核小、功能强大、系统健斗}、效卒高、易j裁减。,-J以支持数十种CPU芯』I。嵌入式Lmux就足指对Lmux经过小犁化裁减后,能够le.1SE亿容量只有几百K’}节歧JL兆字节的储存器芯片中,用】.特定嵌入式场合的专川Lmux探作系统11112111114I。2.4选择Linux的原因以上常见的嵌入式操f{系统,虽然提供了很多高级的功能,如图形月J户界州和l、q络支持,但这-叱号川操作系统鄙是商业化产品,其岛blj的价懈使许多低j*,^^旧小公司望而却步:矶}1iJ,9,鸦封闭性也大大限制了丹发析的年5{极性。另外,结合伐【日幽情,当前刚家刈ni‘探作系统的大力支持,也为源代¨外放的Llnux构抑’J{t供了广阔的发J隧filjj;:,逸f.Llnux有以下几个原闪:(1)町应用寸彩种f幔¨、I7台。Lmux已经被移植到多种硬彳1’17台,这刈受"销、叫问限制的研究oo开发J!j!}1足很何吸引力的。可以香:标准、『,臼I:开发然后移桕纠J}体的硬佴上,jIllJ陕了软f『}1J硬佴的开发过程。(2)LmuxfIJ‘以随意n勺雌竹,不需要任何的许可汗或向家的合作关系。llf卜一的Ⅲf|J|J足开发者必须做…刘Lmux十]区有益的改动。(3)它足免费的,沈代码町以得到,这是最吸引人的。,2无疑问,这会节省人:f:的升发费用。Lmuxlli外就是一个自由、开放的EI目。(4)优秀的州络支舶,微内核直接提供网络支持,而不必像其他操作系统篮外J}TCP/IP协议包。(5)Lmux高度使块化f:汝加部件非常容易。(6)Lmux在台Jl:.YLfhJ成功,也保证TLmuxZt.嵌入-℃系u11的辉煌fjij}。基一j_"Lmux的嵌入JL抓f1系统常见的有ARMLlnux、RTLmux和11CLinux等。小。殳if中选择ARMLmuxfl为操作系统…61。2.5ARM介绍锄2节嵌入式系统概述及ⅦⅥ介绍ARM即AdvancedRISCMachine的缩写,既呵以认为址个公司的幺‘#,也r,以认为是对一类微处川1器的通称,还可以认为足一种技术的名字。ARM公司,{l!=0fJ从’JrJILj-.RISC技术芯片发;I片发的公川,作为知U铲一权∥【心商,本身不直接从事芯”,t产,靠转让设计许町由含f1:公,Ij乍产各:}【牛|J包的芯JI.,世界各大半导体生广J。尚从ARM公司购买其设讨的ARM微处理器核,袱jlf:许fj不}叫的应用领域,加入通“1的外围电路,从而形成fILn(jARM微处邢;{:}芯JI边入市场。Ijfi{『,个世界仃儿1一家人的半导体公司都使JlJARM公司的授权.I州此,l见使得ARM技术获得殳彩的第■方工具、制造、软什支拍,辽披整个系统成小阶f工.使产+品吏容易进入flJ场破消费吝所接受,更只f『竞争力。采用ARM技术知U扩’十义(IP)核的微处珲器,即我们迎佑所说的ARId微处,|,器,已遍及1:qp控制、_}『Jj货炎电子、通信系统、州络系统,无线系统等各炎f一‘h仃场,望rARM投术Ij,J微处理器的应用约占据了32位RISC微处,Il嚣75%以}二的Ih场份额,ARM技术lf:在逐步渗入到我们生活的各个厅“¨,采用RISC架构li:JARM处理器收具仃i人特点:(1)小体积,低功耗,饭成本,赢性能。(2)支持Thumb(16忙)/ARM(32位)双指令集,能很女川0兼容8位/16伊搽¨。(3)全球众多的合f{I',LM:11117I。25.1ARM处理器系列ARM处理器}{Iii『也{.‘以卜儿个系列:ARM7系列,ARM9,ARM9E系列,\RMl0E系列,SecurCore系列,Intel公司的Xscale和StrongARM等等。琮了j}啦朋领域。在所仃系列『f1,ARM7、ARM9、删10E为4个通Jfj处理嚣系列,{:j个系列提供一{:榭划独{^的性能柬满足4i同应用钡域的j^i水。SecurCore系列【,uW/MHz,并且所仃体系纪陶兼容131。7rARM体系结{4.J((JJL¨特点以外,每个系列的ARM微处驯器郜有各fl的特点椰J为安全要求较“的膨川向设计。Xscale系列忖能l岛达1200MIPS,功托测b:为址J、聃视频采集系统的设il与宜现ARM9系列处岬Z:.已n.高性能和低功耗特恬方面挺供了^£佳的件能。它j【仃以下特点:(1)5级整数流水‘.指令执行效率更高。(2)提供1lMIPS‘、iltzff.j哈佛结构。(31支持32俯的^.‘生AMBA总线接口。(4)全。阽能的MMI.支}、}WmdowsCE、Lmux、PalmOS等多种主流嵌入』℃探,1|系统。(5)MPU支持实传J,of{.系统。(6)支持数据Cache剐指令Cache,具有更高的指令和数jil:处理能力。ARM9系列微处刑H包含ARM920T,ARM922T和ARM940T,以适J{』于小|li:J1,9应用场合。ARM920’I利ARM922T采用双8KB的cacbe,之持仝性能的MMU,\RM940T采用烈4KB晌cache,内霞保护单元。它们为婴水憧拟存储管删!和1复杂内彳『保护提供了个一:㈡能的处理方案,叮以用J。高竹能尤}k心』{J、网络,图像、l’j‘视频编解码等疗面。本次设计采川San?-,tmg公司的¥3C2410即属J二该系剁的处岬器。252ARM体系结构InstructionSet传统的CISC(ComplexComputer,复杂指令集计算机)结构f1fE同有的缺点,随着if”机技术的发展而不断引入新的复杂f|,J指令集,为支扎返一I弋新增的指令,tl锋卡Jl!{1仆系结构会越来越复杂。然咖,以.CISC的指令集的再种j}彳令中,其使用频率£一.{|彳怂殊,大约有20%的指令会破反复使用,dr整个}‘m:代码的8tY',4,而余Ffiq80%的指令却不经常使用,自.群序波if,t,R占20%。显然,这种结构不太合理。基于以上的小合列.1979年美国加州大学ffl克利分校扭m了RISC(ReduceInstructlonSetComputcr.秭简指令集计算机)的概念,RISCJi1I-R是简单地』、“k,》指令,而是把{i眼j’,Z存.了如何使计算机的结构更加简}、f1合理地提{:,运算逃f生1。RISC结构优先选l,‘他川频率最高的简单指令,避免复尔指令;将指令K嫂…讹2章嵌入式系统概述及ⅦⅥ介绍jC,指令格,℃和、』址厅,L种炎减少;以控制逻辑为{:小川戚少用微6q抒制*jH世柬达到}i述H们。刨H劬为止,RISC体系绵构也还没有严格的定义,ft只有如下特点:舭认为,RIS(’体系毛l,十;:|(1)采j1J叫定K发的{旨令格式,指令灿整、简誓、丛本、』地疗式有2—3种。(2)使刚甲川删指令,使r流水线操作执行。(3)大掣使』}j奇存器,数掘处胄f指令只对寄存器进iJ探f1,只有加级、存储{R夸”,以访问存储器,以抛r岛{}亍令的执行效率。。j然,和CISC架构Jr/I比较,尽管RISC架构有上述的特A,fIl决小能认为RIS(1埭构就可以取代CISC架陶,‘J}实上,RISC和CISC子仃优势,l『ij且界m门不删么Jj硅。现代的CPUj}_ir求IIjCISC的外n;l,内部加入了RISC旧特性,如超K指令q、CPU就足融合了RISC年|{CISC的优势。ARM体系2IiJ物纠.,R了RISC纷孥勾。J!r’r加拔和彳,储指令町以圻M行能器,数掘处理指令只剥寄打器的内容逊{J煤f1:。川州ARM体系禽弁了RISC寄存器窗LJ,延迟聋专移和所仃t‘川弁令周期..ARM体毳结构目前坡公认为足qJ,崧钡先的32位嵌入式RISC微处删器结构。所ffARM处一ij!器共亭这一体系结构。㈧lil】确保了丌发者转向史高性能的ARM处理器州,仉4≈¨上可以得到更人的¨报I…。2.6嵌入式系统的应用(1)嵌入式系统在无线通信领域的应用有手机、小灵通、钾能手机等,850/oU,I的无线设备(丁饥等)_}}|j采用了ARM技术,砬.向3G丁f级过程中,ARM的地f,也非常稳I占J。嵌入】℃fi,¨JH如21所示。(2)嵌入式系统在消优炎电子中的应用迅速增}乏,如放7“频播放器(rap3)、孜‘≯视频插放器(mp4)、数‘产机顶盒和游戏机等。甚1‘、RⅥ视频采集系统的设计与寅现Ij塞|2.1嵌入式应用图FIgNre2.IPIctureofEmbeddedS)stemAppheatlon(3)嵌入式系统也&:j7家庭网络应用越来越广泛,数。,客斑叫络是通过无线j上术将家庭内的各种智“lit,彖f乜和网络设备连接在一起,包括无线媒体接收器、无线{鹱录像机、无线投影j而~Z器、无线音箱等。华恒公司关J:数‘j’:魑体解决力.案如H22所示㈨21。l冬|22华恒数字网络整体解决力案Figure22SolutionofHuahengDlgmalNetx^ork第2章嵌入式系统概述及、脯介绍(4)嵌入式技术在交j』亘竹蝉、环境监测中的应用191110J●交通臀珥j存4:辆吁舰、流驴控制、信息舱测与汽1:眦务们面,日I衲GPS设备已经从,:瑞广.协进入了酱通Ei姐的家庭,只需婴儿r几●水文资料实时骱测,防洪体系及水仁质量监测、堤J扒宜伞,地足:豁删M,实时7t象化息叫,水源和窄气污染j瞌测。●加油站・停车场管邶(5)嵌入式系统在!‘他领域也自.着广泛的应用,如工Up拧:|Jjj、海量存储诱:备(微掣ll^j存卡)、成像没备(包含ARM技术的数码孝H机和数{i15{JLqJl,ID以及安全f“tl^(32位SIM智能|÷)笛,2.7本章小节本章介绍了嵌入式系镜的,|{}[念,阐述了一些常见的探f{.系钪,并分卡Ji了/I’:次l殳【I巾选择Linux胤仵系统Il≈虬L冈,对ARM对了~个全国5的介}m最后绐…了嵌八,。℃系统的巢型应』}J。址J‘、RM视频采集系统的设if与实现第3章S3C2410微处理器3.1¥302410芯片介绍¥3C2410微处理器址款由Samsung公司为于持设备发训fJ:jt氐功耗、高集成慢|l{J瑟于ARM920T{亥n7J7’i处胛器,芯片集成了大量的功能【’fl儿,包括:●内部1.8V,存∥器33V,外部I/033V,16KB放捌CACHE,16KB指令CACHE,MMU。●内置外部打储”拧制器(SDRAM控制和芯片选抒逻驯)。●LCD控H,0;}}},个LCD专用DMA。●4个带外挪请爿、k的DMA。●3个通用片步}I一“*Lj(IrDAl2通道SPI。0,16-ByteTxFIFO,and16-ByteRxFIFO),●一个多二j:12C_k,一个12S总线控制器。●SD主接LJ版本l0年¨多媒体号协议版本211兼容。●两个USBHOSr,。个USBDEVICE(VERll)。●4个PWM定H、㈦{和个内部定时器。●看『J狗定H0器●117个通川I/O●24个外部II・晰●电源控制梭式:{1、HI:、慢速、休眠、调电。●8通道10他A【)(1和触摸屏接口。●带日历功能的。0、¨J叫钟。●芯片内置PLL●设计用于于拍:’!卉和通Hj嵌入式系统。●16/32位RISC协彖纪构,使用ARM920TCPU核的姒人指令集。,●带MMU的先也体系结构支持WINCE、EPOC32、Lmux。第3审S.W2410微处珲器●指令缓存(CACHE,、数捌缓存、写缓存霹}物P4地川TAGRAM,减少了对}存储器带宽和,rIfi&-(Iq影l响。●ARM920TCPU}Z支{々ARM调试的体系结构。●内部先边的住托,引擀总线(AMBA)(AMBA20,ABB/APB)l”I。圈3I¥3C2410结构椎图Figure3I¥3C2410BlockDiagram.14.——————————————————-———————————~——————————_-————●●————————__-—————————一一¥3C2410集成了』II【协功能的RTC和具有PLL(MPLL和UPLLJ的芯J1IIj址j。ⅦⅥ视频采集系统的设i}与寅现砷发生器。MPLL产q,¨寸t1I,能够支持处理器工作频率最岛丛剑203MHz。UPLLr。生实现主从USB功}旧fj'J钟。利用¥3C2410资源和强人的"理功能,可以轩松地进行各种嵌入八系毛lt0发计开发。¥3C2410结构桕图如图3l所示。3.2¥302410系统管理¥3C2410支拍夫、,J、甜I!式,将存储空间分成82Pt(Bank),≈组大小足128MB,』LtflGB。如图32月.I、IC,I。0M[I0120l,lOOxFFFFOx60000x4800Ox40000x4000FFFFOM[1O卜01,10未f止川0川JD能寄存搽n’储区木他川SROM(BANK7,nGCS7)SROM(BANK6,rlGCS6)未使用0000々}}j功能0000寄存器存储区OFFF0000BootsRAM(4KB)SROM0x38000000BANK7,nGCS7)SROM(BANK6,nGCS6)0x30000000SROMfSROM(BANK5,nGCS5)BANK5,nGCS5)SRoM0x2000.0000SROM(BANK4,nGCS4)SROM(BANK3,nGCS3)SROM(BANK2,nGCS2)SRoM(BANKl,nGCSl)BANK4,nGCS4)SROMBANK3,nGCS3)Oxl800.0000SROMBANK2,nGCS2)0xol000x080000000000SRoMBANKl,nGCSl)SROM;BANK0,nGCS0)Ox000000000-‘LIIJNANDFlash启动H3i史用NANDFlash启动2¥3C2410复位后存储器映鲥图f‘gtu'c32¥3C2410MemoDMapafterReset.15.第3章¥3C2410微处瑚器BankO剑Bankl的Jl女m血址是固定的,Bank7的j{始地址址Bank6的绵“:地“,之j』I町变,Ji:H.Bank7的人小与Bank6的大小必须州等。如粜Bank6设N为2MB.Ijank6的起始地川怂Ox30000000,截JI.地址是0x301FFFFF。tIiI:么,BaN..7们起0台地址足0x30200000,t£1I地址是0x303FFFFF。所有的奇打器组均可jljj:ROM!-k者SRAM,BANK6、BANK7还叮用于SDRAM。所有内存JJ,Jfj访问川别酃IIj自*一1’。除BankO外,je余行仃似器的总线宽度可编利砹嚣为8f?,,16位或齐32似,川足BankO只能改胃为16位或暂32位。BankO作为,jl吁ROM,地Ⅻ映自j州(tx00000000,总线宽J奠【:纤一.复付日d由OM0:01确定了…J33本章小结本章对ARM处删器¥3C2410的外围功能模块进行介}f{.JI对芯片的系统‘{’;{了洋细说明。从Im刈¥3C2410这款芯片有个总体认识。祭y-^RⅥ税频采集系统的设计b实现第4章嵌入式系统开发环境建立4.1嵌入式系统开羞环境概要绝大多数的Linux6r什Jl・发郜是以native方式进行的.即小机(HosT)开发、。司试,本机运行的疗-It幺种方式通常不适合于嵌入式系统n:J软件开发,Iq为州J。嵌入式系统的"发,竺仃足够的资源在本机(即开发扳l:系统)运行开发Tj【和调试工具。通常的“\,℃系统的软件斤发采_}{j一种交义编if调试的方,℃。交炙编译调试环境建≯竹:jfli。帆(即一台PC机)上,对应的)f发板叫做日杯扳。开发刚使用彳;}:『上目。l的交叉编译、汇编及连接r.具形成川执行的二进制代{iJ5,(这种可执行代码并4.En宿主机上执行,而只能稿:F|午,J、板I执行。)然^;把¨J执行文件下载到I|杯pI运行。调试的方法很多,可以伎川Ⅲu,以久H【j笛,l体使用哪种调试方{jt』以根据目标机处理器所提供的支舶fI…选择。l}fi机和|I标板的处理器股4・…,宿七机为Intel或AMD处理器,『…f标板为SAMSUNG¥3C2410等嵌入式芯,1.GNU编i辛器提供这样的功能,舀编’千“,6洋器时iJ.以选抒JI技所需的宿主机和口“{H从向建立开发环境。所以台.进iJ:丌发“口需要一臼装仃{斤jt探作系统的PcYL作yJ0fj:开发机,宿主机上的操作系统一股要求安装Lmux,此:2训安装的是Redhat9(jj荣作系统,然后在宿主机上建立交义绷i手调试的肝发环±-i。jl芡入式开发模式~p的自、庀连接一般如图4l所示‘7118I。l刮4l嵌入式升发模式下的系统迎接lt-IFlgure41SystcrnConnectPictureofEmbeddedDevelopmentMode锕4最嵌入式系统歼发环境缱节4.2在宿主视上建i_立Larm-Ilnux—gec交叉编译环境淄_=j乏片J的源代“’5n0版本如F:bmutds一2gcc—g十机2953targz,ghbc一224targz,14targz.gcc—core・2953targz.ghbc—hnuxthreads一224targz,patchforhrlux一2421targz.patch・2421一rinklg《hnuxkernela1133)。戊们先曲.Lmuxfl‘JBASHp改定~些环境变蟹:¥exportVBINUTILS-214¥exportVGCC=2953¥exportVGLIBC=224¥exportVLINUX=2421¥exportVLINUX_P连TC}#fmkl¥exportPREFIX=/armtools¥exportTARGET=arm一]IllUXl螽瓣鑫令跫囊bash(:j匆令{f}:徐入豹,簸入完之后会江帮童放,I'Htogout:fIogm}!i栈无效了。也¨J以把返』与i舟句填加到bashrc文件中。如粜泓Ⅲ到bashrc22f,{ffI,JJl;么,i!|cj甜婴logoutIll:logm次才能生效,并且只要这砦讲句迅f1.bashrc义f1中,帆0煮蠢霰。¥cd~¥mkdlr—Ptars/SourceDw¥mk&rtars/BmtdDJr¥mkdirarm_tools¥sa嚣mVarm—tools¥PREFIX襻exit¥tars以这5}’放1-拔求的targz文件这拿滴斛ll求放解}爱缩正鲍深文俘SourceDn’…一BuildDlr.............订.这q1.孙6Cfarmtools一....-.—.....把arm—hnux酌交义缡译环境安装蟊.这擎。.18.牡J。^RM视频采集系统的设if与寅脱jl体安装步骤如图42l一{小。安装hnux头文件+缟译安装bmutils●编译安装gcc的c编详器★编译安装g胁。+lF世l?4编译安装gcc的c++编详器图42交叉编译环境安装步骤2CrossCompilingEnvlronnlentInstallStep42.1安装Linux的罗又件当你为小I叫炎’掣自7一RM编beget,或编译不砌版本的kemel,或交叉自mi'fgcc叫琊:岳要一套不同fl:Jhnu、.』、支件。(1)解压缩,CJ补』¥ed-/tars/SourceD,¥tar—zxf./hnux一¥\I1NUXtargz¥edhnux¥zcat//patch—SXlINUX-¥VLINUX_PATCHgzIpatch—pl(2)清理¥//lakemrproper(3)修改Makefile将Makeflleq'AR(‘t一ei=¥(shelluname.msed-es/i86h386/.es/sun4u/sparc64.s/arm.+,ar州…eall0/arm/)这一行注释掉,并加ij-ARCH=arm。口}改J^:.19.第4章嵌入式系统开发环境建立ARCH=aFro挣ARCH.=¥(shelluname—msed-esh86/1386/一es/sun4u/sparc64/一es/arm*/arm/-es/sall0/arm/)如果系统电的sed利Jj‘支持用’\.续行(通常都支持),llJL_川这个script上修L。2Ⅵakefile#!/bln/shmvMakefileMakefileorlguname・m/ARCH=arm\sed‘s/ARCH一¥(shel群ARCH=¥(shelluname—rrg’<Makefileong>Makefile#endofsenpt汀意:这个scriptqJfl;,#ARCH=是上…行的续行,/卜赴shell‘f1的泞释,它也足盐输入的。如果你从浏览器(IE,netscape,etc)_k复制料咿I返h'scnpt宝ll你的bashconsole,它很有lIJ能小l‘f1二:但你在bashconsole鬯j三1.输入挑11j.以J:们。W为fj州复制过来后,足’ARCH=arm\r\n’,而能工作的是’ARCH=arm、、rr。(4)建立连接设计I}l使用的缝s3c24lO的cpu,NggR躺makejll,,[1:makemenuconfig边iJ‘雕馑即r叮。(5)拷吸头文件¥rnkdlr—P¥PREFlX/¥TARGEl丫1nclude¥cp—dRmclude/hnux¥PREFIX/¥TARGET/Includes3c2410_defconfig,然“1’f¥cp—dRmclude/asm—arm¥PREFIX/¥TARGET/mclude/asm(6)为gcc建妒一个hnuxkernel头文件的连接。编泽gecll,l,它需要hnm.kernel的头文件,你可以用一Mth.headers=¥PREFIⅪ¥TARGET/1ncIude柬指定头文件的伸’l彳,gcc把它拷r)『5qJSPREFIX/¥TARGET/sys—include。我们¨J以建立个sys-mcludeji接,就小}{j—wlth-headers了。¥cdSPREFlX/¥TARGET¥In—Smcludesys—include422编译安装binutiIs.20.早卜~RM视频采集系统的设计’j实现这里用小到1)i『IfIJ}fI衙I’I:JLmux义文件。‘(1)解比缩¥cd ̄/tars/SourceDlr¥tar—zxf./bmutfls一¥VBINUTlLS.targz(2)编译¥cd ̄/tars/BuddDlr¥mk&rblnutfls¥cdbmutds¥.//SourceDir/bmutds一¥VBlNUTlLS/configure\一-target=¥TARGET\-一prefix2¥PREFIX¥makeallinstall(3)输bmutds@路仟刮州、境,殳量中可以把它加到bashrclI‘,返村矗j要logoutl耳logln:J。能生效。也町以在bashlY,J命令行l:输入,它会'’,卿‘I:效,fⅢogout再109ln时就无效了。exportPATH=¥PREFIX/bm¥PATH42.3编译安装gcc的c编译器(1)解脏缩¥cd ̄/tars/SourceDir¥tar—zxf值CC-core—SVGCCtargztar汁意:为什么小川a11-ln—one的gcc—SVGCCgz呢7凶为all—Ill—one的gcc包‘I。|ffi仃chill、fortran、java管语言的编译器,虽然召:}IfilCOnf喀ure}j{}}定一enable—languages=c,…f:Iff阡|{'J逊足把所何的都编译一使,返小足我tfJ,/,;婴的,川m邑也总会有铝以。洲此我们只编译C语言的编’芊器。后IhI第二:次编许的时似也足这个问题,我们Jl编I千C和C++的编译器。(2)修改gcc的t-hnux史什在t—hnux文f1中II;JTARGET_LIBGCC2_CFLAGS上加}jhr—poslLb和mhJblt—hbc,其fIIsed命令从t—hnux—ori93艺件读入数据,将绵果输H』到t—hnux—coreih输1串嵌入式系统J1发蚪j电建寸¥cdgcc一¥VG(1C/gCCconfiWarm¥mvt-hnuxt-hnux—rwl;¥sed’s/TARGFTIIBGCC2一CFLAGS=/TARGET—LIBGCC2一CFLA.GS—Djthrposlx_h-Dmhlht—hbc/’<t-hnux—ong>t-hnux—coreI-In,u\¥cD/t—hnux—c¨T.e(3)绷if¥cd~/tars/BulldDir¥rnkdlrgcc—coFe¥cdgee—core¥//SourceDlr/gce—SVGCC/configure\一-target=¥TARGET\—・prenx=¥PRI三FlX、~enable—languages—c、一disable—shined\—rdisable—thletIds¥makealllnstalI42.4编译安装gIibc(1)舻fjlj铴¥cd~AarS/SourceDlr¥tar—zxf值hbc-¥~GLIBCtar¥cdghbc-¥VGl,IB(’gz¥tar—zxf//ghbc—hnuxthreads一¥VGLIBCtargz(2)编f于¥cd一/tars/BuddDIt¥mkdwghbc¥cdghbc¥CC2STARGE’r—gccAR一¥TARGET—arRANLlB2¥TARGET-ranhb、/./SourccDl睡№c—SVGLIBC/configure\一-target2¥TARGI1.22.坫j。、洲税频采集系统的设汁与实现一pre氍x=¥PREFIX7¥TARGET\.,..enable..add..OI]S¥makeallinstall425编译安装gcc的c++编译器(1)恢复t-hnux义rI¥cd~/tars/SourceDlr/gcc一¥VGCC/gec/config/arm/¥cpt-lmux—orlgt-lmux(2)斛JIj绵c++编If料¥cd~/tars/SourceDlr¥tar—zxf/gcc-g+}-¥、’GCCtargz¥cd~/tars/BuddDlr¥mkdlrgcc¥cdgcc(3)编i1;¥//SourceDlr/gcc—SVGCC/configure\一一target2¥TARGET、一prefix=¥PREFIXi—enable—languages—c.c++\一WITIl・INCI¨】lD一(;I|llX’1¥makeall¥makeinstall,1:如果r钱的Jd.filenametarbz2,你川以刚如下命令之斛JIj销,第硎,,J-L/f●Ⅱ系统一lI部仃放,,¥tar-jxvffilenametaJbz2¥tar.1xvffilenametarbz2¥bzlp2一defilenametal’bz2tar—xvf一NFS和TFTPR陵务器的配置.23.4.3筇1帝嵌入式系统”发吖,境建口ARMII必入J℃系统JI发,除了交叉编阡耶境矬扩,为了史乃‘使系统外发还jI,_NFS年l|TFTP}J雎,’;{『;边iJfILj’j‘:(1)NFS配W阿先订RedhatI.q43所1÷。LmuxPcOL[:shell提示符[root@】#执iJ:setup,弹f{{浆舭界Ifil0H43setup泉单界I自l㈦Figure4.3SetupMenuPicture,量小Systemser',ice,…1逃入系统服务选项菜译,在其中选rI・[+]nfs,然Ji越~elup羿Ifil返川刘命令抛小杓F:vim/etc/exports将这个耿认的_。文flf吩L15[为j{仃如下一jJ.内容:/(rw)然J—j侏仃遐m(wq),然』lj执{J:如下命令:/etc/rcd/lintd,nfsrestartShuttingdownNFSmountdShuttingdownNFSdaemon【OK】【0K】眼j-lR、1税频采集系统的设汁’I寅现ShuttingdownNFSquotasShuttingdownNI?SStartingNFSSel~ices【OK】【OK】[OK】【OKl【OK】【OK】FNFS足否眦咒灯。PC机fl‘.JIP地川为:192168212:,servicesStartingNFSquotasStartingNFSdaemonStartingNFSmountd配胃完之后,尚喽测试I’C"ll。fl己mount|,IL.丌址fr成功眦¨J以,’i]lgfiNFS足舟眦竹好了。mount1921681122,/mnt士1]/mnt/|l求r:,J以川小}Jl根}{求}的所有史rI和n泉,说i|JJmount;戊耽,NtSL1、:成功。(2)TFTPIJI_{务I内M~IffpctJI,}1执h‘setup.选扦Systemservices,将其iII的trip一项选【}IJi』:j】:Iq)chains和iptables,纱Ilt边抒Firewallconfiguration,选Ill‘llNofirewall。最JIi逃setup,执行如r命令【^¨功TFTP服务:servicexmetd1.estanL竹宄成后,测h(TFTI’叭,’器怂古l“用,lJn奠[】Ltflp自L,在PC讥j.执{J:cd/cp/etc/inittab/tfiptx)ot,trip192168二I!!trip>getinlttabI{脱如r亿息:Receive7415I二byte.',…07secondsitl:TFTP¨K务器眦竹帔0f1跟f{录p就会仃140/j卜J级的inlttab义f『I仃/.13I。4.4本章小结小一1l介绍了皈入一LJl发一l・的交义编i季环境刷嵌入式外发的一般换,℃,ji“细’r?“了交义编ifJf、l’讣0d・j以及NFS和TFTP服务器的眦什。利嵌入J℃J卜发水啦,c义编阡川、境{K—n岐,’匕址f求illJf发顺利进{J的』.L{i}};,足我fl’J进行嵌入式门发旧第4章嵌入式系统开发环境建立基本工具集,搭建好这个环境,我们在开发过程中才能得一tl,应手。TFTP服务器配霞同样非常重要,如果没有配置好,则目标板就没有办法使用tiepin_过以太网下载镜像文件。NFS配置并不是必须的,但有这一项服务,可以大大方便调试应用的开发。轼J、聃视频采集系统的设计与实现第5章系统移植5.1BootLoader工作原理BootLoader是系统加l乜船动运行的第~段软件代码。通过PC的体系爿r榴投们,l『以知道,PC机-},的0I甘JJll载程序由BIOS(其本质就足‘段…定程序)干¨位于他胤MBR中的引学程序起组成。BIOS在完成硬件榆测和资源分配后,将硬“MBR中的引导稃序读剑系统的RAM中,然后跳转刘内核钓入口点去运行,篷即J}始启动操作系统。由于在嵌入式系统中,通常并没有像BIOS那样的lalfl.利序,因此整个系统的D¨裁启动任务就完个由BootLoader来完成。对于一个嵌入式系统,可能仃的包{^{泶作系统,有的小掣系统也”J。以只包括应用程序,似足柏.这之iH郴需要Boo,Loader勾它准备一个正确的环k。通常,BootLoader是依赖了二硬纠I『,f』.;的,釉51;J』是嵌入,t℃领域,为嵌入式系统矬、’,。个通用的BootLoader足很㈧册的一简单的说,BootLoader足在操作系统内核或用,、应f}Jf7膨运行之前延iJ:的段小程序。可以初始化礁f1技备、建立内存空间的映射图,从Im将系统的软硬rf蚪J皑带到一个合适的状态,为最终调用操作系统内存或}}j户应川程序准备§,止确的jf境。大多数BootLoader都包招两种不同的操作模式:“启动枷Z置”模式和“下拔”}蜒式。从最终1}}J广t的角搜石,BootLoader的作用是用来加毅拟作系统,)1:不打rl所潲的启动加载模式与一p段模式的区别。启动加裁模式:这种懊,℃也称为“自主”模式。也即BootLoader从}j杯机I旧浆个固态存储设备}:将垛作系统加载到RAM中运行,整个过程并没仃JfJ户的介入。这种模式是BootLoader的正常模式。下载模式:{}这种谈-℃},目标机上的BootLoader将通过Ⅲu连接或删络辽ji‘}通信手段从主机p载史彳1,比如,下载内核镜像和根文rI系统镜像等。从二i二帆p拔的文件通常卣允破BomLoader保存到目标机的RAM中,然后破Bo01Loade,1j到目标板上的FLASH光…态存储设备中。BootLoader的返种模式通常舀.第次第5章系统移植安装内核与根文件系统时使用;此外,以后的系统更新也会使用BootLoader的这种模式”1。5.2启动代码的移植在嵌入式系统中,有许多成熟的启动代码,例如armboot、bluecat、redboot、ppcboot、Uboot、vlvi、blob等。在本设计中采用ppcboot作为启动代码。ppcboot是一段引导代码,就像我们使用的Pc机的一开始的引导代码BIOS一样,主要完成CPU、SDRAM、相关寄存器的初始化的,~股情况下无须每次都要烧写或更新,只有在系统崩溃或需要改变ppcboot中的内容,才考虑更新或烧写。在本系统中,ppcboot主要完成如下工作:(1)建立和初始化RAM:这个工作是必须的,要探测RAM的位置和大小,并对RAM进行初始化。(2)初始化一个串口:通过这个串口来打印信息,可选。(3)检测板子的系统结构:通过某种方式来探测系统类型,最后传递给内核一个MACHTYPEXXX值,这些值参照/kernel/arch/arm/tools/mach-types文佴。(4)建立内核的标记列表(taggedhst):启动参数标记列表以标记ATAGtagCORE开始,以标记ATAGNONE结束。每个标记由标识被传递参数的header结构以及随后的参数值数据结构来组成。数据结构tag和tagheader定义在Lmux内核源码的include/asm/setuph头文件中。ATAGCOREtag可以为宅。一个空的ATAGCOREtag的size字段为2。ATAGNONE的size字段必须为0。在嵌入式Lmux系统中,通常需要由Bootloader设霞的常见启动参故有:ATAG—CORE、ATAG—MEM、ATAG_CMDLINE、ATAG—RAMDlSK、ATAG—INITRD等。一个最小化的taggedlist应该包括ATAG—CORE、ATAGMEM、ATAGNONE。标记列表应该放在内核解压和Initrd的bootp程序都不会覆盖的内存区域。建议放在RAM起始的16K内。(5)调用内核镜像:可以从Flash中调用,也可以从RAM中调用112】f131。辕j、RⅥ税频采集系统的设计与寅现ppcboot的源代码也j扎要进iJ二配置和编泽才能牛成町以存2410平台J:执行的I—jjIL行文件。编译的步骤如P:make&steleanmakesmdk241O_eonfilmake:¨泽完成后,将叶:成的ppcbootbm烧写到Flash中。如果足第次烧写,i6j要伎川JTAG仿真器;如粜FlashIlt已经烧写IU版本的ppcboot,现仉*要更新一p,tl/z,lIj‘以使用ppcboot门身水。戈班,就是在ppcboot的命令界面卜通过网线使HJtrip命令将新生成的ppcbootblnp毒芟到SDRAM中,然后用fl命令烧写到Flash上,垃Ih抻原来的ppcboot即IIn用ppcboot自我史新的过程在mlnlcom中的打印信息如。p(II@IHll-划线的部分足在mmlcom中输入的命令):PPCBoot200fJan242005—15。15’44)PPCBootcode33F00000一>33Fl53E8BSS一>33Fl886(’DRAMConfigurationBank#0.3000000064MBFlashMemoryStartOxl000000DeVlCeIDoftheFlash1S18Flash16M[BWrite18toWatchdog:mdnIS仟flOWstarthnuxnOw(y/n)SMDK24lO#trip30008000ppcbootbin<DM9000>I/08000300.VID90000a46NetOurlP=coa80278NetServedP=coa802l9NetOurGatewayIP=coa8020lNetOurSubnetMask=仟矸m)0.29.第5章系统移植ARPbroadcastIARPbroadcast2TFTP仔omsel-vel-192168225;ourIPaddressis1921682120Fdename’ppebootbm'.Loadaddress:0x30008000Loading群群#群#群##瑚嵴群槲#桦释doneBytestransferred=89448(15d68hex)S加K24lO群旦!QQQQQQ3QQQ8QQQ2QQQQErasingFlashlocations,PleaseWait.【XXXXX】Erased1sectorsProgrammingflash,PleaseWait..奉丰幸¥率宰率幸枣率率奉率丰年木#SMDK2410牟此时在Flash中的启动代码已经是更新过的了,重启之后就会使用新的ppcboot了。重唐后的信息如下:PPCBoot200(Sepl2006—09‘34521PPCBootcode,33FOOOoo->33F15D68BSS一>33F191FCDRAMConfiguratlon:Bank撑O3000000064MBFlashMemoryStartOxODevlceIDoftheFlashIS18lmelE28Fl28J3Al50mltfimshedlfIFlash:16MB上面我们可以看到,ppcboot已经是Sep是Jan242005.15:1544。12006—09.345的版本了,原来的版本Bootloader在嵌入式系统中具有两种作用:一种作用是初始化系统,引导启动嵌入式操作系统;另外一种作用就是初始化串行口和网络部分,然后通过网络下.30-,Lj・’RⅥ视频采集系统的设计卜了寅现戒嵌入式探作系统的川{lLij文件到RAM中,必要时烧写到llash中,通过串{JLJf¨网络构建开发渊试王l、i¨如图5l所示。圈5Fig5.11Bootloader的双币角色DLIalRolesoftheBootloader实际上,Bootloader们移植比较复杂,难度也比较大,∥j.小同的嵌入式托’删:≈、Flash和SDRAM.出J1,Bootloader的配置代码都足小川旧,特别芷刈IJ芡入JL:i制器避行配百|fr.J.邵分,J。I.本}:需要使用所选芯片的jf编if;1.进行绵利,这j凡崆{J所选芯片的寄订器笛【:{2热悉。由于本设计的重点小n二Bootloader自7J移他1.㈧此在本设计中,{接使川了L经移植好的ppcboot代码,J!zIJt.进行了编i千和l、一k,并利用其提fJI的』JJ能刈经个系统进行调试。5.3操作系统armljnux内核的移植内核足一个操作系统旧仫心。它负责管理系统的进程、内存、设备,婀如】程序、£fl-fll网络系统,决定f;乐统的性能和稳定性。Lmux的一个iF.要的4I_l就是其源代码的公开性,所仃n0内核源程序都ffT以f1usr/src/hnux下找j’Ij,人l4,,,心用软件也都是遵循GPL(GeneralPubheLJcen!。e)f『I∥£:f的,你都可以扶取棚一,的源稃序代码。全世界任何一个软f1I‘程师都¨J‘以杓I第5章系统移植己认为优秀的代码加入到其中,由此引发的一个明显的好处就是Lmux修补漏洞的快速以及对最新软件技术的利用。而Lmux的内核则是这些特点的最直接的代表。由fLmux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。为了确保这些无序的开发过程能够有序地进行,Lmux采用了双树系统。一个树是稳定树(stabletree),另一个树是非稳定树(unstabletree)或者开发树(developmenttree)。一些新特性、实验性改进等都将首先在开发树中进行。如果舀:开发树中所做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够的发展,开发树就会成为薪的稳定树。它们体现在源程序的版本号中;源程序版本号的彩式为x.yz:对于稳定树来说,Y是偶数:对于开发树来说,Y是奇数。要使内核增加对某部分功能的支持,比如网络之类,可以把相应部分编译到内核中(build—in),也可以把该部分编译成模块(module),动态调用。如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点足方便、速度快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在,这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。如果编译成模块,就会生成对应的0文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你斋要自己来调用这些模块。要移植内核,首先要对内核源代码进行编译,生成能在2410平台上执行的内核的压缩镜像zImage。编译内核手要由以下几步组成:p-Makemrproper:该命令确保源代码目录下没有不正确的0文件以及文件的互相依赖。>Makemenuconfig:该命令用来对内核进行配置,将我们需要的内容编译剑内核:其实makeconfig和makexconfig也足对内核进行配置的命令,makeconfig是字符界面,现在很少用了;makexeonfig是图形界面,只能在辑J、RⅥ视频采集系统的设计’j实现Xwmdows下运{j。如果只想在原来内核配置的丛础I修改一些小地办,可以使月Jmakeoldconfig命令,用它可以省不少麻烦。户Makedep:读取眦胃过程生成的配置文件,来创建刈.膨『.配置的依赖关系树,从咖决定叫川ojm要编译而那些不需要,Makeolean:删除前向步骤留下的文件,以避免…观』与错误zImage,Makezlmage:刈,蟓代码进行编译,生成甩缩的锐像卫rI,垂择相应的配置州,仃‘种选择,它们分别代表的含义如}:Y一将该功能编译逍内饮N一不将该JJJ能编if迎内核M一将该功能编滢JJk¨J以狂篇j要刚动态插入到l』I核一I・的l心块图5Fig522MakeMenuconlig命令的界面Ccomma,ndInterfaceoftheMakeMenuconfig如果使用的足makexconfig,使用鼠标就可以选择对应的选项。如果使用的足makemenuconfig,则需要使用空格键进行选取。你会发现n.每一个选项时都仃个第5章系统移植括号,但有的足中括号有的是尖括号,还有一种圆括号。用空格键选择时可以发现,中括号里要么是空,要么是””,而尖括号里可以是空、”"和”M”,这表示前者埘应的项要么不要,要么编泽到内核里,后者则多一样选择,可以编译成模块。『fii尉括号的内容是要你在所提供的几个选项中选择一项。使用Makemenueonfig对内核进行配置的界面如图52所示。5.4文件系统的移植在嵌入式系统中,一般采用NANDFlash作为代码和数据存储器。引导程序、操作系统内核以及需要保存的数据等都要放在Flash中,而且操作系统一般部需要在存储器上建讧文件系统才能对存储器进行操作,因此我们需要在Flash上建立文件系统以满足嵌入式操作系统和实际的需要。Flash对文件系统的要求如下:(1)掉电安全:嵌入式系统的运行环境一般比较恶劣,但同时又要求有较高的nr靠性。这就对Flash文件系统进出了较高的要求,无论程序崩溃或系统掉电,都不能影响文件系统的一致性和完整性,文件系统的写入、垃圾回收等操作对系统异常中止都非常敏感,极易造成数据丢失和数据垃圾,在文件系统设计和选JEIj时应考虑;(2)平均使用(wear—levehng)..由于Flash扇区的擦除次数有限制,要求能够均匀使用各扇区,以延长Flash的使用寿命;(3)商效垃圾回收(garbagecollection):任何存储器在分配使用一段时间后,都会出现窄区和碎片数据,为保证存储空间的使用率。方法是先移动扇区数据,再擦除整个扇区;(4)低空问消耗(10woverhead):指文件系统管理结构在Flash存储器上的窄问消耗,该宅问用于文件系统建立,而不能用于实际数据的存储,可以提高有用数据的存储空问。f在Linux里,系统对独立的文件系统不是用设备标示符来存取(比如驱动器编号或驱动器名称),而是连接成为一个树型结构。Linux在安装新的文件系统时,讧j^洲视频采集系统的设计与实现把它安装到指定的安装It求,比女fl/rnnt/cdrom,从向合并剑返个单一的文f1系统埘I。Lmux的一个一p要牝}iI址它支持多种不同的文件系统。义r1系统将存放卉.系统硬盘上的文件和It录用”J咀理解的统一的形式提供给用户,i1用户不必考虑义rl系统的类型或底层物理设备的特性。在嵌入式系统中,常用的文件系统有R,kMFS、JFFS2、CRAMFS、ROMFS等。冈此,我们可以根据实际衢要,选择多个文佴系:觅。起使用”3。通常情况下,ROMFS足使用较多的文件系统,它是种简一犯、紧改和只谈n1乏仆系统。ROMFS顺}≯r巾6文什数据,并可以在操作系统支{j的存储i52蔷E,I{,^j皂行文件系统,这f、{,¨J‘以n彖统运行时节省许多RAM个M。ROMFS的映像HJ以{电用命令genromfs—v.V”ROMdlsk”一fromfsimg-dromfs—dlr来q.f戊,jC‘I’genromfs是生成ROMFS的l:具,romfsimg是映像文件,romfs~&r是源¨爿2名fj:。5.41内存文件系统RAMFSRAMFS足一个1}常』0妙的利用VFS(VirtualFileSystem,麻拟文件系统)£{H结构而形成的内有文件系统。RAMFS没有自己的文件存储结构,它的文件存储于pagecacheqb,目录结构lIIdentry链表本身描述.文什则廿1VFS的mode结构本£}描述。从RAMFS可看小,VFS小质E町看成一种内存文件系统,它统一了文们舀.内核rII的表示方式并对磁胤义f’f泵统进行缓冲。如果使用RAMFS,一股应选择EXT2文件格式,任[EXT2Jt:d、是一块特别高敛的文件存储空间。由j。存_.RAMdisk上,所以任何改,叟在r次启动后都会丢失。’’然,也有许多人认为对嵌入式存储空|’HJ来讲,这是~种优坍,因为每次系统01,力部足从己知的义件系‰伏态升始的。修改ramdlsk的内容的方江如F:先使用命令gzlp-dramdlskimagegz将ram&skimagegz鲥脏,然后他J}mount0loopram&skimagemydlr命令将ramdlsk挂载到mydlr}【习2(mydtrEl求是个I向时目录,目录名称口J以仃意),挂载后就可以在my&rE{求r对ramdlsk的内存进行编辑了。编辑完成后,先使用umountmydir命令将ram&sk卸载,然后使川第5章系统移植gzlpramdlsklmage命令将ramdtsk压缩为ramdlsk.1inagegz,压缩后的文件就是修改后的ramdlsk。5.4.2FIash日志型文件系统JFFS2FdeJFFS2(JournahngFlashSystem2)文件系统是由瑞典Axis通信公司开发的文件系统,主要针对NOR型Flash存储器设计,提供了掉电安全,平均使用等特性,由于遵循GPL开放源代码,易实现移植。由于JFFS和JFFS2文件格式是特别为Flash存储器没计的,二者都具一种称为“损耗平衡”的特点,也就是说Flash的所有被擦写的单元都保持相同的擦写次数。利用这些特有保护措施,Flash的使用周期得到相当大的提升。JFFS2使用压缩的文件格式,为Flash节省了大量的存储空间,它tEJFFS格式更适合于在系统中使用。值得注意的是,使用JFFS2格式可能带来少量的Flash空间的浪费,这主要是由于日志文件的过度开销和用于回收系统的无用存储单元,浪费的空间大小约是两个数掘段。在¥3C2410上JFFS2的移植过程如下:(1)移植环境:CPU类型为ARMS3C2410.Linux版本为2.4.18.Flash型号为IntelE28F128j3A。(2)修改设备号由于ROM设备和MTDBlock设备的主设备号(major)都是3I,所以如果你不想把JFFS2作为根文件系统的话,必须修改他们之一的major。如果你要修改JFFS2的设备major,在uChnux-dmt/hnux-24x/mclude/hnurJmtd/mtdh中把#defineMTDBLOCK_MAJOR31改成#defineMTD—BLOCK—MAJOR30注:上面的修改是使用ucLmux、从rom启动的情况,而我的板子上使用的是armLinux、并且是从ram启动的,所以不需要更改设备号了。(3)编写Maps文件添加在Flash上的map文件。在kernel/drtvers/mtd/maps下添加Flash芯片(e28f128j3a-150)的map。具体见附录A(4)配置)JHA.kernel/drlvers/mtd/maps/Configin,具体见附录B。聃j-^Rv视频采集系统的设引与实现(5)修改Makefile文rI莉.kernel/dnvers/mtd/maps/Makefile文件中加入如r订{k/(“1然要根捌你的吱“};I况来写):obJ一¥(CONFIG—MTD_S3C2410)+=s3c2410_wpq(6)配甜内核他其支{’IJFFS2TechnologyO说明:这里要4^5;lJ汀,.j,.MemoryRAM/ROM/FlashchipDevices(MTD)f('J选项支抖及其J,JIj{drivers…>和Mappingdriversforchipaccess…>的支持;处:(Filesystemsp选I负支{j、ji体配置见附录C。(7)制作JFFS2映象首先取得JFFS2的制f1+lj{:mkfsJffS2(可从网J二F找)。然后执行如r命令即川。卜成所要的映象:chmod777mkfsjffs2//gOt!jtmkfsjffs2的执行权限,t{lJmkfsjffs2r&Y日叫执fJ|义“jffs2/--Ojffs2/mkfsjffs2--dimg//生成JFFS2义什映缘,其中f1求J侬2Iq11是任意的门录,这‘㈨0ills2足新建的一个目录。(8)JFFS2的应J}j首先将l脑2lmg烧“j5"11Flashtl',具体烧写过程如一r:tflp30800000jfl’s2lmgfl180000030800000nxxx(其q]xxxxx根据jfrs2的人小通。1嘲整,列论七jI篮ILjffs2lmg略大即11r,们篮为所用Flash的扇区大小20000的帜故倍)特别注意:婴想馒做…来的JFFS2义件系统史加的人州化,我们迩j『以nram&skimagegz的mnt/etc/mad/re¥3乏件ee加入如F指令以他启动时¨动爿披JFFS2文件系统(!q'/de、/mtdblock/4足Flash上的Jffs2分I一)。Mount--tjffs2/dev/mtdblock/4/mnt(9)以J.配胃烧’j亢肢之后就可启动整个的系统,对JFFS2分区尽t“内添枷lli川除了,添加的内窬晰fUJ.j也不会丢失了。54.3文件系统CRAMFSCRAMFS是£f财Lmux24内核之厉的版本所设计的种新竹J史件系统,也mIfJI、“I和只读格式的。它{:喽的优点是将文件数据以爪缩形,℃打能,在需要运行fl:J,.1第5章系统移植候进行解J玉缩。由于它存储的文件形式是压缩的格式,所以文件系统不能直接在Flash上运行。虽然这样可以节约很多Flash存储空间,但是文件系统运行需要将大虽的数据拷贝进RAM中,消耗了RAM空间。CRAMFS的移植过程如F:首先生成lmage:在keme】/scnpt/cramf§有生成1mage的程序的源代码,编泽之后生成mkcramfs。建立一个目录,将需要放到文件系统的文件复制到这个目录。如果目录名为mnt,要生成image3乏件为eramfslmg,则命令语句为:/mkcramfsmntcramfsimg。然后,让内核支持CRAMFS:在kernel目录执行命令makemenuconfigJ配置内核需求,选中mD(MemoryTechnologyDevme)设备,我选择直接编译到内核中去,这样就不J}{jmsmodT。选中其中的相关选项,可以根据自己的使用情况定制,多选中一些只是使启动变得慢一些,内核大一点,没有什么其他坏处。其中因为CRAMFS文件系统不是作为系统的根文件系统,所以mtdblock0的主设备号要从3l改为30,这个修改在文件kernel/mclude/hnux/mtd/mtdh中。然后莺新编译内核。最后重新烧写内核和文件系统的映像。重新烧’;编译后的系统内核zlmage:trip30008000zlmage.fl004000030008000xxxxx(xxxxx为核的大小)重新烧写新的cramfs文件系统:trip30008000cramfslmgfl080000030008000XXXXXX(其xxxxxx)bcramfslmg文件的实际大小)系统启动以后,就可以挂载CRAMFS文件系统了,挂载命令如下:cd/rnkdlrcramfsmount.tcramfs/dev/mtdblock/4cramfs然后,就可以在cramfs目录下看到你原来复制过来的东西了。CRAMFS支持的文仲系统大小为256M,单个文件的大小限制在16M,相信可以满足基本的需求了。如果要将CRAMFS作为根文件系统,则需要在内核的文件系统中增加对compressedrom&sk的支持。隳j-~RⅥ税频采集系统的设if’j实现544将CRAMFS、JFFS2、RAMFS移植到同一个文件系统中OxOOOll0000PPCBOOTOx00040000压缩内孩zlmage0x00l40000ramdisk0x00S40000CRAMFSOx00940000JFFS2罔53Flash地址空『丑J分配Flg53AddressAssignmentoftheFlashD“Jcc操作系统对JFFS2{II(’RAMFS的支持鄙需要编译剑内垓th然后需婴为各个义州系统分配不l-Ji'19Flash(';9人小和区问。最后将生成的JFFS2}tI(’RAMFS的映像义ffj毛丐到Flash中川应的f:i代。彳1。本设计中,核心扳f:所使用的Flash为IntelL28F128J3A-150,人小为128Mbit(即16MByte),该Flash的瑚Ⅸ大小为129KB(p、I此,共有128个扇K),地JI『=伞间的分配如F(如图53所示):00000000~00040000一一一一分配给ppcboot(大小为256KBvte)00040000~00140000--…一分配给ARMLinuxl为核(人小为1MByte)00140000~00540000~一一一分配给RAMDISK(人小7.NMByte)00540000~00940000…一一一分配给CRAMFS(人小J,j4MByte)00940000~01000000…一一分配给JFFS2(大小为675MByte)IIg代码中相应的史改如_卜,参址kernel/drlversdmtd/maps/s3c2410c文件。第5章系统移植staticstruetmtd_partltlons3e2410_partitions[]={fname”reservedforbootloader”,size0x040000,offset0x0,mask_flagsMTD_WRITEABLE,},fname:”reservedforkernel”.sizeOxOlooOOO.offset0x040000,mask_flagsMTD_WRITEABLE,},{name”reservedforramdisk”,sizeOx400000.offset。Oxl40000,mask—flagsMTD_WRffEABLE,},{name:”cramfs(4M)”,size0x400000,offset0x540000,},{name’'jffs2(675M)”,size0x6c0000,offsetOx940000.};,-40.坫J、I{Ⅵ概频采集系统的设;I々寅现|j{f3个分区对应若系统f1%ootloader、kernel、ramdlsk,其实返部分并小通过f们’D水.方问,把他们写和这‘弘i婴足为了便于理解,为了代码的亢螺性。我们i‘耍汁恋纯四个和第五个分区。第四个分区足CRAMFS分区,其中offset表示该分I≤n.Flash中的射『刘随戥,(Flash的起始地卅为O),SIZe表示该分区的大小。CRAMFSI’f.j屺胃表而、CRAMFS;)-Ix-位于Flash上从偏移地川0x540000开始的4M大小的个J1jJ『务实上,CI;.AMFSjI!=一个压缩的文rl系统,J立个4M大小的分区大概l叮以支持12MI。内空间。第五个分区足JFFS2,,lK,其中offset表示该分【蔓在FlashI㈨1相对位jt,(Flash∞起始地址为O),sIZe太,J:浚分区的大小。如上JFFS2的配“表示JFFS2分区化jFlash上从偏移地川0x940000斤始,大小为6.75M的宅问I:。如果想重新进行分Ix,则只需要更改mtd._pamtlons3c24l呻artlllons【】结构,然j厅重新编洋内核,囊新p拔各个映像,重新挂载各个文纠系统即可。5.5本章小结本章介绍了嵌入,℃系统中的启动代码移植、操作系统内_}垂:移植和文f,1系统的移植。其中,简要的介}“了_fIIi动代码ppcboot的移植以及ppcboot在开发洲试c11n0,1用;较详细的介绍了系境内核的移植,系统内杉移植的雨^垃对内核进行配W,j:抻板子上不需业的功能.i,]OJll板子上需要的功能,设定板rI.的CPU的光qu譬:i'『|细介绍了嵌入八系统tJ|j10文件系统的移植,重点介绍RAMFS、JFFS2、CRAMFSl一0移植。第6章LCD驱动程序编写与移植第6章LCD驱动程序编写与移植6.1LCD原理概述液晶显示器LCD(LlquldCrystalD,splay),特别是点阵式液晶,已经成为现代仪器仪表用户界面j的主要发展方向,它不仅省电,而且能够显示大量的信息,如各种文字、曲线等等。它比传统的数码管显示器有了质的提高,但是点阵式液晶的驱动电路相刘复杂一些,价格也比较高。因此,降低成本,减少系统的复杂程度,对点阵式液晶的应用具有重要的意义。液晶是一一种介于液体和固体之间的热力学的中间稳定物质形态。其特点足在一定的温度范同内既有液体的流动性和连续性。又有晶体的各向异性,其分子呈长棒形,长宽之比较大,分子不能弯曲,是一个刚性体,中心一般有~个桥链,分子两头有极忭pJ。LCD器件的结构如图6l所示。由于液晶的四壁效应,在定向膜的作用下,液晶分子在正、背玻璃电极上呈水平排列,但排列方向为正交,而玻璃间的分予旱连续扭转过度,这样的构造使液晶对光产生旋光作用,使光偏转方向旋转90度。上电极基扳(正电极液晶材料霾I叫lL—JU÷/二÷、厂]厂—]厂]毳荔封接剂下电极基板({图6.1LCD器件的结构Fig61StructureofLCDEqulpmem钵j.^RⅥ觇频采集系统的设iI々实现图62艟示了液11^娃1:器的t作原理。当外部光线通过P们撤片后形成☆6撤儿{1i6振方向成垂直扣刖,!+l此偏振光通过液晶材料后,被旋转901k,变成办Fd成水‘I7方向,此方向和p偏弧J;的偏振方向一致,因此,此光能j乙个穿过下偏振片I白‘厶到反射极,经反射历沿JlJli|!}}返刚,从而呈现出透哪】状态。“伸k晶屏的上、下f乜{女加E一定的电爪后,IU做。邯分的液晶分子转成乖自ftlmJ,从mj失去旋光十E。…此,从_|.偏振片入射的1:Ij6振光不被旋转,当此偏振光剑达p偏撤片时,【太l为其fIi6揪厅向与下偏撤力。向的,』l柚・E直,因而被下偏振片吸收,无浊剑达反射扳』;成反}t,所以旱现黑色。袱川.九婴,将电极做成各种义’≯、数’≯歧Jj.L阵,就町L^款f:j弁种所需的显示。光源上偏振片液晶盒下偏振片反射板割62液晶显示器的工作蟓理Fig62Theot3。ofLCDWork62LeD的驱动控制62.1总线驱动方式~般带何驱动}61块fIcJt(‘D§^示屏使用这种驱动h式,这和ICD可以力使地‘j符“{lf氐档单片机进iJ.接LI,:t[18051系列单片机。由一,LCDL二纶一…fJ.驱动硬仆ffJ电跚.jq此模块给出的址总线{幺LJ,便J:与单,L;机的总线进行按u瞰动模块j{仃8俯&据总线,外加。哆fU溉“妾u和控制信号。而且还白带{一^可:fi行,只需要将要!l^,卜的内容送到显/J,缓打rI,-执・叮以实现内容的显示。由于j{裔8麓数据线,冈此常讹第6章MD驱动程序编写与移植通过引脚信号米实现地址与数据线复用,以达到把相应的数据送到相应显示缓存的目的i14】。62.2扫描器控制方式另外一种LCD显示屏,没有驱动电路,需要与驱动电路配合使用。这种LCD体积小,但需要另外的驱动芯片。通常可以使用带有LCD驱动能力的高档MCU驱动,如ARM系列的¥3C2410X。¥3C2410X中具有内置的LCD控制器,它具有将湿示缓存(存系统存储器中)中的图像数据传送到外部LCD驱动电路的逻辑功能。¥3C2410X中内嚣的LCD控制器可支持灰度LCD和彩色LCD。在灰度LCD上,使用基于时间的抖动算法(Time—basedDitheringAlgorithm)和FRC(FrameRateContr01)方法,可以支持单色、四级灰度和16级灰度的灰度LcD;在彩色LCD上,可以支持256级彩色。对于不同尺寸的LCD,具有不同数量的垂直和水平像素、数据接L]的数据宽度、接口时间的刷新率,并可对LCD控制器进行编程,从而设置相应的值,以适应小同的LCD显示板。¥3C2410内部LCD控制器为视频数据的发送产生所需的控制信号:VFRAME、VLINE、VCLK、V/Vl。VFRAME为LCD控制器和LCD驱动器之间的帧同步信号,该信号告诉LCD新的一帧开始了,LCD控制器在一个帧显示完成后立即插入一个VFREAM信号,开始新的一帧显示;VLINE为LCD控制器和LCD驱动器之间的行同步脉冲信号,该信号用于LCD驱动器将水平移位寄存器中的内容传送到LCD屏上显示,LCD控制器在一整行数据全部传输剑LCD驱动器后,插入一个VLINE信号;VCLK为LCD控制器和LCD驱动器之间的像素时钟信号,由LCD控制器送出的数据在VCLK的上升沿送出,在VCLK的下降沿被LCD驱动器采样;V/vl为LCD驱动器的交流信号,VlVl信号被LCD驱动器用于改变行和列的电压极性,从而控制像素点的显示和熄灭,VM信号可以与每个帧同步,也可以与可变数量的VLlNE信号同步。¥3C2410LCD控制器的逻辑框图如图63所示。由图63nr以看出,LCD控制器包括REGBANK、LCDCDMA、VIDPRCS、TIMEGEN和LPc3600。REGBANK是LCD控制器的寄存器组,用来对LCD控制器UJ.、RⅥ税频采集系统的设;1与实现1各项参数进行改咒。ll,JL(’DCDMA则是LCD控制器!,川的I)\1A通道,负女从不允总线(SystemBus)I、}“桃Jjf资料取来,通过VIDPRCSflqVD[23O】把5^,J:数扒y二‘给LCD驱动器,…卜JIIMEGEN和LPC3600负贞产生LCDht’研j精要的拧{lJJIf’JJ’,氐后从VIDEOMUX送}弁LCD屏。么j{};一一嚣7二吖九eO.,eLK7VjV3翩f了o。・‰基j"e,holCpVf毫^蝣E,0SV椒=二st};,l}∑\;;;;弋\一~咩叵二图63op∞:∞,毫#懒翎焖}睁o∥4辑.’Ss5翰1∥‘射。=S黝{・P麓LCD控制器逻辑村1图Dmgram匡一;+,!j矿F0二:00F{・二:,JF2,’,≯30lIIg63LcD《_oilerBlock6.3TFT液晶屏的驱动程序移植采川的LCD娃“i骈,ILtjF・tlI公司的HHARMLCDR4,jL符发lfIl的参数’dSharp阳LQ035Q7DB02坫本抓¨。这足一块TFT液晶屏,大小J,3240×320,右碘哗电路生计的时候采用的足16f?,陵线疗式,显示方式为5:6:5。L(’D电路连接I’g如Ho4所示。LCD驱动程序的编1ji‘喽[作就是正确设置对应与/LCDI]{JCPU寄存器fl{J没W}-j时还需要注意^颁、l¨,坝、场频、屏的长宽及多少位fl勺J狈包、饼的点假rL等‘j首先列RGB数州}f,构iiJ定义,硬件违接时采Jfjl6tfi/的拔?t厅式,娃1i方‘J℃乃j:6:5,则RGBI门f豺!(二,~义R:G:B:I=5:6:5:0。ji"、代俨5如F:staticstructs3c241Orbrgbxxx—tfl一16={red{offsetll,length5,},第6章LeD驱动栉序编写与移植green.{offsetblue‘5,length6,),5,},{o仃sct0,lengthtransp{offset。0,length’O,},图64LCD硬件连接图Fig,6.4LCI)HardwareConnectlhcture以上=代码的意义,可通过16位数据RGB=IO]011011011101来分析。①blue.{offsetr0,lentth51表示偏移量为O,长度为5,从RGB中提取出来的数为“11001”。②green{offset的数为“101101”。5length6}表示偏移量为5,长度为6,从RGB中提取出来③red{offset数为“1010l”。ll,length5j表示偏移量为ll,长度为5,从RGB中提取出柬的通过以匕分析我们可以通过查RGBJ颏,色表,就呵以得出这16位数据所标示的颜色。液晶屏E显示的颜色就是通过这16位颜色数据来实现的‘”I。显示的颜色位数为16位,贝Obpp=16。由屏的宽度和高度可设置:xres=240,yres=320。I.Lj。、RⅥ观频采袭系统的设讨’j仗现此液晶屏要求。●L频为53Mhz,帧频为15Khz,场频为60h7,点频的设止与lCDCONI寄存器ffl的(’LKVAL值有关,计算公式为:VCLK=HCLk¨CI—kVAL+1)X2】帧频就是垂…Id步f.’。“i"J频率。帧频与LCD56"控iI埘备“器中的VSYNC、、BPD、VFPD、LINEV、l、HSYNC、HBPD、HFPD、HOZ、』、L和CLKVA。仃父.I算公式为:FrameRate=1/【:(VSPW+1)+(ⅧPD+1)+(LINEVAL+1)+(Vl在具体分析之丽¨J‘以^PD+I)}×:(HSPW+1)+(HBPD+”+“{FPD+1)+(HOZVAL}1)}X{2×(CLKVAL+I)/(HCLK);】。FTFTLCD的时序图,如川65所示。j坼,0”栉臻:………一L~』]’}|¥he一门…j’轧l9艮n—n,Lfll』…掣0#fl一。l;一一厂’『Ifll.L.j‘{}::::舭≈慨结,……。i缀:蓉黝夏XX黔L.,:::~l且.舳.嘲贝舳AnRA囊£,疆腓。}:::;::;:r乙蛾坶删棼……・・・;——一j—————-~…——.J;..;…__h_。P“_HH。’”__“i:;:L广——————1i…!}~w¨w“●H____-__-一:!;;一:一——・;・——・0-——.。—。。.。—。——————。。。.———j“一“≈瑶0槐+{一##)}l“,々冉。,’8。霸’圈65TFTLCD时J,图FIg65TFTLCDTImingDlagram..47..第6章lfD驱动程序编写与移植YBPD农示垂直同步周期之后,在一帧开始的时候的非活动周期。VTPD表示乖寅同步周期之前,在一帧结束的时候得非活动周期。VSPW表示垂直同步脉冲宽度,通过检测非活动周期的宽度来确定垂直脉冲的高电平的宽度。HBPD,HFPD,HSPW为水平同步对应的值。这六个值可以从LCD的数据手册中查到。从数据手册中查到LCD的各个对应的最小值,更改上述值使之大于对应的最小值即可。从数掘手册中奄到,并给出对应的值。VBPD=4,VFPD=I,VSPW=I,HBPD=6,I-IFPD=30,HSPW=3。在对LCD寄存器进行设置之前需要对CPU内部的各个寄存器了解之后才能正确设置。LED控制寄存器l如表6.1所示…1:表6ILCD拧制寄存器lTab6lCCDControlRegister1LCDCONlLINECNT位127.18】1178l描述当前扫描计数器值.表明当前扫描了多少行初始仇oooooooooOCLKVAL确定VCLK和CLKVAL[9ol的速率STN:VCLK=HCLK/(CLKVALX2)(CLKVAL一>2)TFT000000000OVCLK=HCLK/[(CLKVAL+I)X2】(CLKVAL>/0)MMODE17】VM信弓的触发模式(仅对STN屏有效,对TFT屏无意义)OPNRMODE165】选择当前的显示的模式00=4-bit双扫描模式(STN)01=4.ba单扫描模式(STN)10=8一blt单扫描模式(STN)11=TFTLcD面板00BPPf41】选择BPP模式0000=lbr)p0000STN,单色模式址J、RⅥ视频采集系统的设if与实现00(1=2bppSTN.4级灰度模式()OHm4bppSTN,16级灰度模JIJIjl1=8bppSTN,彩色模式bppSTN.彩色模式0100=1210002lbppTFT…《}l=2bppTFT10I(J=4bppTFT10|l=8bppTFTlJII(川6bppTFTl¨I,l=24bppTFTENVID【01uD眦堋输jl{和逻辑使能,禁l卜ol1.:Il觎麴!输出和LCD控制信号jE他税师{输出和LCD控制fj号(、LKvAL决定VCLK的分,HnE。LCD控制器输}{{的VCLK是直接df系统总}k|【勺[作频率HCLK胄拉分频得到的。作为240*320的T丌Df,应保计f}…的VCLK在5~10MHz之问。HCLK=80MHz,取VCLK=5MHz。VCLK:坐坠一(CLKf爿』,+”×2(61),II公式61,可训钟CLKVAL=7。使用的足TFT液品屏,则PNRMODE}±为11&示的模式为16b'f,则BPP=1100。对于LCD控制寄打器l的设置代刚如p:IcdconlLCDI—BPP16TLCDl-PNRJFTLCDlcLK\7、U7)LCD拧制寄以一器10I足62所示…:表62LCD控制寄存器2Tab62LCDControlRegister2LCDCON2VBPD位13I24J扎迅TFT:布垂直同步周期之后,jJ』i』I的数目STN:在STNLCD这些位应该为0帧,i始的J|fI‘初始值0x00L仆JEVALVFPD123:14J【13:6JTFT/STN:这些位决定LCDlfil板的驴,£人小TFT:存帧同步信号之前,一帧的束圮II;。‘z以ij的数据;STN:在STNLCD这些位廊该{疫设为00000000(】000000(x】.49.第6章LCD驱动程序编写与移植VSPW【5:0】TFT:垂直同步脉冲宽度,通过计数非活动行的数目来确定帧同步脉宽STN:在STNLCD这些位应该设为0000000列LCD控制寄存器2设置代码如下:Icdcon2LCD2VBPD(4)lLCD2_VFPD(1)ILCD2—VSPW(1),LCD控制寄存器3.ftfl表63所示【111:表6.3LCD控制寄存器3Tab63LCDControlRegister3LCDCON3HBPD(TFT)位【25:19】描述TFT:在HSYNC的下降沿和开始数据发送之间的VCLK周期数初始值0000000WDLY(STN)STN:WDLY[hol决定VLINE和VCLK之间的延时。WDLY[721保留HOZVAL【18:8】TFT/STN:这些位决定LCD面板的水平大小。HOZvAL用来决定一行的整个字节数为4n字节。在单色模式LCD的X大小为120个点,x=120不能被支持,因为l行包含15个字节。在单色模式x=128可以被支持,因为l行包括16个字节(2n)LCD面板驱动器将要丢弃附加的8个点000000000()OHFPD(TFn【7:0】TFT:在数据结尾和HSYNC的上升沿之间的VCLK周期数L刚EBLANK(STN)STN:这些位表示在行时间内空白时间数。这些位调整VLINE的速率。LnqEBANK单元为HCLKx8.Ox00如果LINEBANK为10,插入到~c“的空白时间为801{(%k.对LCD控制寄存器3设置代码如下:Icdcon3LCD3_HBPD(6)ILCD3_HFPD(30),I.LJ、KⅥ税频采缺系统的设if与实现LCD控制寄有*S4如7264所示…1:表6.4LCD:P#制寄存器4Tab64LCDControlRegister4LCDCON4MVAL位115:81Jm述训始值O、00STN:如果MMODE位被设为…1.这儿为定义VM信号的触发速率。TFT:水平同步脉冲宽度通过VCLK汁数求扶硭HSYNC的脉宽。HSPW(TFTl【7:0J0x00WLG(STN)S1N:WLHll:O】通过HCLK计数水确定VLINE的脉冲宽度。WLHI72lff.留00=16HCLK,01=32HCLK10=48HCLK.11=64HCLK厂TI]1lI_]<0LCD控制寄存揣4设W代码如F:Icdcon4LCD—HSPV~")fLCD4_MVAL(13)LCD控制寄彳r;}}{5如太65所示1111:表65LCD挣制寄存器5Tab65LEDControlRegister5LCDCON5化艄选例始fAReserxcdVSTATUS13117I|1615I伸f々:留.值为0TFT:当前VSYNC信号的}1拂状态【j:;1),指明“佰dVSYNC同步信号处于何种扫捕阶ll0(1:-VSYNClO=ACTIVE(I0(J0l=BACKPorchl1=FRONTPorch00HSTAllJS11413lTFT:当前HSYNC信弓扫描状态.{i明当前HSYNC同步信号处于何种于]描阶段00=HSYNCI(1:ACTIVE0I=BACKPorchlI=FRONTPorchBPP24BL1121TFT:设定24bpp显示模式时.税hf资{j九显示缓冲卜(中的排列顺序(即低位有效怂芷南伽fJ效)。O.51.第6章LCD驱动程序编写与移植o:LSB有效I=MSB有效FRM565【11】TFT这个位选择16位的视频数据输出格式O=5:5::5:l1-5:6:5OINVVCLK110]STN/TFT.这个位控制vCLK触发沿的极性OO=在VCLK下降沿获取视频数据l=在VCLK上升沿获取视频数据INVVLINE【9】STN厂rFT:这个位表示VLINE/HSlrNC脉冲极性0=NormalO1=lnvertec(反向)INWFRAME【8JSTN/TFT.这个位表示VFRAMENSYNC脉冲的极性0=NornmlOl=InvertedrNNVD【7]STN/TFT这个位表示VD(视频数据)脉冲宽度极性O=Normall=VD1s0reverted0nqWDEN【616TFT.这些位表示VDEN信号极性O=Normall=InvertedJNVPWREN【5】5STN/TFT,这个表示PW耻-N信号极性O0=NormaI1=InvertednqVLEND【4lTFT:表示LEND信号极性。o=NOl'lllall=InvertedOPWREN【3J3STN/TFT:LCD_PWREN输出信号使能/禁止o=禁止PWREN信号l=使能PWREN信号0ENLENDf2】丁FTLEND输出信号使能Oo=禁止LEND信号l=使能LEND信号BSWP【l】1STN,rFT字节交换控制位O=交换禁止l=交换使能HWSWPO1010STN/TFT:半字交换控制位o=交换禁止能l=交换使O.52.垠J。、RM税频采集系统的设if与寅现,忆CD5控制寄打器发什f℃¨如下:Icdcon5LCD5一FRM565LCD5_HWSWPLCD5一PWEN整个配霄代码如p:stahcstructs3c2410tb—r'b—math—InfoXXx-stn—mfo——m]tdata={16,plxeloekl74757,bpp#1fdefCONFIG—FB—S3(’2410一EMULxres‘96,#elseXI'eS240#en&fyreshsync5.320,vsyne_len‘1.upper_margin.1,Iower_margm’3,cmap_statlc1,1eftmargin7,right_margin3sync‘0,leg{lcdconl.LCDl一BPP一16Tlcdcon2LCDl—PNR—1FTLCDIcLKVAU7),LCD:一VBPD(4)lLCD2_VFPD(1)ILCD2一VSPW(1),lcdcon3.LCD3-HBPD(6)ILCD3_HFPD(30),Icdcon4’LCD4_HSPW(3)ILCD4_MVAL(13),lcdcon5LCD5一FRM565LCDS_HWSWPLCD5一PwREN,},l’}end]f除了控制寄打;}}},坯.I,刈I|l!;{绥存起始地址寄存器进行Ifi确改住。编写代Ⅱ5如卜-:2new_regsledsaddrlLCDADDR_BANK(((unsignedlong)VideoPhysicalTemp,>32))LCDADDR_BASEL(((unsignedIong)VldeoPhysfcalTemp>>1)),new_regsledaddr2=L(’DADDR_BASELr((unsignedIong)VldeoPhyslealTemp+(var->xres+2+(var一>yres))).53.第6章LCD驱动程序编写与移植>>1),new_regs.1cdaddr3=LCDADDR_OFFSET(0)I(LCDADDR_PAGE(var->xres)),各个寄存器设置完后,最后,需要注意的是TFT的信号引脚中有一个VM信号线,它是控制打开LCD的显示开关,让其进行显示,可以接到任何一个GPIO卜。¥3C2410中捉供了一个VM信号,可以将LCD的这个信号与¥3C2410信号相接,在驱动程序中需加入如下代码:voids3c2410ledimt(vold){GPDCON=0xaaaaaaaa;#1fdefCONFIG_S3C2410_SMDKGPCCON=0xaaaaaaaa,set_gplo_ctrl(GPIO_G4嚣endlfGPIO_PULLUP_ENGPIO_MODE_LCD_PWRDN),#Ifdefined(CONFIG_MIZl)&&defined(CONFIG_PM)if(mzpm_opsblank_helperf-NULLl(4(mz__pm_opsblank—helper))(MZ_BLANK_ON),拌erldlf}液晶显示还需要帧缓冲区支持,帧缓冲区是出现在Lmux2.2)()【及以后皈本内核当中的一种驱动程序接口,这种接口将显示设备抽象为帧缓冲区设备区。帧缓冲区为图像硬件设备提供了一种抽象化处理,它代表了一些视频硬件设备,允许应用软件通过定义明确的界面来访问图像硬件设备。这样软件无须了解任何涉及硬件底层驱动的东西。它允许应用程序在图形模式F直接对显示缓冲区进行读写和I/o控制操作。通过专门的设备节点可对该设备进行访问,如/dev/fb*。可以将它看成足显示内存的一个映像,将其映射到边程地址空间之后,就可以进行凄与操作,向读写操作可以反映到LCD。缓冲设备对应的设备文件为/dev/fb*,通常情况下,默认的帧缓冲设备为/dev/tbO。帧缓冲设备属于字符设备,采用“文件层一驱动层”的接口方式。在文件层为之定义了以下数据结构:甚1。^RⅥ视频采集系统的设计与实现Staticstructfile_operatlonsowerreadwritelocll:mmapopenfo_fops={THIS—MODULEfbread,fb_wnte,fblOOtl.r'bmmap,fb__open,releasego_release,}10成员函数部在hnux/drwer/vldeo/fbmemc中定义,其r}l的函坡对具体的醍竹边1JI探作,对寄存器进iJ:设咒,对显示缓冲进行映射。凶此,需要自.内仫一II加}-4Makemenuconfigframebuffer的支持。:量择Consoledrwers——一)Frame—buffer“图。suppon——)砖;J魁绷¨引66Frame—bufferpL图46Frame.buffer配胃|矧Fig46Frame—bufferConliguratJon第6章LCD驱动程序编写与移植MakeMakecleanzImage最后,把新生成的内核,重新烧写,重新启动,将会看到一只蜻蜓,这表明耵叮LCD驱动成功。在此基础上,可以进行数据和图像的操作。6.4本章小结本章对液晶屏的工作原理作了介绍,对其驱动方式进行了详细的说碉,对¥3C24101勾部寄存器进行了详细的介绍,并针对设讨中使用的TFT液晶屏的驱动程序的编写进行了详细的说明。.56.辑j‘jRⅥ砚频采集系统的设计与寅现第7章USB摄像头驱动及视频采集系统的实现随着多媒体技术、H络{支术的迅速发展和后PC机时代的刨农,利用嵌入武系统。0现远程视屏临税、¨JWI乜话和视屏会议等应用L成为¨J。能。为了实现这口≮应川,。戈时获得视频数捌足个iF』婴环节。针对这一点,下呱介}/]USB摄像头的gi动歧税屏采集的实现。7.1OSB接口介绍USB是英文Umversa]SerialBus的缩7;,中文含义足“通川m行总线”。它足种应用在Pc领域的新』叫接u技术。主要具有以}优点:●即插即肼●广泛的软硬什支{t●低功耗●可选择的多种迷瞍幔式●完备的总线打I扑纷构●硬什结构}小准化现在生,2的PC/0LJL'r-郝配备USB接u,各种流jj.的探作系统都增加了1tUSB昀支持。随,符USB体系绀构的逐步完善。USB设备的l:,ZltJ越柬越广泛——UsB移z山fl!l!龠、USB数码午}f帆。USBMP3播放器、USB鼠标和键蕊、USB游戏手枘等,USBiP为PC机和嵌入,L领域zI-的应用热点推动计算机外发的匕速发腱【161。三譬¥3C2410,i!.fi的¨内外围模块中包括2个USB士十Jl拔u.1个USB发衔拨u,。}业设计中用到了一个USBii机接口,丰要用来接USB摄像三L。7.2摄像头介绍采用的摄像头Y.jJIi尔4:她创新科技发展有限公Fd的川Itl{.v3000USB擞俘头,膨{垤像头采IijOVSll税频,匕JL。网It61V3000输出格式为RGB24和Yuv420,CIF(352<288)格式帧率达30fps,i,J吹现真正的实叫视频拊{获,VGA(640X480)格J℃帧串为;O一1Sips,最小照19J瞍为10Lux,调焦范围为6mm牟.极远,5l1水平视如,具仃亢.57.第7章USB摄像头驱动及视频采集系统的实现善的自动亮度、白平衡控制,提供色彩饱和度、对比度、边缘增强、伽马表等高级数码影像控制功能,在2200:1范围内曝光自动调整,硬件压缩为5:l,闪烁控制为50Hz或60Hz,视野深度为50毫米到无限远,与TWAIN标准兼容,提供640x480格式高清晰静j±:图像捕获模式【17l。7,3USB摄像头驱动的实现系统加戴设备驱动的方式有模块加载和内核初始化加载两种:前者通过用户使用msmod命令动态加载到内核中,通过rmmod命令卸载驱动模块;后者是把驱动编进内核,在内核初始化时自动加载1181。网ltl4v3000摄像头为USB接口,内部芯片为OV511。目标板的操作系统气州Lmux自带该芯片的驱动,该驱动可以用模块的方式加载,也可以编进内核,在这里采用的足编进内核的方法。具体方法是:(1)启动RedHatLmux,登入并进入根目录。并进/kARMLimux操作系统的内核目录下。cd/cdHHARM2410cdkernel(2)进入内核目录之后,执行makemenuconfig,则出现如果7l所示的内核配置界面。A.选择LoadableKernelmodulemodulesupport——)下的Enableloadablemodulesupport和loader,让内核可以加载模块选项,同时支持内核启动时加载。B.选择Multlme&adevices——)下的VideoForLmux,因为是内核加载的方式,在<>巾选定“",而不足“M”。C.选择USBsupport一一)下I拘SupportforUSB¥[IUSBOV51lCamerasupport(NEW)。选择内核支持USB接IZI)}HOV51l芯片。D.最历退出内核的配置,并保存。如图72所示。系统对刚才对内核的更改进行保存。垠j‘^RⅥ视频采集系统的设;f与寅现图7.1内核配置界面Fig7.1KernelConfiguration图7.2内核配霄退}J}辟IFig7.2QuztofKernelConfiguration.59.第7章USB摄像头驱动及视频采集系统的实现(3)对OVSll芯片的驱动程序进行修改,具体是;Nkemel/dnver/usb录F的ov511c这个文件进行修改。CVIov51l在VI的一般模式下查找芯片的默认输出图片格式的函数:/ov51x—set—default-params(struct该函数中的usbov511+ov511)for0=0;l<OV511—NUMFRAMES;i++){ov511->fram@].wldth=ov51l->maxwldth,ov511->frame[i]helght=ov511->maxhelght,ov511->frame[1].bytes__read=O;if(fore_palette)ov51elseov51ov511->frame[i】format=force-palette,1->frame[i】format=VIDEO_PALETTE_RGB24;1->frame[i]depth=ov51l_get_depth(ov511->frame[q.format),}这部分语句是主要设冠ov51l默认输出劁片格式,其00maxwldthj}llmaxhelght置了图片的最人宽度和高度,ifelse语句设置了图片的格式,由于LCD液晶显示的是16bits的RGB图片,所以,ov51l输出的图片格式也应该是16bits的RGB图片数据,宏VIDEOPALETTERGB565定义的就是16bits的RGB数据图片,在这里针对液晶屏的特点,将图片格式设置为16Nts的RGB格式,作如下修改:将ifelse语句完全注释掉,用下面的语句代替:ov511->frame[i].format=VIDEO_PALETtE_RGB565;修改后完整的南r语句为:for(i=0,OV51INUMFRAMES;i++){ov51卜>frame[q,wldth=ov51ov511->maxwldth;1->maxhelght;1->frameb】height=ov51ov5ll->frame[q.bytes_read=O;/hf(fore-palette)聃j。、RⅥ视频采集系统的设计与安垅//ov51HeBe//ov51Ov51ov51l->frame[1】format=foreeA)alette;1->frameb】format=VIDEOPALETTERGB24,l->frame[t】format=VIDE吨PALETrE_RGB566,l一>frameb】depth=ov511get_depth(ov511->frameb】format);:(4)刈‘以袱拱i:j^-要,L幺尘陶,}的默认输出大小,I,,以修改哪动中的函数ovTxx0_eonfigure。l。的弛Irif}幻;j’Setsensor一>specificvat’|ov511一>maxwldth=640,ov511->maxhelght=480,完成设胃后,保有巡…。并对内核遄{J.编译:makedepmakezlmage这样i:Jc|7E成fJ■定:l】|J旧内核映相文件,系统自动将内核文fq复制到/t肋oot/I求F以供烧写。{Jt1实验扳电源,在RedHatLmux㈣p的一个终端钧入28)mmlcom,在硅4:器上{『&小如下信息:PPCBoot200(Feb272006.1109PPCBootcode33F00000.>33F15D54BSS.>33F19IF8DRAMConfigurationBank#O3000000064MBFlashMemoryStartOxODeviceIDoftheFlashISl8mtelE28F128J3A150lintfinishedlf|Flash16MBStarthnuxno“y/n1这时,按。¨dj:键。I卜提示符停留n:sMDK241畔F,f1.此提示符p司‘以j乙戊对内核文件和系统镜像烧。,j。为了不至于频繁烧1j内孩莉J文什系统,州以把内.61.第7章tlSB摄像头驱动及视频采集系统的实现核和文件系统下载至RAM中直接启动,测试一下新的内核和文件系统是否可以正常使用,最后再烧写文件。内核测试可通过t邱来下载至)JRAMO。SMDK2410#tflp30008000zlmage<DM9000>I/O。8000300.VID90000a46NetOurlP=eoa80278NetServerIP=coa8027aNetOurGatewaylP2coa80201NetOurSubnetMask=舟附m0ARPbroadcast1AItPbroadcast2TFTPfromserver192.1682.122.ourIPaddressIS1921682120Fllename’zlmage’Loadaddress.0x30008000Loadmg女僻群##群牟#掣撑桦群释##拌###莘#舟#撑#舟#群群#群辫拌撑释#拌##撑#槲黼#女蝴撑绷撑女蛑##群社##撑##doneBytestransferred=924844(elcachex)SMDK2410#tffp30800000ram&skimaggz<DM9000>I/08000300.VID’90000a46NetOurIP=coa80278NetServerlP=coa8027aNetOurGatewaylP=cOa80201NetOurSubnetMask=ff跗匍10ARPbroadcast1ARPbroadcast2耵?TPfromserver1921682120.OBrIPaddressis1921682122Fdename’ramdisktmagegz'.LoadaddressOx30800000.62—牡卜jRⅥ税频采集系统的设iI’j实现Loading拌#槲###群#拌拌#洲########黼#群黼《牟群桦牟#拌#群#拌#存拌岸槲#####群牟删拌群##7f拌#拌拌doneBytestransferred=2304819(232b33hex)SMDK2410#go30008000这II・f启动RAMzI,的内核文件,启动完毕后,把网眼v3000于j王像头插入USBHOST,系统}【{现女l|h氘n:hubcUSBnewdeviceconnerOilbusl/l,asmgneddevicenumber2ov511.cUSBOV511+camerafoundov51lcDeviceregisteronminor0一在ARMLmuxJ)Z小钧h#cddev#Isvideo*Vtde00这表明摄像义驱动利J1rJn.RAM测试成功。这丰Y就可以把编if过的内核,C竹p找到日柄、板上。复位系统,进入SMDK241畔提示符卜|,进iJ蚓h操作:SMDK2410#tflp30008000zlmageSMDK2410#protectoffallSMDK241O拌fl4000030008000e0000ErasingFlashlocations,PleaseWmt.[XXXXX】【XXXXX】【XXXXX]【xxxxx】[XXXXX】[XXXXX】【XXXXX】Erased8sectorsProgrammingflash,PleaseWast..牛奉丰唪}}毒幸奉术幸乖}}幸幸{丰十}}乖牛牛奉幸宰幸}木丰木木{丰半难乖幸}事}牛幸十牛幸}丰{{{唪牛牛枣木牛}枣奉{‘木水争此,USB拟像三k似!山内核肌裁成功㈣1191120’。‘7.4视频采集信息在液晶屏上的显示驱动程序加披之后,前匹一个应用程序把摄像义果集的图像f者息显j川:来。返。Pi要Ul摄像头采集的I纠像信息显示在液品屏上的应用柠序n勺的编写。第7章LISB摄像头驱动及视频采集系统的实现在LmuxF,所有的外设都被看成是一种特殊的文件,称为外设文件。系统调用是内核和应用程序之间的接口,而外设驱动程序则是内核和外设之间的接口。它完成设备的幸/J始化和释放、对设备文件的各种操作和中断处理功能,为应用程序屏蔽了外设硬件的细节,使得应用程序可以像普通文件一样对外设进行搛作12“。摄像头属f视频类设备,遵循的标准为VideoforLinux(V4L)标准。这个标准定义了一套统一的API接口,内核、驱动、应用程序都以这个接口为标准进行交流。目前的v4L标准涵盖了音视频捕捉及处理等内容,也包括USB摄像头。视屏应抖j程序通过标准的系统调用即可操作各种不同的视频捕捉外设。Vide04Lmux向虚拟文件注册视频殴备文件,应用程序通过操作视频设备文件实现对视频设备的访问。Lmux下』与Vide04Lmux相关设备及用途如表7l所示。表7.1设备文件及用途Tab7.IEquipmentFdeandFunction/de、『、ldeo视频捕捉接口AM/FM音频设备文字电视广播原始BvI数据/de'-/radtoIde',lvtx|抵~bt这里宅要针对设备文件/dev/vldeo进行视频捕捉方面的程序设计。Lmux系统中一般的文件操作足通过read、write等系统调用完成,但这些系统调用是通过内核态与用户之间相互进行数据拷贝实现的。对于图像数据来说,进行拷贝必然会增加时间开销,因此需要使用内存映射的办法来加以解决。首先,中请足够大的内核态内存作为图像数据缓存,将UBR带来的数据暂存;然后将其用remap_page_rangi函数映射到用户态空间。这样,用户态空间的图像处理程宇就町以使用mmap0西f数,直接读写内核态帧缓冲区,减少额外开销。要进行视频图像捕捉必须要用到VIDIOCMCAPTURE和VlDIOCSYNC这两个toctl函数。vIDIOCGMBUF包含有所有缓冲器的设置与地址。VIDIOCMCAPTURE用与开始捕捉;VIDIOSCYNC用于等待捕捉完成,获得视频数据。为了加快数据处lE速度,甚j。、RⅥ视频采集系统的设il。J实现般使用舣缓冲器,l_!JJbufferO抽提数据时,bufferlf々输数刷:bufferl捕挝数抓叫.I,ufferO传输数拂:。域终,将采集到的数据送液晶进行砂爪陋l,祝频采奠、fJOl,':!It""流柑吲如图73』听示。I割73摄像头应川程序沈Ⅳ|孚】Fig73CameraApphcatlonFId‰具体摄像头数掘的W序代码为:read(fp,bur,wIdth4height+bpp/811-=、)vldth+helght*bpp/8其q.fp为已扪It-的擞像头’发各句柄,buf为定义的内打中n:J段存储,i,11lf,I12代码为麻川程序maln函数要求用广1输入的命令行参数,Ⅵ-dlh为图片的觅瞍,helght)El图片的高度,bppJ,jRGB图片的何数,这f11只能改W为16。获甜讥频数扒}tj,就lU‘以送液I"肼“小,走整的读摄像头数据和送液II^W}.I_i的代码为:while(1)Irean_data(cam—fp,rgb,wldth,height,bpp),draw(fb,&rgb[O],wldth,height,bpp,o,0);第7章tISB摄像头驱动及视频采集系统的实现j,在draw函数中fb为已打开的液晶句柄,&唱b【o】为待写入液品屏的图片数据。应用稃序编写完之后,需用交叉编译环境列这个文什进行编译。应用程序的文件名为camfbc,通过以下指令进行编译:/opt/host/armv41/bm/armv41一unknown—hnux-gee一0camfbcamfbc编译没有错误之后就生成一个eamfb可执行文件。把camfb可执行文件拷贝至根目录下:cpcamfb/,然后通过目标板挂载本宿主机:mount-onoloek1921682122//mnt,在目标板上执行相关指令即可验证此应用程序是否可以把采集的图像显示在液晶屏上,具体指令如下:cd/mnt|eamfb640480160此时在液晶屏上呵以看到摄像头采集的图像,并且可以动态显示。这说明}见频采集的应用程序编写成功。这样就J可以把此可执行文件放进镜像系统文件ram&sk@,重新制作镜像文件系统,然后重新下载和烧写ram&sk,以便目标板重新启动时,可以在目标饭上直接运行此指令。具体步骤如下‘3I:(1)将/HHARM9-EDU/hnages/ramdlskimagegz拷贝到根目录下,新建一个ram&sk目录并解开ram&sk.1inagegz:cp/HHARM9一EDU/Images/ram&skimagegz/cd/mkdlrramdlskgzlp_d/ram&skimagegz(2)此时根目录下会'生成ram&sklinage。ramdtskimagek,b解开后的Llunux的文件系统镜像文件,再将ramdIsk.tmage3£件系统镜像文件mount到新建日录ram&sk中:mount-0loopram&skimage/ramd,sk/此时可以加入摄像头的应用程序camfb;cd/ramdlsk墟j、州视频采集系统的设计与实现mkdlrcamera(新缱fi,用程序的目录名)cp/camfo/ramdslk,camera/(3)系统启动叫能{!I多m山运行应f{j平H序,还j捂修改午}{J艇nq邺本文件,H体探f1如下:cd/usrcdetcVIrcIoacl编o;如r脚本文rI:撑!/bln/shlfconfi91012700lIfeonfigeth01921682222routeaddde【|clLI】lgw192.168.2.254cam2f.b64(I48016f)&脚本文什oj完之Jli,保存退出。(4)umount/ram&sk/(5)对新生成的rarndlsk,amgeK仲系统镜像文什进i,压绵,以便下教使f玎gzlp/ramdiskimage/ramdlskimagegz印hamdlsk印/ramd,skiamgegz/HHARM9=EDU/Images/lamgegz/tflpboot/lmage(6)下载和烧’5ramdlskgZ到Flash巾。启动F{},J、板,渤问时输入n.就进入了命令行模,℃,输入命令:SMDK2410#tflp3080000ramdlskimagegzSMDK241O#protectofrallSMDK241O#flI4000030800000300000烧1;完毕后币”j日f,J:扳,可以看到文付系统中出现了came,a]j录,爿.II.I,:,j31m。卜并小翟j要我们r幼执iJ‘,I『lJ足按照脚本文什中’i的fj幼执“。整个系统启z力之j,同样町以矗.激t锗Wl功念显示摄像头采集到的图像fi息,系统粟集蛐IIq74朋ilj。第7章USB摄像头驱动及视频采集系统的实现图74系统采集图Fig74SystemSamplePicture7.5网络摄像机的实现网络摄像机的定义为除具有捕捉功能外,机内还内置了数字化压缩控制器和基于WEB的操作系统,使得视频数据经压缩加密后,通过局域网,internet或无线网络送至终端用户。而远端用户可在自己的PC上使用标准的网络浏览器,根据嘲络摄像机独CLIP地址,对网络摄像机进行访问,实时监控目标现场的情况,并呵对图像实时编辑和存储。网络摄像机应用在各种监控系统中,贯穿于人们生活的各个领域。用ARM来实现嘲络摄像机,更贴近人们的生活,更具有意义!摄像头驱动程序已经加载成功,此系统的实现需要把目标板作为一个视频服务器来使用,这就需要在目杯板的ARMLmux系统中移植一个视频服务器的应用程序。坫1。、RⅥ观频采锻系统的设i{吁实现Webcam是个比4矧川jfi0视频应用拌序,通过阳络p拔v,ebcam_serveff<JLmu,、版本,它是基j—GNU架构之下的,完全免费,源码什放,我下载的f疲奉为webcam—server一050targzWebcamserverflq移ft'1过柑只体如下:(1)对webcam_serser逍iJ彬fJf、缩。tar-zxvfwebcam_server一050targz(2)解』畏维i之盯f:j州webcam_server的文f,1火,进八咳文件火,j{刈webcamserver进{J.眦Y’hcdwebcam—server/configure(3)对源文什眦截之J。j个成相应的Makefile文什。刘MakenIe文件进行修改,坐改具编泽环境。cdwebcam—serverviMakefile把CC=gccL嗖为CC=/opt/host/armv4l/bl“armV41-unknow—hnux-geccdvlsrcMakefileI.Jf'(CC=gcc改为(’C=/opt/host/armv4l/bm/armv41一unknow-linux。gcc(4)修改、vebcaITl-Ser、erc源义件,在手函数中找到如一p讲们:structRGB龟=DEF_TEXT』G,structRGBbg=DEF_TEXT_BG,structRGBtrans=DEFTRANS,把这三条讯{U移YlJma,nlgl数的最开始。以防l}:编汗刚欣乍错误。(5)对webcamser,,er的源文件进行编译。Make,7I-成可执jJ:文fwebcam—server。(6)把此应用fu序Ⅲ找剑日杯板上。cpwebcamf启动开发板,进入系统之)舌mount∞nolock192}682122//mnt第7章USB摄像头驱动及视频采集系统的实现cd/mnt就可以看到webcam_server可执行文件,同样可以把此文件加到镜像系统文f"framdiskimagegz中,然后直接烧写到目标板上12411251126I【27】。图7.5AcuveWebcam启动界面WebCamStartPictureFig.7.5AcUve至此,webcamserver移植完成。下面需要对这个移植的视频服务器进行测试。在目标板上运行/webcamserver启动webcamservea"。在windows操作系统中下载Activewebcam的客户端,并安装。在测试视频服务器之前,需要对本地的网譬进2.122;子网掩码:255.255.255.0;默认网关:行设置:IP地址:192.16819216821。启动ActiveWebcam,启动界面如图75所示。选择Tools——)CreateWebPage.新建一个网页浏览页,并选dPsettings,对视频浏览的相关参数进行设置。具体设置为:VideoDevice选中NetworkCameraModel:ActiveIPCamera:PreviewFrameRate:25framesperAdressorsec:WebCamHTTPServer:IPURL:1921682120(即甚J、肼税额采集系统的设计lJ实观;1.发收的lP地址)Port:8888。整个设置完之后就叮以搜系拟像头,舀:返q抽,以找到摄像头,找到之后,就iI,以正常的观频显示,如图76所小阀络摄像机的§&1:铃II;Ii。此应用程序既仃吱叫砬示功能,还有录像功能,州以揪{】》:需要边{J-卡|{府的!堡胃。现在实现的是^剧^州络传输过程,只要冉把H枷、板迎接HUB,迄妾HuB1;:jPc机设定同一个蚓段,n.相应的PctIL上就可以动态的显小以l像头采身:的信息,’蠢现了网络摄像机的功能。I髻476网络摄像机显示界16lFig7.6Netx、orkCameraDIspla3Pzctttre7.6本章小结本章对USB接口进行介绍,并对网眼v3000摄像头的功能进行说明。关于摄像上的驱动足一个难点,址实埘图像采集的关键步骤,文中划USB摄像头驱动利J】,J旧实现步骤用图形和义。,f1.了详细的闸述。驱动加载成功后,需要把摄像头的H像硅示出来,给人家。个,{脱地认识。图像的显示用了陋种h式:一足曲.按把采第7章USB摄像头驱动及视频采集系统的实现集到的图像信息动态的显示在液晶屏上,另一种是把采集到的图像数据通过网络来传输,并在PC机通过相应的应用程序来把通过网络传过来的图像信息进行碌示。在液晶屏上动态显示需要对液晶屏进行驱动,并编写液晶屏显示的应用程宁,文中给出了摄像头应用程序的流程图,并对操作步骤作了一~说明,同时把生成的可执行文件放在镜像文件ramd,sk中,并设定为Lmux系统启动后的执行程序,这样当Lmux系统启动后,直接执行图像采集应用程序。图像通过网络传输,并在Pc,JL上显示是近两年研究的热点。文中通过移植WebCamServer应用程序来实现。对WebCam_Server程序的修改,设置以及移植作了详细说明。最终实现了通过网络的方式把远端的图像信息在PC机上显示,实现了网络摄像机。哏j、Ⅻ观频采斟,系统的设}1q宜现第8章结论8.1论文工作总结设il最终藤木完成了溯埘的仟务,实现了液晶』拜的驰动,USB摄像爻n勺』婀动,J}把摄像头采集的税¥51效抛逆到液晶肼上动态显求,迅实现了H络lP摄像p.。h…刈论文上要完成的工秆逍ir。下总结:☆存设训中基本完成r系统墟件电路的制作和调试,牡个系统一叮以正常丝行,1要功能塔本能够实班。^硬什的摹础上完成了嵌入式操f1最统ARMI.,.ulxr-q手爱耳.IIJFFS2等文f1系统的移植,以及摄像头驱动年H村{f训衄川…F的编¨。・々打木设训的液rI^肝驰r山部分,通过列¥3C2410数掘丁肼的玎细妍读,划液-¨川应的寄存嚣进行订:f_{{J改.fi2以及相关渊试,完成了埘彩色液^^屏的驱功。j存M颁聚集部分,n允完成了对USB摄像头骀z力的世lf,J奠^编写了把累日、的税频信息送到液品』jf卜的应用程序,最后对本次醍训进{J扎腱,通过移植税额服务器』畦削W膊、veb(’amSetvel,实现了网络摄像机,迎j』Pc柬奄石【I},J:枉三迎过划络发送的税频俐像。.叠另本人研究士期|1IJ参肌导师项曰,包括:斛放军某_fl}f究一ftlf波数据jIllf?i,{蛆职责为负责部分碗rI没讨和调试;人显集团新掣城市道路受通采集乐绮,负山项门胸所有什发,包捅艘件设计、调试,软件编写、调试,以及最扁rj;J80试刷验收f:作。82今后工作展望在今后的T=作巾,;li葵划视频采集部分继续调试,因为摄像火采集的Ⅲ像亿,世九液品屏l。显示并4:址砒流畅,可咀考虑通过移植GUI,柬优(Ll≮l像的传输其砍.cq±并摄像机足’气夸比较j1}fJnq产品,虽然此次设计中实现了H}3r1P摄像机.f『1受Ii旧功能迎父缺,町咀考也弃』、端和采集端之间的史白i,为,【l巫加人性化。另外,垃i;_|中采用的ARM9芯片jJJ能比较强大,接口比较十:富,在技们以后的实It,j:I:作中,叮以根据我们的:*婴,叫以进行更加有艘的扩展。参考文献参考文献【1】阳泽编苦。《嵌入式系统开芨与应用教程》。北京:北京航空航天大学出版社,2005【2]陈鹤橙。崴入式Ltmtx操作系统的研究及萁在信息家电中的应用:(硕士学位论文)。合肥:台肥工业大学,200213J《华恒HHARM9.EDU实验指导书》(上,中.下)。台肥:台肥华开源恒信息投术仟限公司.2003f41马忠梅.李善平.慷慨,叶楠著。ARM&Lmux嵌入吱救程。北京:北京航空航,:太学fⅡ版社,2004【5J金西,黄汪。嵌入式Linux技术的现状与发展动向。htlpllww,,~ahetegov『61cnr明,范书瑞.曾祥烨编著。{ARM9嵌入式系统设计与开发敦程》。北京:电于工业出版社,2006【71藜贵和,馀华中,王磊著。ARM9嵌入式技术及Linux高级实践教程。北京:北gl航卒航天足学出版}}.200518lSFLlrbcrARMSoC怀系结构。田泽,十郭山.盛世敏,译,北京:北京航空航天,:学Ⅲ版社.2002J9l郜思轶主编,.《嵌入式LINUX设计与应用》。北京:清华大学出版社.21)02【10l华恒公I】M站h“p,/、vwwhhcn.corn/111】53C2410X32・BitRISCMicroprocessorUser’sManual112l华恒AILM9嵌入式教学实骑系统FAQ.hno//wwuhhencom/danese/hharm9-edu%20faqhtml【13】詹荣开。嵌入式系统BootLoader技术内幕。httpⅣww*128lbmcom/dcveloperv,orks/ca/【14J嵌入式系统中LCD实现的原理。Ⅵww7465COIl/f151刘利国。¥3C2410下LCD驱动程序移植及GUI程序编写。Ⅵrwwlaohu.sonnet【161USB接[j,完全手册。http//wwwSluC.Olllc如呷u衄0lchuzlll血,05htm【l_7】』匕京东英创新科技发展自限公司同站http脚vwwwebe)ecomcⅣIlRl燕盯,基IFVMe04Lmttx的USB摄像头图像采策实现。合肥:合肥工业大学,2006【19J黄宁,王康编著。《华恒科技HHARM2410开发平台技术手册》。合肥:合肥华开碑恒信息技术有限公司.2005120J孙天泽.袁文菊,张海峰著。嵌入式设汁厦Llnux驱动开发指南——基于ARM9处理器。北京:电子1业出版社.200574甚1‘、RⅥ视频采集系统的设tI与实现21】NedMatthex、.RtchardStones著。杨晓云.土建轿.杨涛,商史洲等译。Linuxf2序设【原书第2版)。北糸:ⅣL触』廿出版社,2002122l张永强,趟永萌.李0:铯嵌久式远稃视擞采集系统的设汁1j贫J地河北:河北IfY.'7-阮・20051231孙肖f。基于嵌入式Lmux的图像采集系统的设计与实现。曲安:I儿{宜电子科技大。#,20051241搬像头(webCam)神Llnu'.,操作系统中的驱动方法。、、、¨~hnuxsIrorg125lActiveWebCamforWlndox、,s2000/xp/2003。w3A'W126】WebCam_Sel'、ersoftcoinforLlnuxhttp//freshmeatnel/projectsA、ebcamserxcr/127J陈站。Makefile的编’jj!彳甘。http//wx~w.embedercom128J鹿{|睾勇,唐婷。ARM处卿器巾断处碍的编程实现。http0吣、、、、5Iembcorn129If美lJeanJLabrosse蔷,f{|5姒贝等译。嵌入式实时操作系统uC/DOS.II(第2版J。北京:此爪航守冉JL天大学fH版f},2003J301黄删娜,管佩淼.膨、衫,JJ岳。RedHalLmux90基璐教程。北京:}^毕大学Ⅲ版fJ,200413l】李蔚泽编著.((RedHatLlnu、9『卅络管理》。北京:消。产夫学…I,2it。2003.75.附录Amaps文件附录Astaticstructmaps文件mtd_partltlons3c2410_parhtlons[】={{iLame’‘reservedforbootloader”,sizeOx040000,0x0,offsetmask_flags’MTDWRITEABLE,},{name”reservedforkernel”.sizeOx0100000,Ox040000,offsetmask_flags.MTD_WRITEABLE,},{name‘’reservedforramdlsk“,sizeOx400000,0x140000,offsetmask_flagsMTD_WRITEABLE,},{Flame’'jffs2(8M)”,SiZe‘0x800000,offset‘0x800000,)},inttnltmlt_s3e2410(void){prmtk(KERN_NOTICE”s3c2410flashdevice%xat%x\11“,WINDOⅦSIZE,WINDOW_ADDR);.76.基j。^RⅥ视频采集系统的设if与实现s3c2410_mapmap_pnv_l=(unmgnedIong)loremap(WINDOW—ADDR,WINDOW-sIZE),//prmtk(”吼n”),ff(Is3e2410_mapmap_prtv_1){prmtk(”Fadedtoloremap/n”),return—ElO,)mymtd=do_mapJrobe(’3edec_probe”,&s3c241O_map),ff(Imymtd)mymtd2do_map_probe(。’eft_probe”,&s3c2410_map),if(mymtdJ:mymtd一>module2THtS_MODULE,mymtd->eraseslze=Ox20000.//擦除的大d、E28F128J3A—l50是128kbreturnadd—mtd-partmons(mymtd,s3c2410_pa-htlons,slzeof(s3c241O_partlhons)/slzeof(structmtd_partalon)),}iounmap((votd8)s3c2410_mapmap-pnv_1),return—ENXl0,}statJcvo;d__exitcleanups3c2410(vmd){lf(mymtd){del_mtd-parhhons(mymtd);map_destroy(mymtd),}lf(s3e2410_mapmap_priv_1){lounmap((vold4)s3c2410_mapmap3)nv._1),s3c241O_mapmappnv_l=0,}}.77.附录Amaps文件module_m姗t_s3e2410),module_exlt(cleanup_s3c2410);.78.性J、R、1税频粟集系统的设iI与实现附录Bconfig.in文件if【”¥CoNFIG—ARM”2…Y’】,thendep_tnstate’CF!FlashdevicemappedonARMIntegrator'P720’f‘CONFIGMTD_ARM—INTEGRATOR¥∞NFIG-MTD_C‘Flevalua!ton¥CONFlG_ARCHJ卜FEGRATORdep_mstateOrrusCDB89712boardCONFIG—MTD—CDB80712¥CONFIGMD—CFI¥CONFIGdep_tr,state’fl:lCONFlGMTDSAll00Flashdevicemapped011m£PDngs。ARCH_("DB8971二SAIlx()‘St,ongARM¥CONFIGMTDCFI¥CONFlGARCHSAllOO¥CONFIGMTDPARTITIONSdep__tnstate’CI:IFlashdevicemappedonD(’21285Footbridge’CONFIG_MTD_DC2l285¥CONFIG—MqlD—CFI¥CONFlGAR(‘H’FOOTBRIDGE¥CONFIGMTDPART¨1IONSCFIdep_tnstateFlashdevicemappedO,1Lubbockboard’CONFIGMTDLUBBOCK¥CONFIG——ARCH——LL8BOCK¥CONFIG¥CONFIGMTD(’FlMTD_PARTITI()NSdep_tnstate’CFIFlashdevicemapped011theFortuNetboard。CONFIGMTDFOR’IUNET¥CONFIGMrrD(’卜l¥CONFIG_ARCH—FORTUNET¥CONFlG_MTD_PARTITIONSdep_tnstate’CFIFlashdevicemappedonEp.(alOdb‘CONFlGⅣrrDEPX,、IODB¥CONFIGM1D(下l¥CONFIGMrrDPARTIT!ONS¥CONFIGARCHCAMELOTdep_tnstate’CFIFLashdevicemappedCONFIGⅣrrDPXACERFonPXACerfBoard’¥CONFIGMTDCFl¥CONFIG_ARCH_PXA_CERF¥CONFIGMTD_PARTITIONS’dep_tnstateNV・RAMmappingAU’FCPUl2board‘CONFIGMTDAUT(’PUl2¥CONFIGARCHAUTCPUl:dep_trlstate‘CFIFlashdevicemappedon¥3C2410‘CONFIG—MTD—S.;C24lO¥CONFIG^/盯DCFl..79..附录c内核对支持JFFS2的配霞附录C内核对支持JFFS2的配置女}女嶙拌撑拌群拌撑牟牟#拌群牟群拌拌拌#群撑#撑群撑拌拌牟群撑撑#群牟拌拌撑群拌群群掣撑撑LmuxKernelv2418・-rmk7・-pxalConfiguration+MemoryTechnologyDevices(MTD)…一一~一一+submenus…>Arrowkeysnavigatethemenu<Enter>selectsHighlightedlettersarehotkeysPressing<Y>includes,<N>excludes,<M>modulanzesfeaturesPress<Esc><Esc>toexit.<9>forHelpLegend(+】built—in[】excludedn伊module<>modulecapablel+………………一……一…………一一-…一~…~…——……・—・+Il<+>MemoryTechnologyDevice(MTD)supportJ[+】DebuggingI(3)Debuggingverbosity(0=quiet,3=notsy)I<+>MTDI<+>MTDpartmonmgsupportconcatenatmgsupportpartmontableparsinglinepartitiontableparsing1lJJf<>RedBootJ<>CommandI<>ARM¨I|}lFirmwareSuitepartitionparsingI…UserModulesAndTranslationLayerschardeviceaccessI<+>DirecttoMTDdevicestoI<+>CachingblockdeviceaccessMTDdevices<>FTL(FlashTranslationLayer)support『<>NFTL(NANDlRAM/ROM/Flash|MappingFlashTranslationchlpdrivers~->Layer)supportIdriversforchipaccess…>drivers…>l『Self-containedMTD{NANDFlashDevicedeviceDrwers…>+一……~一一……~一…~一~…一……~………一++一…一v(十)……~…一……~……一………一…一一---+llLj^R、1税频采集系统的设tf与寅现I<Select><Exit><Help>#群#群###槲槲群#拌####q{###群群#槲##撑###槲槲#撑###桦LmuxKernelv24I8-rmk7・pxalConfigut'atlon+RAM/ROM/FlashchlpdriversArrowkeysnavigatethemenu<Enter>selectsHighhghtedlettersaresubmenus…>hotkeysPressing<Y>mcludes,<N>excludes,<】Ⅵ>modulanzesfeaturesPress<Esc><Ese>toexit.<9>forHelpLegend【+】budt—in【Jexcluded<M>module<>modulecapable+一……一一,…一…………一………一….….…………………+I<+>DetectflashchipsbyCommonFlashInterface(CFI)probel<+>DetectJEDECJESD21ccompatibleflashcMpsl[】Flashchlpdriveradvancedconfiguranonoptionsk4>SupportforIntel/Sharpflashchipsl<>SupportforAMDFujltsuflashchipsinI<>SupportforRAMchlpsk>SupportforROMchipsbusmappinginbusmappingbusmappingk>Supportforabsentchipsin|【]Older(theorencalbobsoletednow)drwersfornon—CFIchtps+一.…………一一…一……一一一……….……一…一…一…..一.一.一……一一++I<Select><Exit><Help>群女嶙##群####撑###撑###“{###撑撑##撑#群###群#群#撑斜拌#群≠培LmuxKernelv24I8-1‘mk7一pxalConfiguratton+…一…………一一MappingArrowdriversforchipaccess+keysnavigatethemenu<Enter>selectssubmenus….).81.附录C内核对支持JFFS2的配置HJghhghtedlettersarehotkeys.Pressmg<Y>includes,<N>excludes,exit,<?>forHelp.capable『<M>modularlzesfeatures.Press<Esc><Esc>to|Legend.【+】built—in【】excluded<M>module<>modulel+……………~………一……~一一……一……一………一…+Il<+>CFIFlashdevice1(800000)Physicali『(800000)PhyslcalinphysicalmemorymapstartaddressofflashmappingI|lengthofflashmappingl(2)Buswidthinoctets||<+>CFlFlash|Idevicemappedon¥3C2410||l+……….……一一一一一一~……….…一……一……一一一..++---一一---..一一一一..........一..一...….…....……......一....一一一...+l<Select><Exit><Help>群辫蜊#群槲群群#拌##撑撑桦牟辨胖辨拌桦撑#群#槲#槲撑桦撑拌槲LinuxKernelv24.18-rmk7一pxalConfiguration+。一………一……一’’’Filesystems。…。。…。。。~一……一一_。Arrowkeysnavigatethemenu<Enter>selectssubmenus…>.HighlightedlettersarehotkeysPressing<Y>mcludes,<N>excludes,I<M>modularlzesfeaturesPress<Ese><Esc>toexit,<7>forHelp.capableLegend【+】built-in[]excluded<M>module<>modulel+………………………~一一一一一…—-……——一——一—-一~——…+11【】Quotasupport|I<>KernelautomountersuppoflversionI<>Kernelautomounterl<>Relserfs||<>ADFS|I<>Amigasupport4suppog(alsosupportsv3)filesystemsupportFFSfilesystemsupport(EXPERIMENTAL)suppoa(EXPERIMENTAL)I<>BFSfilesystemsupport(EXPERIMENTAL)l<>AppleMacintoshfilesystem钵】^RⅥ视频采策系统的设训’j实I见I<+>Ext3journalhngfilesystemsupportfEXPERIMENTAL)I【】JBD(ext3)debuggmgsupportl<+>DOSFATfssupport<>MSDOS盎suppofl1<+>VF√~T(Wmdo、 ̄s-95lfssupportl<>EFSfilesystemsupport(readonly)(EXPERIMENTAL)l<>JournalhngFlashFileSystem(JFFS)supportl<+>JournalhngFlashFdeSystemv2(JFFS2)supportI(2)JFFS2debuggmgverbomty(0=quiet,2=noisy)l<+>CompressedROMfilesystemsupportl【4】Virtualmemoryfilesystemsupport(formershmfs)I<+>SimpleRAM—ba‘’edfilesystemsupportI<>ISO9660CDROMfilesystemsupport『<>Mmlxfssuppofl<>FreeVxFSfilesystemsupport(VERITASVxFS(TM)compatible)1<>NTTSfilesystemsuppofl(readonly){<>0S/2HPFSfilesystemsupport}【4】/procfilesystemsupportl[+】/devfilesystemsupport(EXPERIMENTAL)l【+】Automat)callymountatboot【】DebugdeV&1[+】/dev/ptsfilesystemforUmx98P下Ys『<>QNX4filesystemsupport(readonly)(EXPERIMENT、I。)l<>ROMfilesystemsupportl<+>Secondextendedfssupportl<>SystemV/Xemx/V7/Coherentfilesystemsupport『<>UDFfilesystemsupport(readonly)l<>UFSfilesystemsupport(readonly)NetworkFileSystems…>lPartmonTypes…>.83.附录C内核对支持JFFS2的配置IINativeLanguageSupport一》I+~“+)…一……~一一…~…………一一~一~一…~一++~…………………一……~…………一…~…一……一…..-+I<Select><Exit><Help>—I—...一.一..一…一。……...……..…一一.....…..…,….~~......….~....+.84.驻-t一、聃观频采集系统的设计与实现攻读学位期间公开发表的论文【l】基一1‘PIC小JI.机改iI温度讲的液晶湿示,周广浆、刘f{,教育科拽发胜11・心,200509[2】基十DSPC54xfl:l披‘,滤波器设计,周广荣、刘什、卫,占忠,电f广,}nIf外(中国科技信息研究所(ISTIC)与美国国际数据集团(IDG)合办),2005筑23明,95~96贝12,【3】基于MSP430F133{=,liRFW模块的婶距离无线数抓通亿,刘佳、剧J'荣、丛忠忠,工业控制tI算机(FfIIq计算机协会工业控制计算机oIP蚕员会,j1另、省【f玎技术研究所有限责仃公叫合办),200605,第五期,48、49Ⅱ【4】基-1。MSP430译”讥和nRF905的无线通信系统,岗J。米、夏志忠,电J,广-‘^世界(中同科技纯息研究所(ISTlC)与美国国际数掘粜Ⅲ(1DG)合办),200681一一83页12,【5】DesignI;erthinCarofaWwelessSensorNetworkforDetectingOccupancyofVehJclePark,WangymZhouGuangrong,ParallelandDlstrnbutedComputing.IEEEComputerSooety.2006,kpphcahonsandTechnologies(PDCAT),Pubhshedby12,Page115~116致谢致至此,我的研究生生活即将结束。谢感谢我的导师夏志忠教授,感谢夏老师从我本科毕业设计到现在这三年多的时间里对我的培养。夏老师渊博的知识对我专业方面的培养起了非常重要的作用,在生活上,夏老师更像是一位父亲对我们的生活关怀备至。这些对我以后从事工作和生活郜是莫大帮助。在这里特向夏老师表示感谢。感谢我的师兄、师姐、我这一届的同学和我的师弟师妹们。在这不到三年的研究生生活里,我们结下了深厚的友情。希望各位师兄师姐在人生道路上越走越好,同时希望各位师弟师妹们以后有更好的发展。研究生履历研究生履历姓名性别出生习期获学士学位专业及门类获学士学位单位获硕士学位专业及门类获硕士学位单位通信地址邮政编码电子邮箱周广荣男19820420电子信息工程大连海事大学通信与信息系统大连海事大学大连海事大学电航楼424房间116026zealzgr@hotmailcom