嵌入式Linux开源软件移植与应用课件

上传人:桔**** 文档编号:569821289 上传时间:2024-07-31 格式:PPT 页数:62 大小:445KB
返回 下载 相关 举报
嵌入式Linux开源软件移植与应用课件_第1页
第1页 / 共62页
嵌入式Linux开源软件移植与应用课件_第2页
第2页 / 共62页
嵌入式Linux开源软件移植与应用课件_第3页
第3页 / 共62页
嵌入式Linux开源软件移植与应用课件_第4页
第4页 / 共62页
嵌入式Linux开源软件移植与应用课件_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《嵌入式Linux开源软件移植与应用课件》由会员分享,可在线阅读,更多相关《嵌入式Linux开源软件移植与应用课件(62页珍藏版)》请在金锄头文库上搜索。

1、第第5章章 嵌入式嵌入式Linux开源软件移植与开源软件移植与应用应用嵌入式Linux开源软件移植与应用第五章第五章 嵌入式嵌入式LinuxLinux接口设计与接口设计与驱动程序驱动程序主要内容主要内容 第一节嵌入式WebServerGoAhead的移植与应用第二节嵌入式WebServicegSOAP的移植与应用第三节嵌入式数据库SQLite的移植与使用第四节播放器Mplayer的移植第五节ffmpeg应用第六节开源软件移植的一般过程第七节J2ME-phoneME移植第八节嵌入式浏览器konqueror移植嵌入式Linux开源软件移植与应用第五章第五章 嵌入式嵌入式LinuxLinux接口设计

2、与接口设计与驱动程序驱动程序主要内容主要内容高端嵌入式系统往往基于一个功能强大的操作系统,而使用Linux进行架构的好处之一就是可以从X86机上移植大量软件做嵌入式开发。本章介绍了多个软件的移植以及应用,包括嵌入式Web服务GoAhead、嵌入式数据库SQLite、嵌入式媒体播放器Mplayer、JVMphoneMe、Web服务gSOAP、Web浏览器Konqueror。由于Linux软件的开源特点以及交叉编译工具的使用,向嵌入式平台上移植丰富的软件成为一件非常轻松的事情。需要特别注意的是相关软件的版本与依赖关系,包括交叉编译器。嵌入式Linux开源软件移植与应用 内容:内容:一、嵌入式一、嵌

3、入式Web服务器服务器二、二、GoAhead介绍介绍三、三、GoAhead在在ARM平台上的移植平台上的移植四、页面操作四、页面操作第一节第一节 嵌入式嵌入式WebServer GoAhead的移植与应用的移植与应用嵌入式Linux开源软件移植与应用随着后PC机时代的到临,计算机的发展已经从以PC机为中心转向了以嵌入式系统为中心的方向:嵌入式系统的迅猛发展和IA(信息电器)的不断成熟使得其应用越来越广泛。其中,嵌入式系统与网络的结合也是当今发展的一大趋势,而嵌入式网络技术的产生正好迎合了这个趋势。由于嵌入式系统的专用性强、体积小且价格低廉,使得嵌入式设备已经开始应用于智能家居系统、工业智能化从

4、站系统、LED网络控制显示屏系统、网络安全加密系统等各个网络相关领域。在嵌入式设备中,所谓的瘦Web服务器,即功能不会很全面的Web服务器,往往拥有有限的资源。因此实现嵌入式WebServer方案的主要技术难点是:在不影响其整体性能的前提下,如何利用它自身有限的资源,同时又必须满足Web应用服务器的特征。第一节第一节 嵌入式嵌入式WebServer GoAhead的移植与应用的移植与应用 一、嵌入式一、嵌入式Web服务器服务器嵌入式Linux开源软件移植与应用由下图可以看出:由于HTML语言的标准统一性,只要在嵌入式设备中存在一个微型服务器,就可以使用任意一种Web浏览器接收和发送信息。所以如

5、何在嵌入式设备中设计和安装Web服务器,就成了嵌入式Web服务器的发展和研究方向。第一节第一节 嵌入式嵌入式WebServer GoAhead的移植与应用的移植与应用 一、嵌入式一、嵌入式Web服务器服务器嵌入式Linux开源软件移植与应用GoAheadWebserver是为嵌入式设备的需要而设计的。该Webserver软件不仅开源,而且具有各种各样的特性,包括支持活动服务页、嵌入Java描述语言、in-processCGI形式、SSL、文摘访问认证、用户管理和标准CGI等,脚本大小仅为60K。这对于那些需要在基于浏览管理模式的设备上传递动态信息的系统管理开发人员来说,这点非常重要。GoAhe

6、adWebserver支持多种操作系统和开发平台,包括WindowsNT/98/95、WindowsCE、EmbeddedLinux、Linux、VxWorks、QNX和Lynx等,它也有其它操作系统的定制产品,因此具有很强大的可移植性。GoAhead网络服务器的发展同时也促进了嵌入式网络服务器的源代码的进化。由于其开源,世界各地的厂商和爱好者都纷纷下载并优化GoAhead的源代码,这也使得GoAheadWebServer成为市场上最优秀的嵌入式网络服务器之一。作为一款嵌入式Web服务器,GoAhead具有如下特点:优点:免费,体积小巧,支持多平台,完全针对嵌入式系统设计,支持嵌入的JavaS

7、cript与动态数据页。缺点:其对ASP的支持意味着要依靠微软的平台,安全方面的考虑很少。第一节第一节 嵌入式嵌入式WebServer GoAhead的移植与应用的移植与应用 二、二、GoAhead介绍介绍嵌入式Linux开源软件移植与应用完成GoAhead移植后,需要在此基础上完成系统运行所需要的页面文件,透过页面文件来实现Web对终端的管理。页面操作方式有三种,如下介绍所示:1,静态页面,静态页面静态页面可在http编辑工具中完成,完成直接下载至相应的Web存放目录即可,此种方式可完成诸如说明文档、终端信息等固定内容,但无法和用户进行交互操作。2,cgi页面页面cgi页面,即可用C语言编辑

8、的页面,其操作方式可参考cgitest.c文件(该文件存放在GoAhead2.18webcgi-bin目录下),使用时需要将此文件加入项目中一起编辑。GoAheadWebServer任务启动后,在地址栏中直接输入192.168.0.121cgi-bincgitest(其中192.168.0.121为Web服务器的IP地址)就可以观察到相应结果。GoAhead的cgi入口处理中,在地址栏内如果带有cgientry=name的字样时,则处理器会寻找name函数来处理该请求,相反,如果没有此请求字样时,GoAhead搜索名称为name_cgientry的函数,即请求的名称增加后缀_cgientry;

