《毕业设计论文基于嵌入式Linux的银行排队系统.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于嵌入式Linux的银行排队系统.doc(40页珍藏版)》请在三一办公上搜索。
1、2010届学生毕业设计(论文)材料(四)学 生 毕 业 设 计(论 文)课题名称基于嵌入式Linux的银行排队系统姓 名学 号院 系计算机科学系专 业计算机科学与技术指导教师2010年 6 月 18 日35湖南城市学院本科毕业设计(论文)诚信声明本人郑重声明:所呈交的本科毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 本科毕业设计(论文)作者签名:
2、二一年六月十八日目录摘要1关键字1ABSTRACT2KEYWORDS21绪论31.1引言31.2嵌入式银行排队系统概述31.3论文的主要工作42系统平台分析62.1开发板芯片S3C2410X简介62.2开发环境62.2.1交叉编译工具链62.2.2建立tftp服务器72.2.3配置NFS服务72.2.4设置minicom73定制板上系统93.1开发板Linux内核93.1.1移植Linux内核93.1.2 Linux内核的配置和编译103.1.3烧写Linux映像zImage123.2制作板上根文件系统143.2.1在一个已建好的文件系统上进行修改143.2.2建立根文件系统153.3设备驱动
3、程序介绍153.3.1LCD驱动163.3.2网络驱动164本系统支撑软件的构建174.1MiniGUI简介174.2MiniGUI的安装及配置174.2.1MiniGUI的安装174.2.2MiniGUI的本地运行环境设置174.3MiniGUI的移植184.3.1交叉编译zlib库184.3.2交叉编译png库194.3.3交叉编译jpeg库194.3.4交叉编译popt库194.3.5交叉编译libmingui194.4MiniGUI编程基础225服务器与客户端的设计与实现235.1服务器端与MiniGUI客户端的设计与实现235.1.1服务器端的设计与实现235.1.2MiniGUI客
4、户端的设计与实现255.2服务端与客户端通信设计与实现275.2.1UDP服务端的设计与实现275.2.2UDP客户端的设计与实现296系统用户使用指南32结论:34参考文献:34致谢:35基于嵌入式Linux的银行排队系统(湖南城市学院计算机科学系2010届计算机科学与技术专业,益阳,413000)摘要:本论文研究和解决的课题是设计一个基于Linux的嵌入式银行排队系统。首先介绍了嵌入式银行排队系统的优点和应用前景。然后,进行了硬件平台的介绍,搭建软件开发平台。再次,介绍u-boot,编译内核,定制根文件系统。安装和交叉编译了图形系统MiniGUI,之后,分析了MiniGUI、Socket和
5、多线程的编程以及如何将Socket和多线程操作函数嵌入到MiniGUI程序中进行程序设计。最后,总结了本设计中的缺陷并提出相应解决方法。关键字:嵌入式系统;MiniGUI;内核;Linux;Socket;多线程The banks of the queuing system based on embedded LinuxZENG Jian-tao(2010 Session Student of The Computer Science and Technology Major Of Department Of Computer Science Hunan City University, Yiy
6、ang, Hunan, 413000, China)Abstract:In this thesis, research and resolve issues has been done is to design a Linux-based embedded systems of banks queuing. First of all, it introduced the advantages and application prospects of the banks queuing embedded system. Then, it introduced hardware platform,
7、 the set up of the software platform needed in development system. Consequently, it introduced the concept about u-boot, which is the BootLoader of the ARM target, the method of compiling the Linux kernel and how to customize the root file system. Finally, it planted he graphics system of MiniGUI th
8、rough the cross compiler. Based on the work mentioned above, this thesis analysised the programming of MiniGUI,Socket and Thread and realized a practical system of banks queuing, and it just gived a good example of itself how to operate Socket or Thread functions embedded in the MiniGUI Programming.
9、 In conclusion, this thesis summed up the deficiencies in design and the corresponding solution.Keywords: embedded systems;MiniGUI;kernel;Linux;Socket;Thread1绪论1.1引言Internet与网络的迅速普及应用,并向家庭领域不断扩展,使消费电子、计算机、通信(3C)一体化趋势日趋明显,嵌入式系统再度成为研究与应用的热点。实时操作系统在多媒体通信、在线事务处理、生产过程控制、交通控制等各个领域得到广泛的应用,因而越来越引起人们的重视。嵌入式实
10、时Linux操作系统以价格低廉、功能强大又易于移植而正在被广泛采用,成为新兴的力量,所以,众多商家纷纷转向了嵌入式实时linux的研究。所谓嵌入式操作系统(Embedded System)是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件等组成。嵌入式系统的应用将越来越多样化,为越来越多领域的用户提供最佳的选择方案。将嵌入式系统应用到银行排队管理系统中,可有效提高银行的服务质量。而且根据嵌入式系统对产品要求小型化、低功耗、专用性等特点,可断言嵌入式技术将
11、在排队信息化的过程中发挥重要作用。1.2嵌入式银行排队系统概述嵌入式银行排队系统代表着当今银行管理解决方案中最顶尖的领先科技,它是一种综合运用计算机、网络、多媒体、通讯控制的高新技术产品,以取代各类服务性窗口传统的由顾客站立排队的方式,改由计算机系统代替客户进行排队的产品。它不仅适用于银行服务业,同时也适用于各类窗口服务行业。目前在国外已经广泛应用于金融、医院、电信以及各级政府对外服务窗口等行业。使用排队系统,一方面可消除客户长时间“站队”的辛苦,同时防止“站错队”、“插队”的情况,为顾客提供更加温馨、人性化的服务,全面改善服务质量和企业形象,另一方面更可以依据统计数据调整业务分配、挖掘潜力、
12、合理安排窗口服务,减少群众的等候时间,提高办事效率。 同时,排队系统支持多种形式的排队,可依照业务或客户的种类进行排队。支持对特殊对象(如残疾人、老人等)的优先服务。支持多道手续的自动转移。支持多套派号机及打印机以满足业务大厅有多个出入口的自然环境。由于人力物力财力等资源的有限,本文设计并实现了一个功能简单的银行排队系统,基于该系统可以容易过渡到实用的银行排队系统。在系统的实现中涉及到许多技术,其中主要有嵌入式技术、socket通信技术、多线程技术、用户图形界面编程技术等。排队系统一般涉及到数据通信,比如取号机与窗口之间、窗口与大屏幕之间的通信,所以绝大部分排队系统都采用socket技术进行通
13、信。在socket网络编程中,为把接收数据和发送数据分开处理,将会采用多线程技术来实现。另外,为了方便用户的使用,还要设计一个人性化的图形用户界面。本文设计的系统中用socket进行网络通信,操作系统上选用了Linux,用户图形界面使用了MiniGUI。在硬件上,选用了低功耗、高性能的ARM9处理器。银行排队系统由客户端、计算机网络和服务器组成。客户端采用嵌入式技术实现,是本系统开发的重点和难点,它的服务对象是排队等候的顾客和营业窗口的营业员,顾客通过取号机选择自己需要在银行办理的业务,并取得排队的队列序号。服务器充当信息管理员的角色,系统中的所有信息都从客户端先发到服务器上,再由服务器判断处
14、理再转发到指定的客户端。服务器相当于整个排队系统的中枢神经,起到了协调全局的作用。银行引进排队系统,具有重大的意义:首先,解决顾客排队的烦恼,有效地提高银行服务质量,同时可以监控和预计顾客流量,实时掌握服务情况,提供有用管理信息,优化资源组合,提高劳动生产率;可根据不同的客户要求灵活配置该系统。银行排队系统具有不可抵赖性,每人一个号码,服务前可验证排队号码,可以有效的防止插队、偷窥密码等不良现象。可以有效的防止客户与客户之间、客户与工作人员之间的各种误会、不满和纠纷,也可以有效的保护客户的隐私。1.3论文的主要工作本文是在武汉创维特提供的JXARM9-2410-1开发板及其软件系统的基础上完成
15、的。本文的主要工作包括:第一:搭建开发平台。安装Linux和Windows双操作系统,启动NFS和TFTP服务,配置超级终端mincom。第二:对开发板上原有系统进行改造。在宿主机的RedHat Linux操作系统下安装Linux发行包以及交叉编译器arm-linux-gcc。然后对Linux内核进行配置(make menuconfig)并选择适合本系统的配置选项,配置完成后进行编译生成Linux映像文件zImage。本实验主要应用MiniGUI,因此在开发板根文件系统中需要添加运行MiniGUI用到的相应库文件和头文件。第三:在宿主机上安装和移植MiniGUI。开发板上运行的软件需在宿主机上
16、用交叉编译工具链arm-linux-gcc进行交叉编译,之后下载到开发板运行。 第四:使用MiniGUI并编写MiniGUI程序,分配完成宿主机端和开发板用户图形界面的应用程序。第五:总结了论文的成果。指出了本设计中的一些不足之处并提出了若干解决方案。2系统平台分析JXARM9-2410-1教学实验系统的硬件部分包括基本模块、调试模块、通信模块、人机交互模块、A/D及D/A模块、工业控制模块、IDE/CF/SD/MMC接口模块、GPRS模块、GPS模块和扩展模块。目标处理器采用Samsung公司的S3C2410X微处理器。主板包括3个UART接口,标准JTAG接口,10M/100M以太网卡,2
17、个USB HOST接口,5.7英寸、STN 256色LCD显示器/触摸屏,640X480的分辨率。系统具有体积小、功耗低、处理能力强等特点。2.1开发板芯片S3C2410X简介S3C2410X微处理器是一款有Samsung公司为手持设备设计的低功耗、高集成度的机遇ARM920T核的微处理器。为了降低系统总成本和减少外围器件,这款芯片中还集成了以下的部件:16KB指令Cache、16KB数据Cache、MMU、外部存储控制器、LCD控制器(STN和TFT)、NAND Flash控制器、4个DMA通道、3个UART通道、1个I2C总线控制器、1个I2S总线控制器,以及4个PWM定时器和1个内部定时
18、器、通用I/O口、实时时钟、8通道10位ADC和触摸屏接口、USB主、USB从、SD/MMC卡接口等。现在它广泛应用于PDA、移动通信、路由器、工业控制等领域。2.2开发环境绝大多数的Linux软件开发都是以本机开发方式进行的。由于嵌入式系统一般资源都比较紧张,不能在本机(即开发板)运行开发工具,因此,嵌入式系统的开发采用一种叫做交叉编译调试的方式。为了进行交叉编译与调试,需要在宿主机(运行编译与调试工具的机器)上构建一些工具与搭建合适的环境,比如安装交叉编译工具链,建立tftp服务器,构建网络文件系统nfs等。2.2.1交叉编译工具链交叉编译工具链的目的是为了在一个平台体系结构下能编译、链接
19、、处理和调试另一个平台体系结构下的程序,使得编译生成的程序能够在另一个平台下运行。Linux使用的是GNU的工具链,包括:binutils,gcc,glibc等。与JXARM9-2410-1开发板配套的光盘里有交叉编译工具链,版本号为2.95.3,解压在宿主机的/usr/local/arm/2.95.3目录下。具体情况可见参考文献1。在编译过程中,经常接触的工具除了交叉编译工具链外,还有一个就是GNU make程序。make完成开发项目中自动编译的工作。Make主要是通过Makefile来完成工作的。2.2.2建立tftp服务器为了使用tftp在宿主机和开发板之间传输文件,在宿主机上需要安装配
20、置tftp服务器。本文的宿主机安装的是RedHat9.0完整版,已经安装有tftp服务器程序,仅进行适当的配置即可。在宿主机上执行:$setup,然后选择System service,将其中的tftp一项选中,并去掉ipchains和iptable两项服务,还要选择Firewall configuration,选中No firewall。左后,退出setup,执行service xinetd restart命令以启动tftp服务。2.2.3配置NFS服务网络文件系统NFS极大地简化了开发与调试过程。有了NFS,开发板上的系统可以把宿主机的某目录当作本机上的目录甚至是根目录。这样,把宿主机上交叉
21、编译好的可执行文件复制到NFS目录中,在开发板上就可以运行该科执行文件。RedHat9.0完全安装版有NFS服务器程序,需要做一些配置才能使其可用。编辑/etc/exports文件,命令是$vi /etc/exports,在该空文件中添加 /tftpboot 192.168.1.46/255.255.255.0(rw),其中“/tftpboot”是共享的目录,也是目标系统的根文件系统目录:“192.168.1.46”表示该服务提供给所有的主机和网络。然后用命令$/etc/init.d/nfs restart重新启动NFS服务,刚才的设置就生效了。注意,在使用NFS服务之前应确认防火墙没有限制N
22、FS服务,并且在系统服务中portmap服务是启动运行的。2.2.4设置minicom在Linux操作系统下,使用minicom作为超级终端,因此首先必须正确配置超级终端。在宿主机端Linux下执行: $minicom s第一次使用时需要对串口进行配置,在选择“Serial port setup”,然后回车将出现配置菜单 图2.1 minicom配置2参照图2.1的配置,相应输入左边的“A”、“B”等字符将出现配置各自参数的界面,分别配置成上述设置。 设置完成后回车退出,并选择保存。然后选择Exit菜单,将启动minicom程序,此时请将JXARM9-2410的UART0连接到PC机串口并将J
23、XARM9-2410重新上电既可。3定制板上系统3.1开发板Linux内核Linux是一个类似于Unix的操作系统,不仅能够运行在PC上,在嵌入式系统方面也有很成熟的应用,已成为嵌入式操作系统的理想选择。将Linux内核移植到ARM的时候要打上ARM公司的补丁。创维特开发板上的系统打的是2.4.18-rmk-pxal补丁。该系统除了完成基本的内核移植外,还完善了大量外围设备的驱动。3.1.1移植Linux内核对于嵌入式Linux系统来说,内核移植工作主要是修改跟硬件平台相关的代码,一般不涉及Linux内核通用的程序。移植的难度也取决于两种硬件平台的差异。Linux对于特定的硬件平台的软件就是B
24、SP(Board Support Package)。由于Linux内核具备可移植性的特点,并且已经支持了各种体系结构的很多种目标板,很容易从中找到和自己硬件类似的目标板。参考内核已经支持的目标板来移植BSP,就如同使用模板开发程序。内核移植工作,主要就是添加开发板初始化和驱动程序的代码。这部分代码大部分是跟体系结构相关的,在arch目录下按照不同的体系结构管理。下面以ARM S3C2410平台为例,进行内核代码移植。添加开发板平台支持选项,主要修改以下几个文件:arch/arm/mach-s3c2410arch/arm/tools/mach-typesarch/arm/config.inarc
25、h/arm/Makefilearch/arm/boot/compressedinclude/asm-arm/arch-s3c2410移植开发板驱动程序S3C2410属于片上系统,处理器芯片具备串口、显示等外围接口的控制器。这样,参考板上的设备驱动程序多数可以直接使用。但不同的开发板可以使用不同的SDRAM、Flash、以太网接口芯片等。这就需要根据硬件修改或者开发驱动程序。3.1.2 Linux内核的配置和编译配套光盘中Linux源代码在/home/cvtech/jx2410/linux目录中。对于交叉开发,在编译之前要在顶层的Makefile中设置ARCH、CROSS_COMPILE和EXT
26、RA_VERSION变量,然后才能选择配置出特定的体系结构平台。ARM平台的例子如下:ARCH := armCROSS_COMPILE := arm-linux-gccEXTRA_VERSION :=(1)Make menuconfig 对源代码有相应了解后,进行内核的配置,在宿主机上使用命令:$ cd /home/cvtech/jx2410/linux$make menuconfig运行效果如图3.1所示:图3.1内核编译menuconfig界面本设计中只用到了调试模块、通信模块、人机交互模块等一些基本的模块,其他很多模块都没用到,如A/D及D/A模块,工业控制模块等。嵌入式系统中资源是非常
27、珍贵的,所以最好能以最小系统进行开发。从此需进行内核裁剪。在编译裁剪内核的过程中,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其他部分关系较远且不经常使用的部分功能代码编译成可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能不选;与内核关系紧密而且经常使用的部分功能代码直接编译到内核中。例如,本系统中没有用到USB接口,就可以在内核编译的时候将USB驱动模块不选,如图3.2所示从而减小了内核大小。需要指出的是,根据具体情况,本系统的根文件系统大于16MB,故需要修改内核所支持的ramdisk的大小
28、,这里将其修改为20MB。如图3.3所示。图3.2USB配置选项(2)Make dep选择还内核配置选项之后,退出内核配置主菜单,并保存配置文件。在Linux命令终端输入make dep 命令建立内核源代码依赖关系。(3)make zImage编译:可以通过make或者make zImage进行编译,他们的差别在于make zImage将make生成的核心进行压缩,并加入一段解压的启动代码。生成的Linux映像文件zImage保存在/home/cvtech/jx2410/linux/arch/arm/boot/目录下。图3.3Block device配置选项3.1.3烧写Linux映像zIma
29、ge成功编译Linux内核后,通过JX2410的u-boot将核心下载到SDRAM,另外内核启动过程将加载RAMDISK文件系统,因此下载zImage之前,开发板需加载了根文件系统ramdisk.gz。将zImage复制到宿主机/tftpboot/目录下,运行命令$ cp /home/cvtech/jx2410/linux/arch/arm/boot/zImage /tftpboot然后启动u-boot,并在u-boot中使用tftp下载ramdisk.gz和zImage。然后启动minicom: 命令为$minicom -s 将JXARM9-2410的串口0与PC的串口0连接,将JXARM9
30、-2410的网卡和PC的网卡使用直连网线进行连接,或将JXARM9-2410和PC机使用普通网线接入同一局域网。然后将JXARM9-2410上电,正常情况下将在minicom中看到BootLoader菜单界面。然后在BootLoader中按照如下提示进行: JX2410 # tftp 30800000 ramdisk.gz RTL8019AS Founded! MAC : 0x8-0x0-0x3e-0x26-0xa-0x5b MAC: 0x0:0x0:0x0:0x0:0x0:0x0 TFTP from server 192.168.1.180; our IP address is 192.16
31、8.1.45 Filename ramdisk.gz. Load address: 0x30800000 Loading: # done Bytes transferred = 4632504 (46afb8 hex) JX2410 # tftp 30008000 zImage RTL8019AS Founded! MAC : 0x8-0x0-0x3e-0x26-0xa-0x5b MAC: 0x0:0x0:0x0:0x0:0x0:0x0 TFTP from server 192.168.1.180; our IP address is 192.168.1.45 Filename zImage.
32、 Load address: 0x30008000 Loading: # # # done Bytes transferred = 871740 (d4d3c hex) JX2410 #go 30008000 Uncompressing Linux. done, booting the kernel. Linux version 2.4.18-rmk7-pxa1 (rootLinux-Lizm) (gcc version 2.95.3 20010315 (release) #133 四 11月 18 11:07:55 CST 2004 CPU: ARM/CIRRUS Arm920Tsid(wb
33、) revision 0 Machine: Samsung-SMDK2410 3.2制作板上根文件系统根文件系统为Linux提供了init程序、shell命令、设备文件节点和运行是的库文件等。内核在没有正确的根文件系统的情况下运行会出现panic错误信息而终止。3.2.1在一个已建好的文件系统上进行修改 进入/home/cvtech/jx2410/root目录并修改ramdisk文件系统: $cd /home/cvtech/jx2410/root/ 创建一个挂载ramdisk文件系统的目录:$mkdir rd 解压缩ramdisk.gz文件系统:$gunzip ramdisk.gz 在/hom
34、e/cvtech/jx2410/root/目录下会生成ramdisk,ramdisk为解开后的Linux的文件系统映像文件。 再将ramdisk文件系统映像文件mount到新建目录rd中: $mount o loop ramdisk rd/ 进入rd目录:$cd rd/ 列出目录中文件:$ls 在命令终端中会看到以下显示:bin dev etc lib linuette mnt proc qt sbin tmp usr var 这个就是Linux的文件系统,与目标板启动后的文件系统完全一样。 此时用户可以加入自己的应用程序。卸装文件系统: $umount rd 压缩新生成的ramdisk文件系
35、统映像文件: $gzip ramdisk ramdisk.gz得到的ramdisk.gz就是新生成的目标根文件系统。3.2.2建立根文件系统由于创维特提供的ramdisk文件系统中有12MB,不能满足本系统的要求,所以必须自己建立根文件系统,根据本系统所使用的MiniGUI软件的库文件大小并经过试验后得出将根文件系统大小设为18MB。详见参考文献2。(1)建立loop目录为根文件系统临时挂载点: $mkdir /mnt/loop (2)建立文件系统映象:$dd if=/dev/zero of=/tmp/ramdisk bs=1M count=18 注意可根据自己的需要建立大小合适的文件系统,更
36、改count大小即可。 此处以dd命令建立一个了一个18MB文件系统映象,存于/tmp/ramdisk,并以.dev/zero对它进行初始化。用这种方式对文件系统进行初始化,稍后当我们使用gzip命令压缩整个映象时,将让文件系统中未使用的部分获得最大压缩比。 (3)将/dev/loop0格式化为ext2文件系统: $mke2fs t ext2 F v m 0 /tmp/ramdisk (4)把ramdisk挂载到目录/mnt/loop上: $mount -o loop /tmp/ramdisk /mnt/loop (5)拷贝系统中所用到的库文件、头文件到ramdisk的lib和include目
37、录中,同时还有一些基本的应用程序、设备文件、init初始化文件等均放在ramdisk所挂载的/mnt/loop下。 (6)卸载文件系统,得到的/tmp/ramdisk就是文件系统映像: $umount /mnt/loop(7)压缩新生成的ramdisk文件系统映像文件: $gzip ramdisk ramdisk.gz就生成了新的根文件系统ramdisk.gz3.3设备驱动程序介绍系统调用时操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设
38、备进行操作。3.3.1LCD驱动本系统所用的图形系统MiniGUI访问图形设备是通过设备文件/dev/fb进行的,这是LCD的设备文件,该文件的操作是在LCD驱动程序中实现的。LCD驱动的主要工作是:首先初始化LCD控制器,分配显示缓冲区;第二,编写fb_ops结构体中的成员函数;最后实现文件操作结构体file_operations中的主要函数。设备文件/dev/fb对应一个帧缓冲设备Framebuffer。3.3.2网络驱动Linux的网络系统主要是基于BSD Unix的socket机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数据和接收数据
39、的缓存,提供流量控制机制,提供多协议的支持。Linux中,有一个网络设备抽象接口,这个接口提供了对所有网络设备的操作方法。由以dev_base为头指针的设备链表来集体管理所有网路设备,其中每个元素代表一个网络设备接口。该接口由数据结构struct device来表示网路设备在内核中的运行情况,所有的设备都由该结构描述并建立在统一的接口之上。这些设备既可以是纯软件的网络设备接口,也可以是具体的硬件网络设备接口。数据结构device中有很多访问网络设备的基本函数接口,包括提供设备初始化和系统注册用的init函数、打开和关闭网络设备的open和stop函数、处理数据包发送的函数hard_start_
40、xmit以及中断处理函数等。4本系统支撑软件的构建本文所述的系统用到的一个主要软件是MiniGUI。MiniGUI用于图形用户界面设计。本章简要介绍了这个软件,建立了它在宿主机和开发板上的运行环境。4.1MiniGUI简介MiniGUI是一个适合用于嵌入式系统的、功能强大的、轻量级的图形用户界面支持系统,是由北京飞漫软件技术有限公司拥有版权并主持和维护的自由软件。相关信息可访问网站。4.2MiniGUI的安装及配置4.2.1MiniGUI的安装MiniGUI的安装主要是将MiniGUI函数库源代码、资源文件进行编译,然后安装到系统指定的目录下。安装操作步骤说明如下:解压libminigui-1
41、.3.3.tar.gz和minigui-res-1.3.3.tar.gz文件$ cd /home/minigui$tar zxf lib*.gz$tar zxf mini*.gz安装MiniGUI资源文件$ cd minigui*$make install安装MiniGUI,默认安装路径为/usr/local/lib目录下$./configure$make$make install4.2.2MiniGUI的本地运行环境设置MiniGUI默认配置实用NATIVE/FBCON图形引擎,这个图形引擎是建立在Framebuffer基础上的,所以在Linux系统下使用MiniGUI要激活Framebuf
42、fer设备驱动程序。使用gedit来编辑menu.lst文件$ cd /boot/grub$ gedit menu.lst在Linux引导的选项中,在以“Kernel”开头的一行的最后添加“vga=0x0317”重新启动RedHat Linux9.0操作系统,倘若一切正常,在Linux内核引导过程中将会看到屏幕左上角出现一个企鹅图标。为了使MiniGUI应用程序能正确找到需要的MiniGUI函数库,需要设置系统的默认路径,即修改/etc/ld.so.conf文件,在此文件的最后一行增加目录“/usr/local/lib”,然后保存文件。修改ld.so.conf后,需要使用ldconfig命令更
43、新共享函数库系统的缓冲。使用命令:$/sbin/ldconfig。4.3MiniGUI的移植要在ARM嵌入式系统中运行MiniGUI,首先目标板要提供有足够的硬件资源,然后为目标板编写图形引擎(GAL)和输入引擎(IAL);接下来就可以配置MiniGUI,交叉编译MiniGUI函数库及其应用程序;编译通过后,就可以在目标板上搭建MiniGUI应用环境;最后就可以启动MiniGUI应用程序了。因为JXARM9-2410-1目标板实现了FrameBuffer,可直接在目标板上使用FBCON图引擎而不必自己编写。移植MiniGUI的主要工作就是交叉编译函数库、资源和应用程序。4.3.1交叉编译zli
44、b库$ cd /usr/bin$ mv gcc gcc_back$ ln -s /usr/local/arm/2.95.3/bin/arm-linux-gcc ./gcc$ mv ld ld_back$ ln -s /usr/local/arm/2.95.3/bin/arm-linux-ld ./ld修改完成后回到zlib-1.2.3 目录下$ ./configure -prefix=/usr/local/arm/2.95.3/arm-linux/ -shared $make$ make install安装成功后检查目录 /usr/local/arm/2.95.3/arm-linux/的inc
45、lude和lib目录,include 中有 zlib.h 之类的头文件,lib 中有 libz.so.1.2.3 。再将刚才修改了gcc该过来。4.3.2交叉编译png库$ cp scripts/makefile.linux Makefile$ vi Makefile 需要修改以下几个地方:CC=arm-linux-gccprefix=/usr/local/arm/2.95.3/arm-linuxZLIBLIB=/usr/local/arm/2.95.3/arm-linux/lib ZLIBINC=/usr/local/arm/2.95.3/arm-linux/include保存,然后交叉编译$make$make install 4.3.3交叉编译jpeg库$ ./configure -enable-shared -enable-static$ make clean 清除掉,然后执行交叉编译$ ./configure -prefix=/usr/local/arm/2.95.3/arm-linux/CC=arm