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

上传人:za****8 文档编号:14822160 上传时间:2020-07-31 格式:PPT 页数:62 大小:577.56KB
收藏 版权申诉 举报 下载
嵌入式Linux开源软件移植与应用.ppt_第1页
第1页 / 共62页
嵌入式Linux开源软件移植与应用.ppt_第2页
第2页 / 共62页
嵌入式Linux开源软件移植与应用.ppt_第3页
第3页 / 共62页
资源描述:

《嵌入式Linux开源软件移植与应用.ppt》由会员分享,可在线阅读,更多相关《嵌入式Linux开源软件移植与应用.ppt(62页珍藏版)》请在装配图网上搜索。

1、第5章 嵌入式Linux开源软件移植与应用,第五章 嵌入式Linux接口设计与 驱动程序,主要内容 第一节 嵌入式WebServer GoAhead的移植与应用 第二节 嵌入式WebService gSOAP的移植与应用 第三节 嵌入式数据库SQLite的移植与使用 第四节 播放器Mplayer的移植 第五节 ffmpeg应用 第六节 开源软件移植的一般过程 第七节 J2ME-phoneME移植 第八节 嵌入式浏览器konqueror移植,1,第五章 嵌入式Linux接口设计与 驱动程序,主要内容 高端嵌入式系统往往基于一个功能强大的操作系统,而使用Linux进行架构的好处之一就是可以从X86

2、机上移植大量软件做嵌入式开发。本章介绍了多个软件的移植以及应用,包括嵌入式Web 服务 GoAhead、嵌入式数据库SQLite、嵌入式媒体播放器Mplayer、JVM phoneMe、Web 服务gSOAP、Web 浏览器Konqueror。由于Linux软件的开源特点以及交叉编译工具的使用,向嵌入式平台上移植丰富的软件成为一件非常轻松的事情。需要特别注意的是相关软件的版本与依赖关系,包括交叉编译器。,2,内容: 一、嵌入式Web服务器 二、GoAhead介绍 三、GoAhead在ARM平台上的移植 四、页面操作,第一节 嵌入式WebServer GoAhead的移植与应用,3,随着后PC机

3、时代的到临,计算机的发展已经从以PC机为中心转向了以嵌入式系统为中心的方向:嵌入式系统的迅猛发展和IA(信息电器)的不断成熟使得其应用越来越广泛。其中,嵌入式系统与网络的结合也是当今发展的一大趋势,而嵌入式网络技术的产生正好迎合了这个趋势。由于嵌入式系统的专用性强、体积小且价格低廉,使得嵌入式设备已经开始应用于智能家居系统、工业智能化从站系统、LED网络控制显示屏系统、网络安全加密系统等各个网络相关领域。 在嵌入式设备中,所谓的瘦Web服务器,即功能不会很全面的Web服务器,往往拥有有限的资源。因此实现嵌入式WebServer方案的主要技术难点是:在不影响其整体性能的前提下,如何利用它自身有限

4、的资源,同时又必须满足Web应用服务器的特征。,4,第一节 嵌入式WebServer GoAhead的移植与应用 一、嵌入式Web服务器,由下图可以看出:由于HTML语言的标准统一性,只要在嵌入式设备中存在一个微型服务器,就可以使用任意一种Web浏览器接收和发送信息。所以如何在嵌入式设备中设计和安装Web服务器,就成了嵌入式Web服务器的发展和研究方向。,5,第一节 嵌入式WebServer GoAhead的移植与应用 一、嵌入式Web服务器,GoAhead Webserver是为嵌入式设备的需要而设计的。该Webserver软件不仅开源,而且具有各种各样的特性,包括支持活动服务页、嵌入Jav

5、a描述语言、in-process CGI形式、SSL、文摘访问认证、用户管理和标准CGI等,脚本大小仅为60K。这对于那些需要在基于浏览管理模式的设备上传递动态信息的系统管理开发人员来说,这点非常重要。 GoAhead Webserver支持多种操作系统和开发平台,包括Windows NT/98/95、Windows CE、Embedded Linux、Linux、VxWorks、QNX和Lynx等,它也有其它操作系统的定制产品,因此具有很强大的可移植性。GoAhead网络服务器的发展同时也促进了嵌入式网络服务器的源代码的进化。由于其开源,世界各地的厂商和爱好者都纷纷下载并优化GoAhead的