9、另外需要注意的是cgi任务的退出要使用return,而不是使用任务删除,return退出后,系统会重新定位stdin、stdout等,否则由cgi重定位的输入输出会保持,会影响后续的其他类型的Web请求。第一节第一节 嵌入式嵌入式WebServer GoAhead的移植与应用的移植与应用 四、页面操作四、页面操作嵌入式Linux开源软件移植与应用3,嵌入式,嵌入式Javascript嵌入式Javascript是GoAheadWebServer提供的一种方式,其采用表单提交的方式,提供了完善的输入输出流程控制,同样可采用C语言进行设计,可很好的与系统其它部分实现代码共享。如Todayis,此句代

10、码即可在网页上输出“HelloWorld”字样。由于采用表单提交的方式,通过特殊的标记印记,嵌入已经实现的C函数至页面文件中,在提交时,由已经在系统定义并注册的函数来接收处理,通过代码写Web页面来实现输出。其设计过程主要涉及以下几个方面:1)页面设计)页面设计。嵌入式Javascript文件为asp文件,其内容可按照标准的javascript来设计,在创建页面过程中,如果需要从原系统中动态生成页面,如当前终端的参数配置,此时需要使用嵌入式Javascript的独立定义,在需要嵌入创建函数的地方用如下格式加入:,此函数需要事先定义好并在系统启动向WebServer注册完成。第一节第一节 嵌入式

11、嵌入式WebServer GoAhead的移植与应用的移植与应用 四、页面操作四、页面操作嵌入式Linux开源软件移植与应用2)创建函数定义)创建函数定义:一个标准的创建函数intaspCreateHomeAsp(inteid,webs_twp,intargc,char_t*argv),前面两个参数为页面参数,不能改动。3)注册创建函数:)注册创建函数:websAspDefine(T(CreateCurrentUser),aspCreateHomeAsp)使用此函数注册后,如果asp页面中出现,则WebServer会调用aspCreateHomeAsp()来输出页面。4)Form提交函数:提交

12、函数:要达到交互使用,则必须响应用户提交,要做到这一点,很简单,在页面中加入,其中AddGroup即为响应时系统调用的注册后的函数。当然,需要提交的按钮项需在此form体内完成。其函数格式为:staticvoidformAddGroup(webs_twp,char_t*path,char_t*query)。5)注册)注册Form提交函数:提交函数:websFormDefine(T(AddGroup),formAddGroup),webServer运行此函数后,当页面用提交时则调用formAddGroup()函数来处理。第一节第一节 嵌入式嵌入式WebServer GoAhead的移植与应用的移

13、植与应用 四、页面操作四、页面操作嵌入式Linux开源软件移植与应用 内容:内容:一、一、gSOAP介绍介绍二、二、gSOAP裁减裁减三、三、gSOAP应用应用第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用嵌入式Linux开源软件移植与应用WebService是近几年较为流行的Web应用开发技术。它改变了传统的B/S或C/S软件开发模式,为软件实体之间共同协作提供了公共平台。而这里我们所使用的gSOAP则是其中非常方便使用在嵌入式系统上的编译工具。gSOAP编译工具提供了一个SOAP/XML关于C/C+语言的实现,它利用编译器提供了一组透明化的SOAPAPI

14、,这就将与开发无关的SOAP实现细节对用户隐藏起来。因此,使用gSOAP工具生成程序非常方便。gSOAP的使用范围也非常广泛,能够集成C/C+代码、Fortran代码、其他SOAP程序提供的实时软件的资源和信息;可以跨越多个操作系统,语言环境等等。gSOAP包含一个WSDL生成器,可以生成Web服务的解释。通过gSOAP的解释器以及导入器,用户可以不需要分析Web服务的细节就能够实现一个客户端或者服务端程序。gSOAP可以理解为一个C/C+的Web服务协议栈,该协议栈主要包括五部分:网络传输,Web服务调用(消息传输),Web服务描述与注册(接口描述、发布与发现),Web服务质量(安全性,可靠

15、性,事务控制),Web服务工作流(商业流程、事务等)第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 一、一、gSOAP介绍介绍嵌入式Linux开源软件移植与应用第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 一、一、gSOAP介绍介绍嵌入式Linux开源软件移植与应用虽然gSOAP实现Web服务协议栈比较复杂,但是用gSOAP开发WebService是非常方便的。gSOAP工具包中提供了两个可执行文件,wsdl2h和soapcpp2。wsdl2h用来解析wsdl文档生成描述服务的C/C+头文件,例如你可以用如下的命令将一个

16、wsdl文档转换为一头文件:$ ./wsdl2h o outputfile.h input上面的命令根据制定URL提供的WSDL文档生成一个C+语法结构的头文件。假如需要生成一个纯C的头文件,需要用如下命令:$ ./wsdl2h c o outputfile.h input其中input可以是本地文件系统上的文件,也可以存在于Web页上,例如:$ ./wsdl2h -c -o outputfile.h inputsoapcpp2用来解析上面生成的头文件并生成框架代码,这些框架代码是:soapStub.h从输入头文件生成的经过修改且带名称空间前缀的头文件,soapH.h主头文件,所有客户机和服务

17、源代码都要将其包括在内,soapC.c指定数据结构的序列化器和反序列化器,soapClient.c客户机存根例程,soapServer.c服务器端存根例程第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 一、一、gSOAP介绍介绍嵌入式Linux开源软件移植与应用另外,在gSOAP工具包中还包含两个重要的文件:stdsoap2.h和stdsoap2.c/cpp。其中stdsoap2.h是stdsoap2.c/cpp运行时所需库的头文件,stdsoap2.c/cpp是运行时C/C+库,带HTTP/SOAP解析器和运行时支持例程。用户可以用这两个文件和上述的框架代

18、码方便的进行客户端/服务器端开发。第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 一、一、gSOAP介绍介绍嵌入式Linux开源软件移植与应用用gSOAP开发的WebService服务器端和客户端的交互模型,如图所示。从图中可以看出:soapC.c和stdsoap2.c是构成客户机与服务端的重要的源文件,其中soapC.c是上面提到的序列化器和反序列化器,当建立请求或响应时需要用到它的序列化功能,而解析请求或响应时需要用到它的反序列化功能。stdsoap2.c是gSOAP工具包提供的HTTP/SOAP解析器第二节第二节 嵌入式嵌入式WebService gS

19、OAP的移植与应用的移植与应用 一、一、gSOAP介绍介绍嵌入式Linux开源软件移植与应用裁减gSOAP是为了将Web服务协议栈移植到嵌入式系统中,这类似于向嵌入式系统中移植TCP/IP协议栈。裁减的目的并不是得到一个比较通用的精简Web服务协议栈,而是从某个应用角度出发来对gSOAP进行裁减。1超文本传输协议超文本传输协议HTTP协议协议超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议。它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途外,还可以通过扩展它的请求方式,错误代码和报头来完成许多任务。由

