毕业设计(论文)-基于嵌入式Linux的银行排队系统.doc

上传人:椰子壳 文档编号:3284080 上传时间:2019-08-08 格式:DOC 页数:41 大小:1.15MB
返回 下载 相关 举报
毕业设计(论文)-基于嵌入式Linux的银行排队系统.doc_第1页
第1页 / 共41页
毕业设计(论文)-基于嵌入式Linux的银行排队系统.doc_第2页
第2页 / 共41页
毕业设计(论文)-基于嵌入式Linux的银行排队系统.doc_第3页
第3页 / 共41页
毕业设计(论文)-基于嵌入式Linux的银行排队系统.doc_第4页
第4页 / 共41页
毕业设计(论文)-基于嵌入式Linux的银行排队系统.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《毕业设计(论文)-基于嵌入式Linux的银行排队系统.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于嵌入式Linux的银行排队系统.doc(41页珍藏版)》请在三一文库上搜索。

1、学学 生生 毕毕 业业 设设 计(论计(论 文)文) 课题名称课题名称 基于嵌入式基于嵌入式 Linux 的的银银行排行排队队系系统统 姓姓 名名 学学 号号 院院 系系 计计算机科学系算机科学系 专专 业业 计计算机科学与技算机科学与技术术 指导教师指导教师 20102010 年年 6 6 月月 1818 日日 2010届学生届学生 毕业设计毕业设计(论论文文)材料材料 (四)(四) 1 I 湖南城市学院本科毕业设计(论文)诚信声明 本人郑重声明:所呈交的本科毕业设计(论文),是本人在指导 老师的指导下,独立进行研究工作所取得的成果,成果不存在知 识产权争议,除文中已经注明引用的内容外,本设

2、计(论文)不含 任何其他个人或集体已经发表或撰写过的作品成果。对本文的研 究做出重要贡献的个人和集体均已在文中以明确方式标明。本人 完全意识到本声明的法律结果由本人承担。 本科毕业设计(论文)作者签名: 二一年六月十八日 II 目 录 摘 要1 关键字1 ABSTRACT.2 KEYWORDS.2 1 绪论3 1.1 引言 .3 1.2 嵌入式银行排队系统概述 .3 1.3 论文的主要工作 .4 2 系统平台分析6 2.1 开发板芯片 S3C2410X 简介6 2.2 开发环境 .6 2.2.1 交叉编译工具链.6 2.2.2 建立 tftp 服务器 .7 2.2.3 配置 NFS 服务7 2

3、.2.4 设置 minicom7 3 定制板上系统9 3.1 开发板 LINUX内核.9 3.1.1 移植 Linux 内核 .9 3.1.2 Linux 内核的配置和编译 10 3.1.3 烧写 Linux 映像 zImage.12 3.2 制作板上根文件系统 .14 3.2.1 在一个已建好的文件系统上进行修改.14 3.2.2 建立根文件系统.15 3.3 设备驱动程序介绍 .15 3.3.1 LCD 驱动16 3.3.2 网络驱动.16 4 本系统支撑软件的构建17 4.1 MINIGUI 简介 .17 4.2 MINIGUI 的安装及配置 .17 4.2.1 MiniGUI 的安装.

4、17 4.2.2 MiniGUI 的本地运行环境设置.17 4.3 MINIGUI 的移植 .18 4.3.1 交叉编译 zlib 库.18 III 4.3.2 交叉编译 png 库.19 4.3.3 交叉编译 jpeg 库19 4.3.4 交叉编译 popt 库19 4.3.5 交叉编译 libmingui 19 4.4 MINIGUI 编程基础 .22 5 服务器与客户端的设计与实现23 5.1 服务器端与 MINIGUI 客户端的设计与实现 23 5.1.1 服务器端的设计与实现.23 5.1.2 MiniGUI 客户端的设计与实现.25 5.2 服务端与客户端通信设计与实现 27 5.

5、2.1 UDP 服务端的设计与实现27 5.2.2 UDP 客户端的设计与实现29 6 系统用户使用指南32 结论:34 参考文献:34 致 谢:35 1 基于嵌入式基于嵌入式 LinuxLinux 的银行排队系统的银行排队系统 (湖南城市学院计算机科学系 2010 届计算机科学与技术专业,益阳,413000) 摘 要:本论文研究和解决的课题是设计一个基于 Linux 的嵌入式银行排队系统。 首先介绍了嵌入式银行排队系统的优点和应用前景。然后,进行了硬件平台的介绍,搭建 软件开发平台。再次,介绍 u-boot,编译内核,定制根文件系统。安装和交叉编译了图形 系统 MiniGUI,之后,分析了