6、源代码,这也使得GoAhead WebServer成为市场上最优秀的嵌入式网络服务器之一。 作为一款嵌入式Web服务器,GoAhead具有如下特点: 优点:免费,体积小巧,支持多平台,完全针对嵌入式系统设计,支持嵌入的JavaScript与动态数据页。 缺点:其对ASP的支持意味着要依靠微软的平台,安全方面的考虑很少。,6,第一节 嵌入式WebServer GoAhead的移植与应用 二、GoAhead介绍,完成GoAhead移植后,需要在此基础上完成系统运行所需要的页面文件,透过页面文件来实现Web对终端的管理。 页面操作方式有三种,如下介绍所示: 1,静态页面 静态页面可在http编辑工具

7、中完成,完成直接下载至相应的Web存放目录即可,此种方式可完成诸如说明文档、终端信息等固定内容,但无法和用户进行交互操作。 2,cgi页面 cgi页面,即可用C语言编辑的页面,其操作方式可参考cgitest.c文件(该文件存放在GoAhead2.18webcgi-bin目录下),使用时需要将此文件加入项目中一起编辑。GoAhead WebServer任务启动后,在地址栏中直接输入192.168.0.121cgi-bincgitest(其中192.168.0.121为Web服务器的IP地址)就可以观察到相应结果。GoAhead的cgi入口处理中,在地址栏内如果带有cgientry=name的字样

8、时,则处理器会寻找name函数来处理该请求,相反,如果没有此请求字样时,GoAhead搜索名称为name_cgientry的函数,即请求的名称增加后缀_cgientry;另外需要注意的是cgi任务的退出要使用return,而不是使用任务删除,return退出后,系统会重新定位stdin、stdout等,否则由cgi重定位的输入输出会保持,会影响后续的其他类型的Web请求。,7,第一节 嵌入式WebServer GoAhead的移植与应用 四、页面操作,3,嵌入式Javascript 嵌入式Javascript是GoAhead WebServer提供的一种方式,其采用表单提交的方式,提供了完善的

9、输入输出流程控制,同样可采用C语言进行设计,可很好的与系统其它部分实现代码共享。如Today is ,此句代码即可在网页上输出“Hello World”字样。 由于采用表单提交的方式,通过特殊的标记印记,嵌入已经实现的C函数至页面文件中,在提交时,由已经在系统定义并注册的函数来接收处理,通过代码写Web页面来实现输出。其设计过程主要涉及以下几个方面: 1)页面设计。嵌入式Javascript文件为asp文件,其内容可按照标准的javascript来设计,在创建页面过程中,如果需要从原系统中动态生成页面,如当前终端的参数配置,此时需要使用嵌入式Javascript的独立定义,在需要嵌入创建函数的

10、地方用如下格式加入:,此函数需要事先定义好并在系统启动向WebServer注册完成。,8,第一节 嵌入式WebServer GoAhead的移植与应用 四、页面操作,2)创建函数定义:一个标准的创建函数int aspCreateHomeAsp(int eid, webs_t wp, int argc, char_t *argv),前面两个参数为页面参数,不能改动。 3)注册创建函数:websAspDefine(T(CreateCurrentUser), aspCreateHomeAsp)使用此函数注册后,如果asp页面中出现,则WebServer会调用aspCreateHomeAsp()来输出

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

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

13、AP的使用范围也非常广泛,能够集成C/C+代码、Fortran代码、其他SOAP程序提供的实时软件的资源和信息;可以跨越多个操作系统,语言环境等等。gSOAP包含一个WSDL生成器,可以生成Web服务的解释。通过gSOAP的解释器以及导入器,用户可以不需要分析Web服务的细节就能够实现一个客户端或者服务端程序。 gSOAP可以理解为一个C/C+的Web服务协议栈,该协议栈主要包括五部分:网络传输,Web服务调用(消息传输),Web服务描述与注册(接口描述、发布与发现),Web服务质量(安全性,可靠性,事务控制),Web服务工作流(商业流程、事务等),11,第二节 嵌入式WebService g

14、SOAP的移植与应用 一、gSOAP介绍,12,第二节 嵌入式WebService gSOAP的移植与应用 一、gSOAP介绍,虽然gSOAP实现Web服务协议栈比较复杂,但是用gSOAP开发Web Service是非常方便的。gSOAP工具包中提供了两个可执行文件,wsdl2h和soapcpp2。 wsdl2h用来解析wsdl文档生成描述服务的C/C+头文件,例如你可以用如下的命令将一个wsdl文档转换为一头文件: $ ./wsdl2h o outputfile.h inputfile.wsdl 上面的命令根据制定URL提供的WSDL文档生成一个C+语法结构的头文件。假如需要生成一个纯C的头