20、于HTTP的使用极为广泛,使得SOAP常常采用HTTP作为底层通讯协议。1) HTTP CookieHTTPCookie是在HTTP连接期间浏览器与CGI程序之间传递的信息。在没有涉及到浏览器与CGI程序之间通信的程序中,该功能可以被裁减。第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 二、二、gSOAP裁减裁减嵌入式Linux开源软件移植与应用2) HTTP Chunked编码编码有时服务器生成HTTP回应是无法确定消息大小的,这时用Content-Length就无法事先写入长度,而需要实时生成消息长度,这时服务器一般采用Chunked编码。如果HTTP回

21、应的消息长度是可以确定的而且比较小,则可以不支持HTTP的Chunked编码方式。3) HTTP Proxy它的主要功能就是通过网上的代理服务器代理用户去取得网络信息。如果在客户与服务器之间没有设置代理服务器,则HTTPProxy的功能不必在系统中实现。4) HTTP Keep-AliveKeep-Alive功能使客户端到服务器端的连接持续有效,客户端为每个待请求的对象建立并维护一个新的连接。对于每个这样的连接,TCP要在客户端和服务器端分配TCP缓冲区,并维持TCP变量。当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。对于嵌入式设备来说,系统资源非常有限,因此

22、每次通信完成后应立即释放连接,尽量避免长期占用系统资源而不释放。第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 二、二、gSOAP裁减裁减嵌入式Linux开源软件移植与应用2可扩展标识语言协议可扩展标识语言协议XML协议协议XML(eXtensibleMarkupLanguage,可扩展标记语言)是Internet上数据表示和数据交换的新标准。它是ISO(InternationalOrganizationforStandardization,国际标准化组织)的SGML(StandardforGeneralMarkupLanguage,通用标记语言标准)的一个

23、简化子集。XML关注信息本身,是Web上表示结构化信息的一种标准文本格式。与传统的注重页面信息显示的HTML(HyperTextMarkupLanguage,超文本链接标示语言)相比,关注于内容的XML具有以下诸多优点:良好的可扩展性,语言简单有效,可自行定义标记;内容与形式的分离,主要刻画数据内容,不考虑显示效果;有严格的语法要求,便于分析统一和与数据库信息转换;便于传输,为纯文本形式,可通过HTTP协议直接传输,可跨越防火墙等等。gSOAP工具包中提供了XML解析器,但是对于具体的应用而言,不必对XML协议完全解析,经过分析gSOAP源代码,可以对XML协议作如下的精简:第二节第二节 嵌入

24、式嵌入式WebService gSOAP的移植与应用的移植与应用 二、二、gSOAP裁减裁减嵌入式Linux开源软件移植与应用1) 精简编码方式精简编码方式XML文档一般采用UTF-8编码方式,UTF-8可以处理目前世界上使用的每一种文字。虽然还有少数空白,但是越来越不明显,被逐渐填平了。没有纳入的文字通常也没有其他任何字符集实现过,即使有也不能在XML中使用。如果对于某个嵌入式系统而言采用UTF-8编码方式已经足够了。那么对于其他的编码方式,解析器可以不支持。2) CDATA部件部件如果一个XML元素的文本中包含了大量非法的xml字符如“”和“&”字符,就像编程代码中经常出现的情况一样,那么

25、这个XML元素就可以被定义为一个CDATA部件。在CDATA部件之内的文本会被解析器忽略,从而避免了大量的实体引用。如果对某个嵌入式系统而言,SOAP消息中的XML文档是由gSOAP生成的,通过分析soapcpp2.exe生成的*.req.xml和*.res.xml可以看出该文档中并没有包括CDATA部件,则针对该文档,XML解析器不必解析CDATA部件。第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 二、二、gSOAP裁减裁减嵌入式Linux开源软件移植与应用3. 简单对象访问协议简单对象访问协议SOAP协议协议SOAP(SimpleObjectAcces

26、sProtocol)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议。SOAP协议定义了用于在系统之间进行通讯的标准XML消息的格式。由于该消息格式已标准化并基于XML标准,因此可使用SOAP在多种计算机体系结构、语言和操作系统之间进行通讯。SOAP协议包括四个部分:SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encodingrules),用于表示应用程序需要使用的数据类型的实例;SOAPRPC表示(RPCrepresentation),表示远程过程调用和应答的协定;SOAP绑定(bi

27、nding),使用底层协议交换信息。虽然这四个部分都作为SOAP的一部分,作为一个整体定义的,但他们在功能上是相交的、彼此独立的。特别的,信封和编码规则是被定义在不同的XML命名空间(namespace)中,这样使得定义更加简单。SOAP的一个主要优点就在于它的简单性,但是对于具体的应用来说,不可能运用了SOAP的所有特性。特别是在嵌入式设备上,系统的应用有限,此时有必要屏蔽掉多余的特性,第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 二、二、gSOAP裁减裁减嵌入式Linux开源软件移植与应用1) 可选的可选的SOAP头头SOAP协议规范说明SOAP消息包

28、括三部分:一个必须的根元素,一个可选的SOAP头和一个必须的SOAP体。其中SOAP头的作用就是提供了一个可伸缩的机制用于在分散的模块化的环境下扩展SOAP消息,而通讯双方并不需要有预先的约定。可以通过它传递一些辅助性的附加消息,比如身份验证,会话等。如果SOAP头是可选的且不被使用,那么可以将SOAP头裁减掉。2) 数据编码规则数据编码规则SOAP编码可以简短地描述成简单值和复合值的集合。简单值可以是简单类型,如整型、浮点型和字符型,或者是内置类型,包括各种数据类型,如字节型数组和枚举。复合值包括结构、数组和XML架构制定组定义的复杂类型。gSOAP提供了对上述数据类型的序列化和反序列化规则

29、。在本系统中使用到的数据类型包括整型、枚举和结构。因此在gSOAP中保留以上类型的序列化和反序列化规则,而对于其他的数据类型诸如浮点型、数组等不支持其序列化和反序列化。第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 二、二、gSOAP裁减裁减嵌入式Linux开源软件移植与应用3) 附件机制附件机制当我们想利用SOAP消息传输图像等二进制数据时,一种最简单的方法是使用类似Base64的方式对其进行编码,把它转变成对XML安全的一串字符然后放入一条基于XML的消息中传送。但是这并不是一个有效的方法,因为对二进制数据进行编码和解码会造成相当大的处理开销,从而影响了

30、应用程序的性能。这些问题促成了带附件的SOAP消息(SOAPMessageswithAttachments(SwA))的开发。带附件的SOAP消息是一种特定于WebServices的技术,它使用MIMEMultipart/Related数据包来随XML消息发送二进制数据和其它附件,从而避免了编码的开销。目前受到业界广泛支持的是MTOM(MessageTransmissionOptimizationMechanism,消息传输优化机制)和XOP(XML-BinaryOptimizedPackaging,XML二进制优化封装)。gSOAP支持MIME/DIME/MTOM附件传输机制,在本系统中涉及