6、MiniGUI、Socket 和多线程的编程以及如何将 Socket 和多线 程操作函数嵌入到 MiniGUI 程序中进行程序设计。最后,总结了本设计中的缺陷并提出相 应解决方法。 关键字:嵌入式系统;MiniGUI;内核;Linux;Socket;多线程 2 The banks of the queuing system based on embedded Linux ZENG Jian-tao (2010 Session Student of The Computer Science and Technology Major Of Department Of Computer Scienc

7、e Hunan City University, Yiyang, 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

8、 introduced hardware platform, 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

9、 graphics system of MiniGUI through 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 embedd

10、ed in the MiniGUI Programming. In conclusion, this thesis summed up the deficiencies in design and the corresponding solution. Keywords: embedded systems;MiniGUI;kernel;Linux;Socket;Thread 3 1 绪论 1.1 引言 Internet 与网络的迅速普及应用,并向家庭领域不断扩展,使消费电子、计 算机、通信(3C)一体化趋势日趋明显,嵌入式系统再度成为研究与应用的热 点。实时操作系统在多媒体通信、在线事务处理、

11、生产过程控制、交通控制等 各个领域得到广泛的应用,因而越来越引起人们的重视。嵌入式实时 Linux 操 作系统以价格低廉、功能强大又易于移植而正在被广泛采用,成为新兴的力量, 所以,众多商家纷纷转向了嵌入式实时 linux 的研究。 所谓嵌入式操作系统(Embedded System)是指以应用为中心、以计算机技 术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功 耗严格要求的专用计算机系统。嵌入式系统主要由嵌入式处理器、相关支撑硬 件、嵌入式操作系统及应用软件等组成。 嵌入式系统的应用将越来越多样化,为越来越多领域的用户提供最佳的选 择方案。将嵌入式系统应用到银行排队管理系

12、统中,可有效提高银行的服务质 量。而且根据嵌入式系统对产品要求小型化、低功耗、专用性等特点,可断言 嵌入式技术将在排队信息化的过程中发挥重要作用。 1.2 嵌入式银行排队系统概述 嵌入式银行排队系统代表着当今银行管理解决方案中最顶尖的领先科技, 它是一种综合运用计算机、网络、多媒体、通讯控制的高新技术产品,以取代 各类服务性窗口传统的由顾客站立排队的方式,改由计算机系统代替客户进行 排队的产品。它不仅适用于银行服务业,同时也适用于各类窗口服务行业。目 前在国外已经广泛应用于金融、医院、电信以及各级政府对外服务窗口等行业。 使用排队系统,一方面可消除客户长时间“站队”的辛苦,同时防止“站错队”

13、、 “插队”的情况,为顾客提供更加温馨、人性化的服务,全面改善服务质量和企 业形象,另一方面更可以依据统计数据调整业务分配、挖掘潜力、合理安排窗 口服务,减少群众的等候时间,提高办事效率。 同时,排队系统支持多种形式 的排队,可依照业务或客户的种类进行排队。支持对特殊对象(如残疾人、老 4 人等)的优先服务。支持多道手续的自动转移。支持多套派号机及打印机以满 足业务大厅有多个出入口的自然环境。 由于人力物力财力等资源的有限,本文设计并实现了一个功能简单的银行 排队系统,基于该系统可以容易过渡到实用的银行排队系统。在系统的实现中 涉及到许多技术,其中主要有嵌入式技术、socket 通信技术、多线

14、程技术、用 户图形界面编程技术等。 排队系统一般涉及到数据通信,比如取号机与窗口之间、窗口与大屏幕之 间的通信,所以绝大部分排队系统都采用 socket 技术进行通信。在 socket 网络 编程中,为把接收数据和发送数据分开处理,将会采用多线程技术来实现。另 外,为了方便用户的使用,还要设计一个人性化的图形用户界面。 本文设计的系统中用 socket 进行网络通信,操作系统上选用了 Linux,用 户图形界面使用了 MiniGUI。在硬件上,选用了低功耗、高性能的 ARM9 处理 器。 银行排队系统由客户端、计算机网络和服务器组成。客户端采用嵌入式技 术实现,是本系统开发的重点和难点,它的服

15、务对象是排队等候的顾客和营业 窗口的营业员,顾客通过取号机选择自己需要在银行办理的业务,并取得排队 的队列序号。服务器充当信息管理员的角色,系统中的所有信息都从客户端先 发到服务器上,再由服务器判断处理再转发到指定的客户端。服务器相当于整 个排队系统的中枢神经,起到了协调全局的作用。 银行引进排队系统,具有重大的意义:首先,解决顾客排队的烦恼,有效 地提高银行服务质量,同时可以监控和预计顾客流量,实时掌握服务情况,提 供有用管理信息,优化资源组合,提高劳动生产率;可根据不同的客户要求灵 活配置该系统。银行排队系统具有不可抵赖性,每人一个号码,服务前可验证 排队号码,可以有效的防止插队、偷窥密码

16、等不良现象。可以有效的防止客户 与客户之间、客户与工作人员之间的各种误会、不满和纠纷,也可以有效的保 护客户的隐私。 1.3 论文的主要工作 本文是在武汉创维特提供的 JXARM9-2410-1 开发板及其软件系统的基础上 完成的。本文的主要工作包括: 5 第一:搭建开发平台。安装 Linux 和 Windows 双操作系统,启动 NFS 和 TFTP 服务,配置超级终端 mincom。 第二:对开发板上原有系统进行改造。在宿主机的 RedHat Linux 操作系统 下安装 Linux 发行包以及交叉编译器 arm-linux-gcc。然后对 Linux 内核进行配 置(make menuc

17、onfig)并选择适合本系统的配置选项,配置完成后进行编译生 成 Linux 映像文件 zImage。本实验主要应用 MiniGUI,因此在开发板根文件系 统中需要添加运行 MiniGUI 用到的相应库文件和头文件。 第三:在宿主机上安装和移植 MiniGUI。开发板上运行的软件需在宿主机 上用交叉编译工具链 arm-linux-gcc 进行交叉编译,之后下载到开发板运行。 第四:使用 MiniGUI 并编写 MiniGUI 程序,分配完成宿主机端和开发板用 户图形界面的应用程序。 第五:总结了论文的成果。指出了本设计中的一些不足之处并提出了若干 解决方案。 6 2 系统平台分析 JXARM9

18、-2410-1 教学实验系统的硬件部分包括基本模块、调试模块、通信 模块、人机交互模块、A/D 及 D/A 模块、工业控制模块、IDE/CF/SD/MMC 接 口模块、GPRS 模块、GPS 模块和扩展模块。目标处理器采用 Samsung 公司的 S3C2410X 微处理器。主板包括 3 个 UART 接口,标准 JTAG 接口,10M/100M 以太网卡,2 个 USB HOST 接口,5.7 英寸、STN 256 色 LCD 显示器/触摸屏, 640X480 的分辨率。系统具有体积小、功耗低、处理能力强等特点。 2.1 开发板芯片 S3C2410X 简介 S3C2410X 微处理器是一款有

19、 Samsung 公司为手持设备设计的低功耗、高 集成度的机遇 ARM920T 核的微处理器。为了降低系统总成本和减少外围器件, 这款芯片中还集成了以下的部件:16KB 指令 Cache、16KB 数据 Cache、MMU、外部存储控制器、LCD 控制器(STN 和 TFT) 、NAND Flash 控 制器、4 个 DMA 通道、3 个 UART 通道、1 个 I2C 总线控制器、1 个 I2S 总线控 制器,以及 4 个 PWM 定时器和 1 个内部定时器、通用 I/O 口、实时时钟、8 通 道 10 位 ADC 和触摸屏接口、USB 主、USB 从、SD/MMC 卡接口等。现在它 广泛应

20、用于 PDA、移动通信、路由器、工业控制等领域。 2.2 开发环境 绝大多数的 Linux 软件开发都是以本机开发方式进行的。由于嵌入式系统 一般资源都比较紧张,不能在本机(即开发板)运行开发工具,因此,嵌入式 系统的开发采用一种叫做交叉编译调试的方式。为了进行交叉编译与调试,需 要在宿主机(运行编译与调试工具的机器)上构建一些工具与搭建合适的环境, 比如安装交叉编译工具链,建立 tftp 服务器,构建网络文件系统 nfs 等。 2.2.1 交叉编译工具链 交叉编译工具链的目的是为了在一个平台体系结构下能编译、链接、处理 和调试另一个平台体系结构下的程序,使得编译生成的程序能够在另一个平台 下

21、运行。Linux 使用的是 GNU 的工具链,包括:binutils,gcc,glibc 等。 与 JXARM9-2410-1 开发板配套的光盘里有交叉编译工具链,版本号为 2.95.3,解压在宿主机的/usr/local/arm/2.95.3 目录下。具体情况可见参考文献1。 7 在编译过程中,经常接触的工具除了交叉编译工具链外,还有一个就是 GNU make 程序。make 完成开发项目中自动编译的工作。Make 主要是通过 Makefile 来完成工作的。 2.2.2 建立 tftp 服务器 为了使用 tftp 在宿主机和开发板之间传输文件,在宿主机上需要安装配置 tftp 服务器。本文

22、的宿主机安装的是 RedHat9.0 完整版,已经安装有 tftp 服务器 程序,仅进行适当的配置即可。 在宿主机上执行:$setup,然后选择 System service,将其中的 tftp 一项选 中,并去掉 ipchains 和 iptable 两项服务,还要选择 Firewall configuration,选中 No firewall。左后,退出 setup,执行 service xinetd restart 命令以启动 tftp 服务。 2.2.3 配置 NFS 服务 网络文件系统 NFS 极大地简化了开发与调试过程。有了 NFS,开发板上的 系统可以把宿主机的某目录当作本机上的

23、目录甚至是根目录。这样,把宿主机 上交叉编译好的可执行文件复制到 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 服务

24、,刚才的设置就生效了。注意, 在使用 NFS 服务之前应确认防火墙没有限制 NFS 服务,并且在系统服务中 portmap 服务是启动运行的。 2.2.4 设置minicom 在Linux操作系统下,使用minicom作为超级终端,因此首先必须正确配置 超级终端。在宿主机端Linux下执行: $minicom s 第一次使用时需要对串口进行配置,在选择“Serial port setup”,然后回车将 出现配置菜单 8 图2.1 minicom配置2 参照图 2.1 的配置,相应输入左边的“A”、“B”等字符将出现配置各自参数的界 面,分别配置成上述设置。 设置完成后回车退出,并选择保存。然后

25、选择 Exit 菜单,将启动 minicom 程序,此时请将 JXARM9-2410 的 UART0 连接到 PC 机 串口并将 JXARM9-2410 重新上电既可。 9 3 定制板上系统 3.1 开发板 Linux 内核 Linux 是一个类似于 Unix 的操作系统,不仅能够运行在 PC 上,在嵌入式 系统方面也有很成熟的应用,已成为嵌入式操作系统的理想选择。将 Linux 内 核移植到 ARM 的时候要打上 ARM 公司的补丁。创维特开发板上的系统打的是 2.4.18-rmk-pxal 补丁。该系统除了完成基本的内核移植外,还完善了大量外围 设备的驱动。 3.1.1 移植 Linux

26、内核 对于嵌入式 Linux 系统来说,内核移植工作主要是修改跟硬件平台相关的 代码,一般不涉及 Linux 内核通用的程序。移植的难度也取决于两种硬件平台 的差异。Linux 对于特定的硬件平台的软件就是 BSP(Board Support Package) 。 由于 Linux 内核具备可移植性的特点,并且已经支持了各种体系结构的很 多种目标板,很容易从中找到和自己硬件类似的目标板。参考内核已经支持的 目标板来移植 BSP,就如同使用模板开发程序。内核移植工作,主要就是添加 开发板初始化和驱动程序的代码。这部分代码大部分是跟体系结构相关的,在 arch 目录下按照不同的体系结构管理。下面以

27、 ARM S3C2410 平台为例,进行 内核代码移植。 添加开发板平台支持选项,主要修改以下几个文件: arch/arm/mach-s3c2410 arch/arm/tools/mach-types arch/arm/config.in arch/arm/Makefile arch/arm/boot/compressed include/asm-arm/arch-s3c2410 移植开发板驱动程序 S3C2410 属于片上系统,处理器芯片具备串口、显示等外围接口的控制器。 这样,参考板上的设备驱动程序多数可以直接使用。但不同的开发板可以使用 不同的 SDRAM、Flash、以太网接口芯片等。

28、这就需要根据硬件修改或者开发 10 驱动程序。 3.1.2 Linux 内核的配置和编译 配套光盘中 Linux 源代码在/home/cvtech/jx2410/linux 目录中。对于交叉开 发,在编译之前要在顶层的 Makefile 中设置 ARCH、CROSS_COMPILE 和 EXTRA_VERSION 变量,然后才能选择配置出特定的体系结构平台。ARM 平 台的例子如下: ARCH := arm CROSS_COMPILE := arm-linux-gcc EXTRA_VERSION := (1)Make menuconfig 对源代码有相应了解后,进行内核的配置,在宿主机上使用命

29、令: $ cd /home/cvtech/jx2410/linux $make menuconfig 运行效果如图 3.1 所示: 图 3.1 内核编译 menuconfig 界面 本设计中只用到了调试模块、通信模块、人机交互模块等一些基本的模块, 11 其他很多模块都没用到,如 A/D 及 D/A 模块,工业控制模块等。嵌入式系统中 资源是非常珍贵的,所以最好能以最小系统进行开发。从此需进行内核裁剪。 在编译裁剪内核的过程中,大部分选项可以使用其缺省值,只有小部分需 要根据用户不同的需要选择。选择的原则是将与内核其他部分关系较远且不经 常使用的部分功能代码编译成可加载模块,有利于减小内核的长

30、度,减小内核 消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能不选; 与内核关系紧密而且经常使用的部分功能代码直接编译到内核中。例如,本系 统中没有用到 USB 接口,就可以在内核编译的时候将 USB 驱动模块不选,如 图 3.2 所示从而减小了内核大小。需要指出的是,根据具体情况,本系统的根 文件系统大于 16MB,故需要修改内核所支持的 ramdisk 的大小,这里将其修改 为 20MB。如图 3.3 所示。 图 3.2 USB 配置选项 (2)Make dep 选择还内核配置选项之后,退出内核配置主菜单,并保存配置文件。在 Linux 命令终端输入 make dep 命令

31、建立内核源代码依赖关系。 (3)make zImage 12 编译:可以通过 make 或者 make zImage 进行编译,他们的差别在于 make zImage 将 make 生成的核心进行压缩,并加入一段解压的启动代码。生成的 Linux 映像文件 zImage 保存在/home/cvtech/jx2410/linux/arch/arm/boot/目录下。 图 3.3 Block device 配置选项 3.1.3 烧写 Linux 映像 zImage 成功编译 Linux 内核后,通过 JX2410 的 u-boot 将核心下载到 SDRAM,另 外内核启动过程将加载 RAMDISK

32、 文件系统,因此下载 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-2410的网卡和PC的网卡使用直连网线进行连接,或将 JXARM9-2410和P

33、C机使用普通网线接入同一局域网。然后将JXARM9-2410上 电,正常情况下将在minicom中看到BootLoader菜单界面。然后在BootLoader中 按照如下提示进行: JX2410 # tftp 30800000 ramdisk.gz 13 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 ramdisk.gz. Load ad

34、dress: 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. Load address: 0x30008000 Loading

35、: # # # 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) revision 0 14 Machine: Samsung-S

36、MDK2410 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 在/home/cvtech/jx24

37、10/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文件系统映像文件: $g

38、zip ramdisk ramdisk.gz 得到的 ramdisk.gz 就是新生成的目标根文件系统。 15 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 注意可根据自己的需要建

39、立大小合适的文件系统,更改 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)拷贝系统中所用到