15、文件,需要用如下命令: $ ./wsdl2h c o outputfile.h inputfile.wsdl 其中inputfile.wsdl可以是本地文件系统上的文件,也可以存在于Web页上,例如: $ ./wsdl2h -c -o outputfile.h http:/xxx.xxx.xxx/xxx/inputfile.wsdl soapcpp2用来解析上面生成的头文件并生成框架代码,这些框架代码是:soapStub.h 从输入头文件生成的经过修改且带名称空间前缀的头文件,soapH.h 主头文件,所有客户机和服务源代码都要将其包括在内,soapC.c 指定数据结构的序列化器和反序列化器,

16、soapClient.c客户机存根例程,soapServer.c服务器端存根例程,13,第二节 嵌入式WebService gSOAP的移植与应用 一、gSOAP介绍,另外,在gSOAP工具包中还包含两个重要的文件:stdsoap2.h和stdsoap2.c/cpp。其中stdsoap2.h是stdsoap2.c/cpp 运行时所需库的头文件,stdsoap2.c/cpp是运行时 C/C+ 库,带 HTTP/SOAP 解析器和运行时支持例程。用户可以用这两个文件和上述的框架代码方便的进行客户端/服务器端开发。,14,第二节 嵌入式WebService gSOAP的移植与应用 一、gSOAP介绍

17、,用gSOAP开发的Web Service服务器端和客户端的交互模型,如图所示。从图中可以看出:soapC.c和stdsoap2.c是构成客户机与服务端的重要的源文件,其中soapC.c是上面提到的序列化器和反序列化器,当建立请求或响应时需要用到它的序列化功能,而解析请求或响应时需要用到它的反序列化功能。stdsoap2.c是gSOAP工具包提供的HTTP/SOAP解析器,15,第二节 嵌入式WebService gSOAP的移植与应用 一、gSOAP介绍,裁减gSOAP是为了将Web服务协议栈移植到嵌入式系统中,这类似于向嵌入式系统中移植TCP/IP协议栈。裁减的目的并不是得到一个比较通用的

18、精简Web服务协议栈,而是从某个应用角度出发来对gSOAP进行裁减。 1超文本传输协议HTTP协议 超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议。它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途外,还可以通过扩展它的请求方式,错误代码和报头来完成许多任务。由于HTTP的使用极为广泛,使得SOAP常常采用HTTP作为底层通讯协议。 1)HTTP Cookie HTTP Cookie是在HTTP连接期间浏览器与CGI程序之间传递的信息。在没有涉及到浏览器与CGI程序之间通信的程序中,该功能可以被裁减。

19、,16,第二节 嵌入式WebService gSOAP的移植与应用 二、gSOAP裁减,2)HTTP Chunked编码 有时服务器生成HTTP回应是无法确定消息大小的,这时用Content-Length就无法事先写入长度,而需要实时生成消息长度,这时服务器一般采用Chunked编码。如果HTTP回应的消息长度是可以确定的而且比较小,则可以不支持HTTP的Chunked编码方式。 3)HTTP Proxy 它的主要功能就是通过网上的代理服务器代理用户去取得网络信息。如果在客户与服务器之间没有设置代理服务器,则HTTP Proxy的功能不必在系统中实现。 4)HTTP Keep-Alive Ke

20、ep-Alive功能使客户端到服务器端的连接持续有效,客户端为每个待请求的对象建立并维护一个新的连接。对于每个这样的连接,TCP要在客户端和服务器端分配TCP缓冲区,并维持TCP变量。当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。对于嵌入式设备来说,系统资源非常有限,因此每次通信完成后应立即释放连接,尽量避免长期占用系统资源而不释放。,17,第二节 嵌入式WebService gSOAP的移植与应用 二、gSOAP裁减,2可扩展标识语言协议XML协议 XML(eXtensible Markup Language,可扩展标记语言)是Internet上数据表示和数

21、据交换的新标准。它是ISO(International Organization for Standardization,国际标准化组织)的SGML(Standard for General Markup Language,通用标记语言标准)的一个简化子集。XML关注信息本身,是Web上表示结构化信息的一种标准文本格式。与传统的注重页面信息显示的HTML(HyperText Markup Language, 超文本链接标示语言)相比,关注于内容的XML具有以下诸多优点:良好的可扩展性,语言简单有效,可自行定义标记;内容与形式的分离,主要刻画数据内容,不考虑显示效果;有严格的语法要求,便于分析统