31、到了二进制图像数据的传输,起初尝试用MTOM和XOP进行附件传输,但后来发现基于SOAP消息的附件传输始终不如用socket传输的速度快。对于一个要求获取实时视频数据的系统而言,采用基于SOAP消息的附件传输并不是一个好的选择。因此裁减了gSOAP中对SOAP附件机制的实现。第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 二、二、gSOAP裁减裁减嵌入式Linux开源软件移植与应用4.小结小结以上三部分是对Web服务协议栈底层的三个重要协议进行分析并裁减了部分无关性质。但是对于整个Web服务协议栈来说,这仅仅精简了网络传输层和Web服务调用层。在它们之上还有

32、Web服务描述与注册层、Web服务质量层和Web服务工作流层,也可以对它们进行裁剪。如果对于服务的注册与发现没有将Web服务发布到UDDI注册中心,而是采用简单的分布式发现方式(WS-Inspection),由客户端直接向服务提供者请求一个服务描述的副本,根据此副本进行WebService客户端开发,可以不需要UDDI。在移植gSOAP时,实际上是将该精简后的Web服务协议栈移植到嵌入式系统中。另外,gSOAP还提供了一些额外的功能如支持多种系统平台、DOM解析库、利用zlib库压缩数据功能、Plug-in扩展功能、FastCGI以及支持SSL(安全套接层协议)等。这些功能都可以通过条件编译有

33、选择的实现,在移植的过程中可以将它们减掉第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 二、二、gSOAP裁减裁减嵌入式Linux开源软件移植与应用gSOAP应用应用一般开发一个gSOAP应用的过程是:写一个函数声明文件,来定义所有要实现的接口函数,该文件应该还含有命名空间的相关信息。创建Makefile文件,来利用gsoapcpp2工具生成框架代码。写一个服务端的程序,里面应该实现第一步中声明文件里的接口函数。写一个客户端的程序,接收输入的各参数,链接服务端。第二节第二节 嵌入式嵌入式WebService gSOAP的移植与应用的移植与应用 三、三、gSO

34、AP应用应用嵌入式Linux开源软件移植与应用 内容:内容:一、嵌入式数据库一、嵌入式数据库二、二、SQLite介绍介绍三、三、SQLite在在ARM平台上的移植平台上的移植四、SQLite的使用的使用第二节第二节 嵌入式数据库嵌入式数据库SQLite的移植与使用的移植与使用嵌入式Linux开源软件移植与应用随着计算机技术与其它学科间的不断交融渗透,数据库应用的范围更加深入和具体。那些仅适用于PC机、体积庞大、延时较长的数据库技术已不能满足嵌入式系统开发的需求。数据库的目标是实现对数据的存储、检索和增删等功能。传统的数据库产品除提供基本的查询、添加、删除等功能外,也提供了很多高级特性,如触发器

35、、存储过程、数据备份恢复等。然而,在嵌入式系统中,由于软硬件资源有限,不可能安装庞大的数据库服务器,因此一个简单的基于磁盘文件的数据库系统就可能实现相应的用户需求,而这仅仅是利用了数据库的基本特性。因此在这种特殊的应用场合下,传统的数据库就显得过于臃肿了。嵌入式数据库与传统数据库的区别是:嵌入式数据库采用程序方式直接驱动,而传统数据库则采用引擎响应方式驱动;嵌入式数据库的体积通常都比较小,而且具备功能齐全、可移植性强、健壮性等特点,因此嵌入式数据库常常应用在移动便携设备上。另外由于其性能卓越的特点,也应用于高性能数据处理场景。第二节第二节 嵌入式数据库嵌入式数据库SQLite的移植与使用的移植

36、与使用一、嵌入式数据库一、嵌入式数据库嵌入式Linux开源软件移植与应用SQLite是一款轻型数据库,设计目标主要针对嵌入式系统。其占用资源少,在嵌入式设备中,可能只需要几百K内存就足够了。它能够支持Windows、Linux、Unix等等主流的操作系统,并且能够跟很多程序语言相结合,比如Tcl、PHP、Java以及ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来说,它的处理速度更快。SQLite虽然很小巧,但是支持的SQL语句不会逊色于其它开源数据库。在的网站上介绍SQLite的特点如下:ACID事务零配置不需要安装和管理配置储存在单一磁盘文件中的一

37、个完整的数据库数据库文件可以在不同字节顺序的机器之间自由共享支持数据库大小至2TB足够小,250K速度比大部分的普通数据库操作都要快第二节第二节 嵌入式数据库嵌入式数据库SQLite的移植与使用的移植与使用 二、二、SQLite介绍介绍简单且易学包含TCL绑定,通过Wrapper支持其他语言的绑定良好注释的源代码,并且有90%以上的测试覆盖率独立:没有额外依赖开源支持多种开发语言嵌入式Linux开源软件移植与应用SQLite发展到现在已经有了很多的版本,直到发展到现在已经有了很多的版本,直到08年年9月月22日已经推出了日已经推出了3.6.3的最新版本。的最新版本。SQLite在ARM平台上的

38、移植一般要经历以下几个步骤:1)下载源码包,解压。安装配置交叉编译器。2)在文件sqliteInt.h里面指定SQLITE_PTR_SZ的值为4,使btree(B树)有正确的变量大小,否则在ARM开发板上执行时,会出现如下问题:在文件btree.c中抛出断言,assert(sizeof(ptr)=sizeof(char*);3)修改configure文件,使其不去检查交叉编译环境。之后执行configure命令,生产Makefile文件。4)修改Makefile文件,将BCC变量里的编译器修改为X86的编译器,因为其编译生成的可执行文件要在宿主机上运行。同时,由于编译生成的可执行文件sqlit

39、e要在ARM开发版上执行,为了方便,我们将后面指定生成的库libsqlite.la改为libsqlite.a,即编译成静态链接的形式。5)去掉可执行文件sqlite中的调试信息,这样可执行文件也将变得很小。第二节第二节 嵌入式数据库嵌入式数据库SQLite的移植与使用的移植与使用 三、三、SQLite在在ARM平台上的移植平台上的移植嵌入式Linux开源软件移植与应用完成SQLite的移植之后,我们可以利用它创建一个数据库,实现基本的SQL语句功能,包括建表、插入、查询、删除等基本操作,如下所示:#sqliteschoolsqlitecreatetablestd(snochar(8),snam

40、evarchar(10),sagesmallint);sqliteinsertintostdvalues(08000001,LiLei,17);sqliteinsertintostdvalues(08000002,Jim,18);sqliteselect*fromstd;08000001|LiLei|1708000002|Jim|18在上面的例子中,我们创建名为school的数据库,并给这个数据库创建了表std,在表std中插入了两组数据,最后查询该表,显示表中的数据。第二节第二节 嵌入式数据库嵌入式数据库SQLite的移植与使用的移植与使用 四、SQLite的使用的使用嵌入式Linux开源软