40、的库文件、头文件到 ramdisk 的 lib 和 include 目录 中,同时还有一些基本的应用程序、设备文件、init 初始化文件等均放在 ramdisk 所挂载的/mnt/loop 下。 (6)卸载文件系统,得到的/tmp/ramdisk 就是文件系统映像: $umount /mnt/loop (7)压缩新生成的ramdisk文件系统映像文件: $gzip ramdisk ramdisk.gz 就生成了新的根文件系统 ramdisk.gz 3.3 设备驱动程序介绍 系统调用时操作系统内核和应用程序之间的接口,设备驱动程序是操作系 统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了

41、硬件的细节, 这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通 文件一样对硬件设备进行操作。 16 3.3.1 LCD 驱动 本系统所用的图形系统 MiniGUI 访问图形设备是通过设备文件/dev/fb 进行 的,这是 LCD 的设备文件,该文件的操作是在 LCD 驱动程序中实现的。LCD 驱动的主要工作是:首先初始化 LCD 控制器,分配显示缓冲区;第二,编写 fb_ops 结构体中的成员函数;最后实现文件操作结构体 file_operations 中的主要 函数。设备文件/dev/fb 对应一个帧缓冲设备 Framebuffer。 3.3.2 网络驱动 Linux 的

42、网络系统主要是基于 BSD Unix 的 socket 机制。在系统和驱动程序 之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数 据和接收数据的缓存,提供流量控制机制,提供多协议的支持。 Linux 中,有一个网络设备抽象接口,这个接口提供了对所有网络设备的 操作方法。由以 dev_base 为头指针的设备链表来集体管理所有网路设备,其中 每个元素代表一个网络设备接口。该接口由数据结构 struct device 来表示网路设 备在内核中的运行情况,所有的设备都由该结构描述并建立在统一的接口之上。 这些设备既可以是纯软件的网络设备接口,也可以是具体的硬件网络设备接口