22、一和与数据库信息转换;便于传输,为纯文本形式,可通过HTTP协议直接传输,可跨越防火墙等等。gSOAP工具包中提供了XML解析器,但是对于具体的应用而言,不必对XML协议完全解析,经过分析gSOAP源代码,可以对XML协议作如下的精简:,18,第二节 嵌入式WebService gSOAP的移植与应用 二、gSOAP裁减,1)精简编码方式 XML文档一般采用UTF-8编码方式,UTF-8可以处理目前世界上使用的每一种文字。虽然还有少数空白,但是越来越不明显,被逐渐填平了。没有纳入的文字通常也没有其他任何字符集实现过,即使有也不能在 XML 中使用。如果对于某个嵌入式系统而言采用UTF-8编码方

23、式已经足够了。那么对于其他的编码方式,解析器可以不支持。 2)CDATA部件 如果一个XML元素的文本中包含了大量非法的xml字符如“”和“ 3)修改configure文件,使其不去检查交叉编译环境。之后执行configure命令,生产Makefile文件。 4)修改Makefile文件,将BCC变量里的编译器修改为X86的编译器,因为其编译生成的可执行文件要在宿主机上运行。同时,由于编译生成的可执行文件sqlite要在ARM开发版上执行,为了方便,我们将后面指定生成的库libsqlite.la改为libsqlite.a,即编译成静态链接的形式。 5)去掉可执行文件sqlite中的调试信息,这

24、样可执行文件也将变得很小。,第二节 嵌入式数据库SQLite的移植与使用 三、SQLite在ARM平台上的移植,28,完成SQLite的移植之后,我们可以利用它创建一个数据库,实现基本的SQL语句功能,包括建表、插入、查询、删除等基本操作,如下所示: # sqlite school sqlite create table std(sno char(8),sname varchar(10),sage smallint); sqlite insert into std values(08000001,Li Lei,17); sqlite insert into std values(0800000