41、件移植与应用我们可以采用C语言编程,调用SQLite数据库,实现类似上面的操作。在使用SQLite数据库进行编程时,我们要加上头文件sqlite.h,它是SQLite的API头文件。SQLite数据库中提供的接口主要有:sqlite_open ( string , int mode , string &errmsg )该函数打开一个SQLite数据库。如果数据库不存在,将会创建它。如果成功打开,则返回数据库的句柄,否则返回FALSE。其中参数是数据库的名字,sqlite访问数据库文件可以使用相对或绝对路径;参数mode是打开数据库的访问权限,默认是0666;参数errmsg是返回的错误信息。s

42、qlite_close(sqlite* db)该函数关闭SQLite数据库。参数db是前面调用sqlite_open()函数返回的数据库句柄。无返回值。第二节第二节 嵌入式数据库嵌入式数据库SQLite的移植与使用的移植与使用 四、SQLite的使用的使用嵌入式Linux开源软件移植与应用sqlite_exec(sqlite* db,char* sql,int* callback,void* parg,string &errmsg)该函数主要是执行某个SQL命令。参数db是调用sqlite_open函数获得的数据库句柄;参数sql容纳了一个或更多SQL语句的字符串;参数callback是指向回

43、调函数的指针,查询结果的每一条记录都会调用该函数;参数parg成为回调函数的第一个参数;参数errmsg指向错误信息的指针。其中回调函数的结构如下:my_callback(void * parg, int argc, char * value, char *name)第一个参数是主调函数传递过来的指针;第二个参数为变量的个数;第三个为变量的值;第四个为变量的名称。第二节第二节 嵌入式数据库嵌入式数据库SQLite的移植与使用的移植与使用 四、SQLite的使用的使用嵌入式Linux开源软件移植与应用 内容:内容:一、一、Mplayer介绍介绍二、二、Mplayer在在ARM平台上的移植平台上的

44、移植1,安装并配置好交叉编译器,安装并配置好交叉编译器2,执行,执行configure命令命令3,执行,执行make命令命令4,修改驱动源代码,修改驱动源代码第四节第四节 播放器播放器Mplayer的移植的移植嵌入式Linux开源软件移植与应用Mplayer播放器是Linux下最优秀的多媒体播放器之一。它的播放速度最快,资源占用率低,支持的文件格式也最多。Mplayer能使用众多本地的Xanim,RealPlayer和Win32DLL编解码器,播放大多数MPEG、VOB、AVI、OGG、VIVO、ASF/WMV、QT/MOV、FLI、RM、NuppelVideo、yuv4mpeg、FILM、R

45、oQ文件,并且能够观看VideoCD、SVCD、DVD、3ivx、RealMedia和DivX格式的电影;MPlayer的另一大特色是支持广泛的输出设备:它可以在X11、Xv、DGA、OpenGL、SVGAlib、fbdev、Aalib、DirectFB下工作,而且你也能使用GGI、SDL(由此使用它们支持的各种驱动模式)和一些低级的硬件相关的驱动模式。Mplayer的功能还不止于此,它还能稳定地播放被破坏的MPEG文件、AVI文件,甚至播放没有索引部分的AVI文件,而这其中有些功能MediaPlayer是做不到的。由于多媒体技术和计算机技术的不断发展和相互渗透,在嵌入式系统或者移动设备上听音

46、乐看视频已经成为了一件很常见的事情。而Mplayer作为一款相当优秀的播放器,将其移植到嵌入式系统中将是很有意义的。第四节第四节 播放器播放器Mplayer的移植的移植 一、一、Mplayer介绍介绍嵌入式Linux开源软件移植与应用Mplayer在ARM平台上的移植基本遵循X86平台上的安装步骤。即进入源码目录通过执行configure命令生成一个Makefile文件,再继续执行make和makeinstall命令,最终就能够生成可执行程序mplayer。只不过ARM平台的体系结构和X86机不一样,因此在移植方面需要注意区别。另外由于其资源有限,也必须将某些功能进行裁剪。其移植具体步骤和过程

47、如下:1,安装并配置好交叉编译器,安装并配置好交叉编译器这里使用的交叉编译器arm-linux-gcc版本为3.3.2。注意编译Mplayer的交叉编译器是有要求的:如果使用2.95版本的armv4l-unknown-linux-gcc,会提示huffyuv.o文件找不到,即该版本无法成功编译Mplayer;如果使用高版本的交叉编译器,例如3.4.1版本也是不可以的,在编译到libavcodec/snow.c文件时会出问题。第四节第四节 播放器播放器Mplayer的移植的移植 二、二、Mplayer在在ARM平台上的移植平台上的移植嵌入式Linux开源软件移植与应用2,执行,执行configu

48、re命令命令将下载的压缩包解压。进入解压后的目录,执行configure命令,并附加一些选项进行相关配置3,执行,执行make命令命令这一步主要是编译生成可执行程序mplayer。4,修改驱动源代码,修改驱动源代码该嵌入式ARM开发板的音频芯片使用的是菲利普uda1341,该芯片所使用的驱动是MIZI公司拥有版权的Linuxuda1341音频驱动,这个驱动基本上符合了OSS的规范。不过当使用到多段DMA音频数据传输时,因为DMA缓冲的建立发生在第一次调用write()函数将音频数据传送到设备描述符的时候,此时缓冲尚未建立;然而OSS驱动的调用者通常要在打开音频设备描述时候,就期望获取DMA缓冲

49、的信息,因而容易返回缓冲长度为0的结果,导致之后除零异常发生。此时需要修改源代码,使程序能够正常运行。如果不更改声卡驱动程序,生成的mplayer程序仍旧可以执行,但是需要加上-nosound选项。之后播放的影片除了没有声音之外,运行会非常流畅。但是如果去除nosound参数就会报错signal8。修改完驱动后,必须重新编译内核,然后烧写内核到开发板运行。第四节第四节 播放器播放器Mplayer的移植的移植 二、二、Mplayer在在ARM平台上的移植平台上的移植嵌入式Linux开源软件移植与应用 内容:内容:一、一、ffmpeg简介简介二、二、ffmpeg在在ARM上的移植上的移植三、三、f

50、fmpeg命令应用实例命令应用实例四、ffmpeg中几个重要的数据结构中几个重要的数据结构五、ffmpeg应用开发应用开发第五节第五节 ffmpeg应用应用嵌入式Linux开源软件移植与应用ffmpeg是一个开源、功能强大的多媒体处理软件,可以实现对音频流、视频流的录制和转换。如可以转换视频文件的格式,可以截取视频流中的某一画面等。它支持MPEG、DivX、MPEG4、AC3、DV等40多种编码和AVI、MPEG、OGG、Matroska、ASF等90多种解码。很多的开源播放器,如TCPMP、VLC、Mplayer等都用到了ffmpeg。尽管ffmpeg是在Linux环境下开发的,但是它不局限