43、。 数据结构 device 中有很多访问网络设备的基本函数接口,包括提供设备初 始化和系统注册用的 init 函数、打开和关闭网络设备的 open 和 stop 函数、处理 数据包发送的函数 hard_start_xmit 以及中断处理函数等。 17 4 本系统支撑软件的构建 本文所述的系统用到的一个主要软件是 MiniGUI。MiniGUI 用于图形用户 界面设计。本章简要介绍了这个软件,建立了它在宿主机和开发板上的运行环 境。 4.1 MiniGUI 简介 MiniGUI 是一个适合用于嵌入式系统的、功能强大的、轻量级的图形用户 界面支持系统,是由北京飞漫软件技术有限公司拥有版权并主持和维

44、护的自由 软件。相关信息可访问 网站。 4.2 MiniGUI 的安装及配置 4.2.1 MiniGUI 的安装 MiniGUI 的安装主要是将 MiniGUI 函数库源代码、资源文件进行编译,然 后安装到系统指定的目录下。安装操作步骤说明如下: 解压 libminigui-1.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,默认安装路径为/u

45、sr/local/lib 目录下 $./configure $make $make install 4.2.2 MiniGUI 的本地运行环境设置 MiniGUI 默认配置实用 NATIVE/FBCON 图形引擎,这个图形引擎是建立 在 Framebuffer 基础上的,所以在 Linux 系统下使用 MiniGUI 要激活 Framebuffer 设备驱动程序。 使用 gedit 来编辑 menu.lst 文件 18 $ cd /boot/grub $ gedit menu.lst 在 Linux 引导的选项中,在以“Kernel”开头的一行的最后添加“vga=0x0317” 重新启动 Re