25、2,Jim, 18); sqlite select * from std; 08000001|Li Lei|17 08000002|Jim|18 在上面的例子中,我们创建名为school的数据库,并给这个数据库创建了表std,在表std中插入了两组数据,最后查询该表,显示表中的数据。,第二节 嵌入式数据库SQLite的移植与使用 四、SQLite的使用,29,我们可以采用C语言编程,调用SQLite数据库,实现类似上面的操作。在使用SQLite数据库进行编程时,我们要加上头文件sqlite.h,它是SQLite的API头文件。 SQLite数据库中提供的接口主要有: sqlite_open (

26、 string filename , int mode , string static AVFormatContext *input_filesMAX_FILES; AVCodecContext 保存AVCodec指针和与codec相关的数据,如视频的宽度和高度,音频的采样速率等。AVCodecContext中的codec_type和codec_id二个变量对于解码器和编码器的匹配来说,最为重要。 enum CodecType codec_type; /* see CODEC_TYPE_xxx */ enum CodecID codec_id; /* see CODEC_ID_xxx */ 如

27、上所示,codec_type保存的是CODEC_TYPE_VIDEO,CODEC_TYPE_AUDIO等媒体类型,codec_id保存的是CODEC_ID_FLV1,CODEC_ID_VP6F等编码方式。,第五节 ffmpeg应用 四、ffmpeg中几个重要的数据结构,42,AVStream AVStream结构保存与数据流相关的编解码器,数据段等信息。比较重要的有如下二个成员: AVCodecContext *codec和void *priv_data。其中codec指针保存的就是编码器或解码器的结构;priv_data指针保存的是和具体编解码流相关的数据。 AVInputStream和AV

28、OutputStream 根据输入和输出流的不同,前述的AVStream结构都是封装在AVInputStream和 AVOutputStream结构中,在av_encode( )函数中使用。 AVInputStream中还保存的有与时间有关的信息。 AVOutputStream中还保存有与音视频同步等相关的信息。 AVPacket AVPacket是用于保存读取的包数据。 在视频文件中将会读取不同的音频流、视频流到这个数据结构中。,第五节 ffmpeg应用 四、ffmpeg中几个重要的数据结构,43,采用ffmpeg进行应用开发时不得不用到两个库:libavformat和libavcodec。

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

30、: AVFormatContext *pFormatCtx; const char *filename=test.mpg; if(av_open_input_file( if(pCodec=NULL) /handle error,第五节 ffmpeg应用 五、ffmpeg应用开发,45,如下函数,用来打开解码器: if(avcodec_open(pCodecCtx, pCodec)frame_rate中,分母在pCodecCtx-frame_rate_base中。在用不同的视频文件库时,一些编码器如ASF并不能正确的给予赋值(frame_rate_base用1代替1000)。可以加上如下代码进

31、行修复: if(pCodecCtx-frame_rate1000 ,第五节 ffmpeg应用 五、ffmpeg应用开发,46,最后就可以解码这些视频文件了,解码函数如下: avcodec_decode_video(pCodecCtx, pFrame,第五节 ffmpeg应用 五、ffmpeg应用开发,47,内容: 一、软件移植的概念 二、软件移植过程,第六节 开源软件移植的一般过程,48,随着Linux操作系统的诞生,其开源、免费、高效等特点,使得使用Linux操作系统的人数也是与日俱增,成为了使用人数增长速度最快的操作系统。特别是其开源,使得很多的Linux爱好者纷纷过来参与讨论和研究,为其

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

33、开源。又因为单独为一台嵌入式设备开发一个应用软件所发的时间和成本都是巨大的,因此,我们直接采用这些开源软件,针对特定的非X86平台,做适当修改,使它们能够正常地运行于这种平台,这个过程就叫移植。,第六节 开源软件移植的一般过程 一、软件移植的概念,49,当要对一个软件进行移植时,我们必须有一定的理论和实践基础,首先要能够充分地掌握软件移植的目标平台,包括对目标硬件平台的体系结构要有一定的了解,熟练掌握目标平台的操作系统等。其次,我们还要对移植的软件有全面的认识,如软件的功能、支不支持目标平台、软件目录结构等都要预先知道,甚至对软件的源代码也必须能够读懂。,第六节 开源软件移植的一般过程 二、软

34、件移植过程,50,该过程具体分成如下三个步骤: 准备工作 包括准备好软件的源码安装包、安装相应的交叉编译器、设置并配置相应的环境变量等实验环境。 开始移植 移植前首先查看一下软件源码包中的Readme文件,一般软件开发者会在这个文件中对软件给予一定的说明。Readme文件也可能含有软件的安装步骤,我们可以按照这个步骤进行移植。大部分软件的移植或者安装都是进入源码目录,然后执行configure命令,生成Makefile文件,最后执行make和make install命令进行编译生成可执行程序。 有时候软件本身很大,占用的资源太多,而我们需要软件的功能却很有限,这样我们有必要先对软件进行裁减。我

35、们也可以在执行configure命令的时候带上一些选项,禁止掉我们不需要的功能。这样,当执行make命令编译时就不会把这些功能编译进去,使我们的可执行程序足够小。 在执行make命令的时候,难免会遇到编译出错的问题。这时候,首先我们要保证Makefile文件中使用的编译器是否正确,这里的编译器不一定都是交叉平台的编译器,有些程序可能需要在宿主机上执行,这时编译这个程序选用的就是X86平台的编译器。其次,我们查看一下具体编译出错的问题,这时候一般涉及到具体的源代码,针对出现的问题,加以修改后重新编译。 当编译没有出现问题,生成可执行程序后,可以进行下一步。,第六节 开源软件移植的一般过程 二、软

36、件移植过程,51,运行并测试 我们可以将编译后的可执行程序下载到目标机上运行。如果运行正常,就可以算是移植成功。如果不能运行或是运行的效果不佳,那就有必要找出原因,加以解决后重新编译,直到生成的可执行程序正常地在目标机上运行。 特别需要注意的是,选择软件时,需关注它们本身的版本和相互依赖关系,因为某些软件体本身它不是孤立的,而且在其开发过程时也有特殊的环境。,第六节 开源软件移植的一般过程 二、软件移植过程,52,内容: 一、phoneME介绍 二、软件移植过程与效果,第七节 J2ME-phoneME移植,53,当今JVM种类很多,如IBM JVM、MS JVM等等。J2ME(Java 2 P

37、latform Micro Edition)是专为移动设备设计的,在移动通信设备上已经有了很广的应用,非常适合我们在嵌入式中使用。J2ME根据硬件资源的限制,分为CLDC (Connected Limited Device Configuration)和CDC (Connected Device Configuration),无论是CLDC还是CDC,其核心都是Java虚拟机。CLDC采用了KVM,它是一个真正的最小的而又基本上完整的Java虚拟机,小到可以装入几十KB的内存中。CDC则采用了CVM,它是一个具有完整的J2SE1.3 VM支持能力的Java虚拟机,因此也更适合使用、更有效,但又

38、比标准的J2SE VM小。 作为一个全功能的Java虚拟机,CVM几乎支持J2SE VM的所有先进特性,包括最底层的调用、出错处理和本地语言接口。SUN的JVM开源后,作为JAVA开发社区的一个项目,为避免版权问题,J2ME改名为phoneME。CLDC对应phoneME Feature,而CDC对应phoneME Feature,虚拟机则称为CVM。phoneME Feature展开的。,第七节 J2ME-phoneME移植 一、phoneME介绍,54,系统要求: GNU make version =3.80 并且 arm-linux-gcc version =3.3.1 1安装jdk #

39、./j2sdk-1_4_2_17-linux-i586-rpm.bin #rpm -ivh j2sdk-1_4_2_17-linux-i586.rpm 2编辑并运行脚本 #vi setup.sh #vi teardown.sh -Building PCSL #vi build-pcsl.sh #sh build-pcsl.sh -Building CLDC #vi build-cldc.sh #sh build-cldc.sh -Building Java Wireless Client Software 修改文件phoneme_feature/midp/build/linux_qte_gcc

40、/qte.gmk 第66行添加: -ljpeg -lts #sh build-sjwc.h 注意:最后一步如果编译出现libobj.a含有未知参数的话,将output目录删除,然后从第一步重新编译.,第七节 J2ME-phoneME移植 二、软件移植过程与效果,55,3环境变量设置与运行 Running Java Wireless Client Software Now what do you do with it? To run the software, copy the following three directories to your Linux ARM hardware: $MI

41、DP_OUTPUT_DIR/appdb $MIDP_OUTPUT_DIR/bin $MIDP_OUTPUT_DIR/lib cp -r $QTEDIR/lib/fonts MIDP_OUTPUT_DIR/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MIDP_OUTPUT_DIR/lib export QTDIR=$MIDP_OUTPUT_DIR cd bin ./usertest,第七节 J2ME-phoneME移植 二、软件移植过程与效果,56,内容: 一、konqueror介绍 二、软件移植过程与效果,第八节 嵌入式浏览器konqueror移植

42、,57,现在基于Linux操作系统的桌面浏览器家族已经发展到相当的规模,目前市面上可供用户选择的桌面浏览器就有20多种,但是面向嵌入式系统的浏览器还存在种种缺陷,要么是不稳定,要么对html、flash支持不是很完善。目前Konqueror/embedded作为一款开源、免费的嵌入式浏览器正逐渐受到用户的亲睐。 Konqueror/embedded是针对嵌入式Linux ,由著名的桌面操作环境KDE下的浏览器Kon-queror派生出来的。Konqueror/embedded将Konqueror中关于KHTML 、SSL 、Javascript等内容继承了下来,同时简化了Konqueror中很

43、多类的定义,剔除了依赖于KDE lib部分,以适应在不同的嵌入式平台上移植和运行。两者都是基于Qt 的,因此Konqueror/embedded也可以运行在Qt/ X11 环境下。 Konqueror/embedded完整地支持HTML4 和css(部分支持css2)、JavaScript ( ECMAScript 262) 、cookies、SSL 、IPv6;支持和管理兼容XBEL的书签,并且能够很好地支持中文网页浏览。 Konqueror/embedded是由底层网络连接,图形化用户界面和处理HTML绘制的引擎KHTML构成的。底层的通信协议实现是基于KIO/slave机制来实现的;GU

44、I界面采用可Kparts组建技术和Qt的基本构件;而作为Konqueror/embedded的核心KHTML则运用了文档对象模型(DOM)所提供的API接口,并在DOM树上挂接javascript引擎,CSS解析器以及渲染引擎。,第八节 嵌入式浏览器konqueror移植 一、konqueror介绍,58,约定:QT版本与交叉编译环境为:QT/Embedded 2.3.10 Qtopia-free-2.1.1 arm-linux-g+ (3.4.1版本),Konqueror/embedded的版本是 konqueror-embedded-snapshot-20030705.tar.gz 1在移

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

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

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!