51、于Linux操作系统,能够运行于很多平台,包括Windows系统。ffmpeg主目录下主要有libavcodec、libavformat和libavutil等子目录。其中libavcodec是一个包含了所有ffmpeg音视频编解码器的库,libavformat是一个包含了所有的普通音视频格式的解析器和产生器的库,libavutil用于存放内存操作等辅助性模块。ffmpeg编译完成后会在主目录下产生三个可执行文件:ffmpeg、ffserver和ffplay。其中,ffmpeg是视频文件转换命令行工具;ffserver是基于HTTP用于实时广播的多媒体服务器;ffplay是用SDL和ffmpeg

52、库开发的一个简单的媒体播放器。第五节第五节 ffmpeg应用应用一、一、ffmpeg简介简介嵌入式Linux开源软件移植与应用到下载ffmpeg源码包,我们选择0.4.9的版本ffmpeg-0.4.9-p20060530.tar.bz2。解压该源码包,进入源码主目录,可以看到其包含的内容ffmpeg在ARM平台上的移植遵循GNU的AUTOCONF和AUTOMAKE产生程序的安装步骤:安装并配置好交叉编译器及其环境,进入源码目录,执行./configure命令,检查系统的配置情况并生成Makefile文件。执行make命令,编译产生可执行文件。执行makeinstall命令,将编译生成的文件安装

53、到对应的目录。下载可执行文件到目标板上运行并测试。第五节第五节 ffmpeg应用应用 二、二、ffmpeg在在ARM上的移植上的移植嵌入式Linux开源软件移植与应用ffmpeg命令的使用方法如下:ffmpeg options -i input_file. options output_file其一般都要指定一个输入文件和一个输出文件:输入文件是待处理的文件,用-i参数指定;输出文件则是处理后的文件,参数说明如何处理。下面用实例加以说明。截取一张640x480尺寸大小的,格式为jpg的图片ffmpeg -i test.asf -y -f image2 -t 0.001 -s 640x480 t

54、est.jpg把视频的前帧转换成一个gif动画ffmpeg -i test.asf -vframes 30 -y -f gif test.gif截取指定时间的缩微图ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg第五节第五节 ffmpeg应用应用 三、三、ffmpeg命令应用实例命令应用实例嵌入式Linux开源软件移植与应用转码解密的VOBffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 sna

55、tch.avi上面的命令行将vob文件转化成mpeg4视频和mp3音频合成的avi文件。命令中使用了B帧,所以mpeg4流是divx5兼容的;GOP大小是300意味着29.97帧频下每10秒就有INTRA帧。该映射在音频语言的DVD转码时候尤其有用。同时编码到几种格式并且在输入流和输出流之间建立映射ffmpeg -i /tmp/test.wav -ab 64 /tmp/test1.mp2 -ab 128 /tmp/test2.mp2 -map 0:0 -map 0:0使用ffmpeg录像屏幕ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,

56、0 -s 1024x768 /test.avi其中,-vdx11:0,0指录制所使用的偏移为x=0和y=0,如果只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可以指定偏移位置和区域大小。录制的视频文件为test.avi,将保存到用户主目录中。把摄像头的实时视频录制下来,存储为文件ffmpeg -f video4linux -s 320x240 -r 10 -i /dev/video0 test.asf第五节第五节 ffmpeg应用应用 三、三、ffmpeg命令应用实例命令应用实例嵌入式Linux开源软件移植与应用第五节第五节 ffmpeg应用应用 三、三、ffmpeg命令应用实例命令应

57、用实例参数描述-h显示帮助信息-b设置波特率-f指明文件的格式-g设置图像组大小-r设置帧频-s指明帧的尺寸-t指明视频的停留时间-y覆盖输出文件-ss指明等待的时间(单位为秒)-vd设置视频捕获设备-acodec采用的音频编码-vcodec采用的视频编码-vframes设置帧数嵌入式Linux开源软件移植与应用AVFormatContextAVFormatContext是ffmpeg格式转换过程中实现输入和输出功能、保存相关数据的主要结构。每一个输入和输出文件,都在如下定义的指针数组全局变量中有对应的实体。staticAVFormatContext*output_filesMAX_FILES

58、;staticAVFormatContext*input_filesMAX_FILES;AVCodecContext保存AVCodec指针和与codec相关的数据,如视频的宽度和高度,音频的采样速率等。AVCodecContext中的codec_type和codec_id二个变量对于解码器和编码器的匹配来说,最为重要。enumCodecTypecodec_type;/*seeCODEC_TYPE_xxx*/enumCodecIDcodec_id;/*seeCODEC_ID_xxx*/如上所示,codec_type保存的是CODEC_TYPE_VIDEO,CODEC_TYPE_AUDIO等媒体类

59、型,codec_id保存的是CODEC_ID_FLV1,CODEC_ID_VP6F等编码方式。第五节第五节 ffmpeg应用应用 四、ffmpeg中几个重要的数据结构中几个重要的数据结构嵌入式Linux开源软件移植与应用AVStreamAVStream结构保存与数据流相关的编解码器,数据段等信息。比较重要的有如下二个成员:AVCodecContext*codec和void*priv_data。其中codec指针保存的就是编码器或解码器的结构;priv_data指针保存的是和具体编解码流相关的数据。AVInputStream和和AVOutputStream 根据输入和输出流的不同,前述的AVSt

60、ream结构都是封装在AVInputStream和AVOutputStream结构中,在av_encode()函数中使用。AVInputStream中还保存的有与时间有关的信息。AVOutputStream中还保存有与音视频同步等相关的信息。AVPacketAVPacket是用于保存读取的包数据。在视频文件中将会读取不同的音频流、视频流到这个数据结构中。第五节第五节 ffmpeg应用应用 四、ffmpeg中几个重要的数据结构中几个重要的数据结构嵌入式Linux开源软件移植与应用采用ffmpeg进行应用开发时不得不用到两个库:libavformat和libavcodec。许多视频文件格式,如AV

61、I实际上并没有明确指出应该使用哪种编码来解析音频和视频数据;它们只是定义了音频流和视频流如何被绑定在一个文件里面。而libavformat就是用来处理解析视频文件并将包含在其中的流分离出来,libavcodec则处理原始音频和视频流的解码。进行任何操作之前,必须先初始化两个库:libavformat和libavcodec。采用如下函数:av_register_all();该函数注册库中含有的所有可用的文件格式和编码器,这样当打开一个文件时,它们才能够自动选择相应的文件格式和编码器。第五节第五节 ffmpeg应用应用 五、ffmpeg应用开发应用开发嵌入式Linux开源软件移植与应用打开视频文件

62、的代码如下:AVFormatContext *pFormatCtx; const char *test.mpg; if(av_open_input_, , NULL, 0, NULL)!=0)/handle error;其中函数av_open_input()用来打开输入的音频、视频文件,其参数pFormatCtx用来保存音频或视频文件的格式;参数指定要打开的文件名;最后三个参数分别描述了文件的格式、缓冲区的大小和格式参数。我们通过简单地指明NULL或0告诉libavformat库去自动探测文件格式并且使用默认的缓冲区大小。接着可以通过参数pFormatCtx进一步获得文件的编码,当找到视频流之