46、dHat Linux9.0 操作系统,倘若一切正常,在 Linux 内核引导过 程中将会看到屏幕左上角出现一个企鹅图标。 为了使 MiniGUI 应用程序能正确找到需要的 MiniGUI 函数库,需要设置系 统的默认路径,即修改/etc/ld.so.conf 文件,在此文件的最后一行增加目录 “/usr/local/lib”,然后保存文件。修改 ld.so.conf 后,需要使用 ldconfig 命令更新 共享函数库系统的缓冲。使用命令:$/sbin/ldconfig。 4.3 MiniGUI 的移植 要在 ARM 嵌入式系统中运行 MiniGUI,首先目标板要提供有足够的硬件 资源,然后为

47、目标板编写图形引擎(GAL)和输入引擎(IAL) ;接下来就可以 配置 MiniGUI,交叉编译 MiniGUI 函数库及其应用程序;编译通过后,就可以 在目标板上搭建 MiniGUI 应用环境;最后就可以启动 MiniGUI 应用程序了。因 为 JXARM9-2410-1 目标板实现了 FrameBuffer,可直接在目标板上使用 FBCON 图引擎而不必自己编写。移植 MiniGUI 的主要工作就是交叉编译函数库、资源 和应用程序。 4.3.1 交叉编译 zlib 库 $ cd /usr/bin $ mv gcc gcc_back $ ln -s /usr/local/arm/2.95.3

48、/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 19 安装成功后检查目录 /usr/local/arm/2.95.3/arm-linux/的 include 和 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-gcc prefix=/usr/local/arm/2.95.3/arm-linux ZLIBLIB=/usr/local/arm/2.95.3/arm-linux/lib ZLIBINC=/usr/local/arm/2.95.3/arm-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1