63、后,可以获得它的编码,接着必须找到合适的编码器打开它,需要使用下面的函数。AVCodec *pCodec; pCodec=avcodec_find_decoder(pCodecCtx-codec_id); if(pCodec=NULL) /handle error第五节第五节 ffmpeg应用应用 五、ffmpeg应用开发应用开发嵌入式Linux开源软件移植与应用如下函数,用来打开解码器:if(avcodec_open(pCodecCtx, pCodec)frame_rate中,分母在pCodecCtx-frame_rate_base中。在用不同的视频文件库时,一些编码器如ASF并不能正确的给

64、予赋值(frame_rate_base用1代替1000)。可以加上如下代码进行修复:if(pCodecCtx-frame_rate1000 & pCodecCtx-frame_rate_base=1) pCodecCtx-frame_rate_base=1000;接下来,必须给视频帧分配空间,以便存储解码后的图片:AVFrame *pFrame; pFrame=avcodec_alloc_frame(); 第五节第五节 ffmpeg应用应用 五、ffmpeg应用开发应用开发嵌入式Linux开源软件移植与应用最后就可以解码这些视频文件了,解码函数如下:avcodec_decode_video(p

65、CodecCtx, pFrame,&frameFinished, rawData, bytesRemaining);其中参数pCodecCtx是前面得到视频流编码上下文的指针;参数pFrame是存储解码后的图片的位置;参数frameFinished用来记录已完成的帧数;参数rawData是输入缓冲区指针,指向要解码的原始数据;参数bytesRemaining是输入缓冲区的大小。与其对应的音频文件的解码函数是avcodec_decode_video()。包在视频文件中是一个很重要的概念,一个视频文件可能含有多个视频流和音频流,它们被各自独立存储在固定大小的包里。libavformat库就是用来解

66、析这些包的,然后交由库libavcodec进行解码处理。下面两个函数分别用来读取和释放包:av_read_packet(pFormatCtx, &packet);av_free_packet(&packet);第五节第五节 ffmpeg应用应用 五、ffmpeg应用开发应用开发嵌入式Linux开源软件移植与应用 内容:内容:一、软件移植的概念一、软件移植的概念二、软件移植过程二、软件移植过程第六节第六节 开源软件移植的一般过程开源软件移植的一般过程嵌入式Linux开源软件移植与应用随着Linux操作系统的诞生,其开源、免费、高效等特点,使得使用Linux操作系统的人数也是与日俱增,成为了使用人

67、数增长速度最快的操作系统。特别是其开源,使得很多的Linux爱好者纷纷过来参与讨论和研究,为其编写更加稳定、安全和高效的代码。并且也有很多志愿者、公司等参与编写Linux操作系统下的软件,这些软件大部分跟Linux一样也是开源免费的,个别是收费的。因为Linux的开源、免费、支持多平台,使得其它体系结构的计算机相拥出现,它们大多使用Linux作为操作系统,这也使得Intel和微软,特别是微软首次遭受如此巨大的打击。非X86体系结构的计算机除了使用Linux作为操作系统之外,它们要想投入到实践运用当中,还必须依赖相应的软件。由于大部分的软件都是针对X86平台开发的,并且这些软件大多是应用软件,其

68、实现都要经过操作系统,而不管底层硬件的细节。Linux操作系统上运行的软件也是如此,并且大多开源。又因为单独为一台嵌入式设备开发一个应用软件所发的时间和成本都是巨大的,因此,我们直接采用这些开源软件,针对特定的非X86平台,做适当修改,使它们能够正常地运行于这种平台,这个过程就叫移植。第六节第六节 开源软件移植的一般过程开源软件移植的一般过程 一、软件移植的概念一、软件移植的概念嵌入式Linux开源软件移植与应用当要对一个软件进行移植时,我们必须有一定的理论和实践基础,首先要能够充分地掌握软件移植的目标平台,包括对目标硬件平台的体系结构要有一定的了解,熟练掌握目标平台的操作系统等。其次,我们还

69、要对移植的软件有全面的认识,如软件的功能、支不支持目标平台、软件目录结构等都要预先知道,甚至对软件的源代码也必须能够读懂。第六节第六节 开源软件移植的一般过程开源软件移植的一般过程二、软件移植过程二、软件移植过程嵌入式Linux开源软件移植与应用该过程具体分成如下三个步骤:准备工作准备工作包括准备好软件的源码安装包、安装相应的交叉编译器、设置并配置相应的环境变量等实验环境。开始移植开始移植移植前首先查看一下软件源码包中的Readme文件,一般软件开发者会在这个文件中对软件给予一定的说明。Readme文件也可能含有软件的安装步骤,我们可以按照这个步骤进行移植。大部分软件的移植或者安装都是进入源码

70、目录,然后执行configure命令,生成Makefile文件,最后执行make和makeinstall命令进行编译生成可执行程序。有时候软件本身很大,占用的资源太多,而我们需要软件的功能却很有限,这样我们有必要先对软件进行裁减。我们也可以在执行configure命令的时候带上一些选项,禁止掉我们不需要的功能。这样,当执行make命令编译时就不会把这些功能编译进去,使我们的可执行程序足够小。在执行make命令的时候,难免会遇到编译出错的问题。这时候,首先我们要保证Makefile文件中使用的编译器是否正确,这里的编译器不一定都是交叉平台的编译器,有些程序可能需要在宿主机上执行,这时编译这个程序

71、选用的就是X86平台的编译器。其次,我们查看一下具体编译出错的问题,这时候一般涉及到具体的源代码,针对出现的问题,加以修改后重新编译。当编译没有出现问题,生成可执行程序后,可以进行下一步。第六节第六节 开源软件移植的一般过程开源软件移植的一般过程二、软件移植过程二、软件移植过程嵌入式Linux开源软件移植与应用运行并测试运行并测试我们可以将编译后的可执行程序下载到目标机上运行。如果运行正常,就可以算是移植成功。如果不能运行或是运行的效果不佳,那就有必要找出原因,加以解决后重新编译,直到生成的可执行程序正常地在目标机上运行。特别需要注意的是,选择软件时,需关注它们本身的版本和相互依赖关系,因为某

72、些软件体本身它不是孤立的,而且在其开发过程时也有特殊的环境。第六节第六节 开源软件移植的一般过程开源软件移植的一般过程二、软件移植过程二、软件移植过程嵌入式Linux开源软件移植与应用 内容:内容:一、一、phoneME介绍介绍二、软件移植过程与效果二、软件移植过程与效果第七节第七节 J2ME-phoneME移植移植嵌入式Linux开源软件移植与应用当今JVM种类很多,如IBMJVM、MSJVM等等。J2ME(Java2PlatformMicroEdition)是专为移动设备设计的,在移动通信设备上已经有了很广的应用,非常适合我们在嵌入式中使用。J2ME根据硬件资源的限制,分为CLDC(Con

73、nectedLimitedDeviceConfiguration)和CDC(ConnectedDeviceConfiguration),无论是CLDC还是CDC,其核心都是Java虚拟机。CLDC采用了KVM,它是一个真正的最小的而又基本上完整的Java虚拟机,小到可以装入几十KB的内存中。CDC则采用了CVM,它是一个具有完整的J2SE1.3VM支持能力的Java虚拟机,因此也更适合使用、更有效,但又比标准的J2SEVM小。作为一个全功能的Java虚拟机,CVM几乎支持J2SEVM的所有先进特性,包括最底层的调用、出错处理和本地语言接口。SUN的JVM开源后,作为JAVA开发社区的一个项目,

74、为避免版权问题,J2ME改名为phoneME。CLDC对应phoneMEFeature,而CDC对应phoneMEFeature,虚拟机则称为CVM。phoneMEFeature展开的。第七节第七节 J2ME-phoneME移植移植 一、一、phoneME介绍介绍嵌入式Linux开源软件移植与应用系统要求:GNUmakeversion=3.80并且arm-linux-gccversion=3.3.11安装安装jdk#./j2sdk-1_4_2_17-linux-i586-rpm.bin#rpm-ivhj2sdk-1_4_2_17-linux-i586.rpm2编辑并运行脚本编辑并运行脚本#vi

75、setup.sh#viteardown.sh-BuildingPCSL#vibuild-pcsl.sh#shbuild-pcsl.sh-BuildingCLDC#vibuild-cldc.sh#shbuild-cldc.sh-BuildingJavaWirelessClientSoftware修改文件phoneme_feature/midp/build/linux_qte_gcc/qte.gmk第66行添加:-ljpeg-lts#shbuild-sjwc.h注意:最后一步如果编译出现libobj.a含有未知参数的话,将output目录删除,然后从第一步重新编译.第七节第七节 J2ME-phon

76、eME移植移植二、软件移植过程与效果二、软件移植过程与效果嵌入式Linux开源软件移植与应用3环境变量设置与运行环境变量设置与运行RunningJavaWirelessClientSoftwareNowwhatdoyoudowithit?Torunthesoftware,copythefollowingthreedirectoriestoyourLinuxARMhardware: $MIDP_OUTPUT_DIR/appdb $MIDP_OUTPUT_DIR/bin $MIDP_OUTPUT_DIR/libcp-r$QTEDIR/lib/fontsMIDP_OUTPUT_DIR/libexpo

77、rtLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MIDP_OUTPUT_DIR/libexportQTDIR=$MIDP_OUTPUT_DIRcdbin./usertest第七节第七节 J2ME-phoneME移植移植二、软件移植过程与效果二、软件移植过程与效果嵌入式Linux开源软件移植与应用 内容:内容:一、一、konqueror介绍介绍二、软件移植过程与效果二、软件移植过程与效果第八节第八节 嵌入式浏览器嵌入式浏览器konqueror移植移植嵌入式Linux开源软件移植与应用现在基于Linux操作系统的桌面浏览器家族已经发展到相当的规模,目前市面上可供用户选择的桌

78、面浏览器就有20多种,但是面向嵌入式系统的浏览器还存在种种缺陷,要么是不稳定,要么对html、flash支持不是很完善。目前Konqueror/embedded作为一款开源、免费的嵌入式浏览器正逐渐受到用户的亲睐。Konqueror/embedded是针对嵌入式Linux,由著名的桌面操作环境KDE下的浏览器Kon-queror派生出来的。Konqueror/embedded将Konqueror中关于KHTML、SSL、Javascript等内容继承了下来,同时简化了Konqueror中很多类的定义,剔除了依赖于KDElib部分,以适应在不同的嵌入式平台上移植和运行。两者都是基于Qt的,因此K

79、onqueror/embedded也可以运行在Qt/X11环境下。Konqueror/embedded完整地支持HTML4和css(部分支持css2)、JavaScript(ECMAScript262)、cookies、SSL、IPv6;支持和管理兼容XBEL的书签,并且能够很好地支持中文网页浏览。Konqueror/embedded是由底层网络连接,图形化用户界面和处理HTML绘制的引擎KHTML构成的。底层的通信协议实现是基于KIO/slave机制来实现的;GUI界面采用可Kparts组建技术和Qt的基本构件;而作为Konqueror/embedded的核心KHTML则运用了文档对象模型(

80、DOM)所提供的API接口,并在DOM树上挂接javascript引擎,CSS解析器以及渲染引擎。第八节第八节 嵌入式浏览器嵌入式浏览器konqueror移植移植 一、一、konqueror介绍介绍嵌入式Linux开源软件移植与应用约定:QT版本与交叉编译环境为:QT/Embedded2.3.10Qtopia-free-2.1.1arm-linux-g+(3.4.1版本),Konqueror/embedded的版本是konqueror-embedded-snapshot-20030705.tar.gz 1在移植前首先要配置好环境变量在移植前首先要配置好环境变量2设置好环境变量以后解压设置好环境

81、变量以后解压Konqueror/embedded3一些缺少依赖软件的处理一些缺少依赖软件的处理4编译编译编译成功后,目录下会生成相应的可执行文件,因此只要将可执行文件和其他配置文件拷贝到目标板的文件系统中就行了。一般来说konqueror/embedded运行需要五个文件。第八节第八节 嵌入式浏览器嵌入式浏览器konqueror移植移植 二、软件移植过程与效果二、软件移植过程与效果嵌入式Linux开源软件移植与应用n本章在讲述嵌入式Web服务器GoAhead、嵌入式数据库SQLite、嵌入式媒体播放器Mplayer、JVM phoneMe、Web 服务gSOAP、Web 浏览器Konquero

82、r的移植与应用过程基础上,总结出了开源软件移植的一般过程,同时,读者需要特别注意的是相关软件的版本与依赖关系,包括交叉编译器。最后通过基于WebService的嵌入式计算器综合实验,来阐述在gsoap上的应用。小结小结嵌入式Linux开源软件移植与应用1.请列举出嵌入式软件移植的相关步骤和注意事项。2.请完成嵌入式WebServer GoAhead的移植实验。3.请完成嵌入式WebService gSOAP的移植实验。4.请完成嵌入式数据库SQLite的移植实验。5.请完成播放器Mplayer的移植实验。6.请完成ffmpeg应用实验。7.请完成J2ME-phoneME移植移植实验。8.请完成嵌入式浏览器konqueror移植实验。9.请完成本章的综合实验。10.请选择一其它开源软件,体会的移植过程和应用步骤。习题习题嵌入式Linux开源软件移植与应用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号