基于ARM的收款保险箱系统设计与实现 - 图文

更新时间:2023-03-08 08:10:59 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学 位 论 文 独 创 性 说 明

本人郑重声明:所呈交的学位论文是我个人在导师指导下进行的研究工作及其取得研究成果。尽我所知,除了文中加以标注和致谢的地方外,论文中不包含其他人或集团已经公开发表或撰写过的研究成果,也不包含为获得西安科技大学或其他教育机构的学位或证书所使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确说明并表示了谢意。

学位论文作者签名: 日期:

学 位 论 文 知 识 产 权 声 明 书

本人完全了解学校有关保护知识产权的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属于西安科技大学。学校有权保留并向国家有关部门或机构送交论文的复印件和电子版。本人允许论文被查阅和借阅。学校可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。同时本人保证,毕业后结合学位论文研究课题在撰写的文章一律注明作者单位为西安科技大学。

保密论文待解密后适用本声明。

学位论文作者签名: 指导教师签名:

年 月 日

论文题目:基于ARM的收款保险箱系统设计与实现 专 业:通信与信息系统

硕 士 生:苏初旭 (签名) 指导教师:张释如 (签名)

摘 要

国内外现金交易量比较大的场所很多,如:大型超市、百货商场、大规模收费站、宾馆、医院等,每天都需要花费大量的人力物力用来清点、核实和存储现金。这些场所涉及大量的现金交易,难免会出现工作效率低、现金流失等问题。从经济和性能等方面考虑,本文设计的收款保险箱结合了ATM (Automatic Teller Machine)自动取款机和POS(Point of Sale)收款机的优点,具有成本低、小型化、高性能、高可靠性和操作方便等优点,具有收钞、验钞、存款、打印凭条和网页管理等功能,解决了市场现金交易出现的难题。

ARM结构体系具有强大的控制功能,在嵌入式系统中发挥了重要的作用,ARM处理器和嵌入式Linux的结合变得越来越紧密,并且在嵌入式领域中得到广泛的应用。本文研究基于ARM + Linux操作系统的嵌入式收款保险箱。首先,根据收款保险箱的功能需求介绍了总体设计方案,然后根据总体设计方案逐步展开,分别介绍了收款保险箱的硬件和软件实现。在硬件和软件的设计中,均采用模块化的设计方法,使各模块之间相对独立,便于系统的维护与改进。

硬件、软件功能的反复测试证明了收钞处理和打印凭条的数据准确性,数据库的网页浏览也验证了系统的实时性。总之整个系统的安全性和稳定性高,基本满足了客户的需求。目前该收款保险箱已经投入小批量生产。

关键字:现金交易;收款保险箱;ARM处理器;嵌入式Linux;数据库 研究类型:应用研究

Subject: Design and Implementation of Collected Safe Based on ARM Specialty: Communication and Information System

Name: Su Chuxu (Signature) Instructor: Zhang Shiru (Signature) ABSTRACT

There are many big places of cash transactions at home and abroad, such as large supermarkets, department stores, large-scale toll stations, hotels, hospitals etc. These places spend a lot of manpower and material resources to count, check and store cash. They involve a large number of cash transactions, so it will inevitably lead to low efficiency and cash loss problems. Taking the economic and performance into consideration, the collected safety of this paper design combines with the advantages of ATM and POS, it has the advantages of low cost, miniaturization, high performance, high reliability and convenient operation, etc. It also has the functions of receiving notes, checking money, depositing, printing receipts and web management and so on. It solves the problems of cash transactions in the market.

The ARM structure has strong control function. It plays an important role in the embedded system. The combination of ARM processor and embedded Linux becomes more and more closely, and it is widely used in the embedded fields. This paper researches the embedded collected safe which based on ARM and Linux operating system. Firstly, according to the function requirement of collected safe, this paper introduces the overall design scheme. And then, according to the total design scheme are introduced gradually, this paper introduces the implementation of the collected safe’s hardware and software. The design of the software and hardware adopts the design method of modular. It makes relatively independent among modules and it is convenient for people to maintain and improve the system.

Repeated tests of hardware and software proved data accuracy of the bill receiving and printing a receipt. The database which is browsed through the web also proved the real time of the system. In brief, the whole system has a high security and stability, it basically meet the customer's demand. At present, it has already been put into small batch production.

Key Words: Cash Transactions; Collected Safe; ARM Processor; Embedded Linux;

Database

Thesis: Application Research

目 录

目 录

1 绪 论.................................................................................................................................... 1

1.1 研究背景与意义 .......................................................................................................... 1 1.2 国内外发展现状 .......................................................................................................... 2

2 收款保险箱总体设计方案 ............................................................................................ 4

2.1 功能需求分析 .............................................................................................................. 4 2.2 硬件整体框图及设计方案 .......................................................................................... 5

2.2.1 嵌入式系统的开发流程 .................................................................................... 5 2.2.2 硬件的整体设计 ................................................................................................ 7 2.3 软件整体架构及设计方案 .......................................................................................... 8

2.3.1 GUI界面的设计方案......................................................................................... 9 2.3.2 嵌入式数据库的设计方案 .............................................................................. 10 2.3.3 应用软件的设计方案 .......................................................................................11 2.4 本章小结 .................................................................................................................... 12

3 收款保险箱硬件系统设计 .......................................................................................... 13

3.1 系统的硬件组成 ........................................................................................................ 13 3.2 核心电路设计 ............................................................................................................ 13

3.2.1 微处理器模块 .................................................................................................. 14 3.2.2 电源管理模块 .................................................................................................. 14 3.2.3 实时时钟模块 .................................................................................................. 15 3.2.4 存储模块 .......................................................................................................... 16 3.2.5 显示模块 .......................................................................................................... 16 3.2.6 IC卡模块 .......................................................................................................... 17 3.2.7 外部扩展模块 .................................................................................................. 18 3.3 本章小结 .................................................................................................................... 19

4 收款保险箱系统软件平台设计................................................................................. 20

4.1 收款保险箱系统软件平台的组成 ............................................................................ 20 4.2 软件平台的开发流程 ................................................................................................ 21 4.3 Linux操作系统在AT91RM9200上的移植分析 ..................................................... 21

4.3.1交叉开发环境的建立 ....................................................................................... 21 4.3.2 Bootloader的开发设计 .................................................................................... 21 4.3.3 Linux内核的定制 ............................................................................................ 24 4.3.4 根文件系统的建立 .......................................................................................... 26

I

西安科技大学硕士学位论文

4.4 GUI图形界面的设计与开发..................................................................................... 27

4.4.1 MiniGUI的功能特点 ....................................................................................... 28 4.4.2 MiniGUI的优势 ............................................................................................... 29 4.4.3 MiniGUI图形界面的开发 ............................................................................... 30 4.5 嵌入式数据库的设计与开发 .................................................................................... 31 4.6 本章小结 .................................................................................................................... 32

5 收款保险箱应用软件设计 .......................................................................................... 33

5.1 应用软件的模块化设计 ............................................................................................ 33

5.1.1 前台设计(ARM平台) ..................................................................................... 33 5.1.2 后台设计(网页浏览) ....................................................................................... 38 5.2 收款保险箱的工作流程 ............................................................................................ 40

5.2.1 前台工作流程 .................................................................................................. 40 5.2.2 后台工作流程 .................................................................................................. 41 5.3 本章小结 .................................................................................................................... 43

6 收款保险箱系统联合调试 .......................................................................................... 44

6.1 系统硬件调试 ............................................................................................................ 44 6.2 系统软件调试 ............................................................................................................ 45 6.3 系统联合调试 ............................................................................................................ 45 6.4 调试结果 .................................................................................................................... 46 6.5 本章小结 .................................................................................................................... 49

7 结 论.................................................................................................................................. 50 致 谢 ...................................................................................................................................... 51 参考文献 ............................................................................................................................... 52

II

1 绪论 1 绪 论

1.1 研究背景与意义

在大型超市、百货商场、大规模收费站、宾馆、医院等场所中涉及到现金交易,如果不采取某种物力,而专门靠人力来清点、核实现金、存储钞票,难免会出现工作效率极低、现金流失等严重问题。针对这些问题,目前市场上已经普遍存在着一些收款设备,如银行自动取款机ATM和POS收款机。

ATM是一种精密且智能的机电一体化设备,使用磁卡或智能IC卡储存用户信息,并通过加密键盘(EPP)输入密码,然后通过银行内部网络验证并进行各种交易的金融自助设备。由于手续程序减少可以减轻业务员的工作负担,有效地提高了整体的工作效率和精确度,为大家提供了安全便捷的金融服务。ATM的功能包括:存款、取款、余额查询、转账、打印凭条、修改密码等基本功能;有些多功能ATM还提供存折打印、账单打印、支票存款、信封存款、缴费、充值等一系列便捷服务。据了解,购买一台ATM自动取款机大约需要20多万元。因此,在超市、百货商场、医院和宾馆等场所前台使用自动取款机存储现金需要投资大量的成本。

为了降低成本,POS收款机是更佳的选择。目前市场上普通的POS收款机一般是2000元左右,功能好点的POS收款机需要5000元左右。因此,相对于ATM自动取款机的成本,POS收款机是个更佳的选择。POS收款机是指通过自动读取设备(如收银机)在销售商品时直接读取商品销售信息(如商品名、单价、销售数量、销售时间、销售店铺等),并通过通信网络和计算机系统传送至有关部门进行分析加工以提高经营效率的系统。POS收款机早期应用于零售业,以后逐渐扩展至其它如金融、旅馆等服务行业,POS收款机使用范围也从企业内部扩展到整个供应链。但是,POS收款机存在的一个很大的缺点就是安全性很低,钱箱内的钱很容易被取出来。目前,在超市、宾馆、大型收费站等场所的前台经常会碰到许多现金流失和被盗等问题。现金流失是企业内部人为失误或者通过其它手段进行偷取金钱。在百货商场、超市、宾馆等场所柜台前的POS收款机里的现金被盗是常有的事。这些现象都是安全性不高导致的后果。

通过比较ATM自动取款机和POS收款机的优缺点,从经济和性能的角度分析,目前国内外市场上缺少一款既能降低成本,又能保证存款安全可靠的收款设备。针对此

1

西安科技大学硕士学位论文

空缺,本文提出一种低成本、高可靠、高性能的收款系统,即收款保险箱系统。

本文提出的收款保险箱系统与传统的保险箱有着本质的区别。传统的保险箱是一个带有密码保护的存放容器,主要来存储现金和资料等贵重物品,它侧重防盗方面。而本文的收款保险系统是一个具有安全功能的收款系统,主要用来存储现金和凭条打印等,它侧重防止现金流失和核实现金方面。它具有收钞、验钞、存储钞票、打印凭条和网页浏览等基本功能,它具有低成本和高可靠性等优点,为国内外现金交易量大的场所解决了现金核实和现金流失等问题,弥补了金融设备在市场上的空缺。

1.2 国内外发展现状

收款保险箱系统这个概念在国内外比较新颖。从它的外围设备主要可以划分为:收钞机、打印机、LCD触摸屏、IC卡等。从各个模块独立开来考虑在国内外的技术现状都比较成熟。本文把各个模块综合起来,设计出一款成本低、小型化、高性能、可靠性高、操作方便的收款保险箱系统,这将是未来国内外发展的趋势。

为了研究收款保险箱系统,可以从一些功能相似的金融收款系统进行分析。针对此类平台,国内外的研究一般采用嵌入式系统。比如:以8/16位单片机为主的低端机;以ARM7不带操作系统的中端机或以ARM7+uCLinux为主的中高端机;以PC机组成系统控制部分的高端机;以ARM9带操作系统为主的中高端机等[1]。这几种机型都有明显的优缺点:

(1) 以8/16位单片机为主的低端机尽管硬件成本最低,但是由于处理器性能的局限性,速度慢,功能有限,而且随着32位处理器的应用不断增多而使32位处理器的成本越来越低,导致8/16位单片机的价格优势不断减少;另外,由于单片机能使用的存储器容量较小,不利于大量数据的存储;同时,此机型的液晶显示器大多采用点阵式,不能采用图形显示器;而且低端机一般无操作系统,没有统一的编程接口,开发者需要自己编程并直接对硬件进行操作,无法编写通用的程序,因此,需要投入大量的维护成本和时间。

(2) 以ARM7不带操作系统的中端机或以ARM7+uCLinux为主的中高端机尽管硬件成本适中,但是该类机子不带操作系统或者大多采用没有内存管理的uCLinux操作系统,一方面稳定性差,另一方面也不容易写出通用的应用软件;而且ARM7处理器速度不够快,很难适应某些速度要求高的场合。

(3) 以ARM9带操作系统为主中高端机,ARM9处理器频率可达180MHz,这样其运算速度不仅比单片机有了飞跃性的提升,而且也比ARM7快很多。另外,由于ARM9自带DRAM控制器,内置更大的Cache缓存,并采用五级流水线模式,因此,使该类

2

1 绪论 机子的性能获得大幅度的提升;此外,ARM9处理器集成度比单片机和ARM7更高,接口也更丰富,故整个系统不仅可以节省许多外设驱动,降低外设驱动成本,而且整个系统的集成度更高,提高机子稳定性。采用ARM9作为处理器,尽管其性能比采用高配置PC机差一些,但是ARM9处理器的运算速度已经可以满足市场上绝大部分客户的需求,而且整体成本大幅度降低,相对而言其性价比更高。

本文的收款保险箱系统处理器采用Atmel公司的ARM9系列AT91RM9200,操作系统采用带MMU(Memory Management Unit)内存管理单元的嵌入式Linux系统[2]。通过ARM和Linux操作系统的完美结合,它具有统一的编程接口,有强大的网络功能、文件及数据库等支持,采用图形用户界面使人机交互更加人性化,因此可以比较方便、快速地开发出通用的、功能强大的、易于移植和扩展的应用软件[3]。

3

西安科技大学硕士学位论文

2 收款保险箱总体设计方案

2.1 功能需求分析

本收款保险箱系统应用的场所主要是大型超市、百货商场、宾馆和医院等。本系统由使用单位、保全公司和银行三方合作,系统使用安全层级定义如下:

●员工等级:一般员工使用,仅供存款使用,报表打印一式两份;

●主管等级:管理员(财务员)使用,总计报表打印使用,一式两份;管理员确认; ●维护等级:收钞机、存款打印机、日志打印机等日常保养或故障排除时使用; ●保全等级:运钞人员使用,仅供保险箱开启更换钞箱,同时报表打印一式三份; ●银行等级:唯一拥有钞箱钥匙者。 系统主要功能需求如图2.1所示:

人机交互功能触摸屏收钞验钞功能收钞机验钞机存储钞票功能存款箱数据存储功能工号日期时间存款金额取款金额信息打印功能员工存款信息财务报表信息保全取出钞箱信息网页浏览功能员工存款信息浏览财务报表信息浏览保全取出钞箱信息浏览故障提示功能存款打印机故障提示日志打印机故障提示收钞机故障提示故障报警功能存款打印机故障报警管理员卡确认前报警日志打印机故障报警保险箱被非法打开报警存款打印机故障报警

图2.1 收款保险箱功能需求图

4

2 收款保险箱总体设计方案 (1) 人机交互功能:实现人机交互功能,使得用户操作方便、快捷; (2) 收钞验钞功能:收款保险箱其最基本的功能是能够收钞验钞功能;

(3) 存储钞票功能:在某些场合中,柜台前端涉及到员工的交接班,为了防止现金流失,本系统需要具有安全可靠的存储钞票功能;

(4) 数据存储功能:收款保险箱具有员工存款信息、财务报表信息、保全取出钞箱信息,这些信息需要记录工号、日期、时间、存款金额、取款金额等相关数据;

(5) 信息打印功能:收款保险箱涉及员工存款信息、财务报表信息、保全取出钞箱信息,为了核实现金需要有打印凭条功能;

(6)网页浏览功能:通过网页的方式浏览收款保险箱存储的数据,如浏览员工存款信息、财务报表信息、保全取出钞箱信息等;

(7) 故障提示功能:当收款保险箱出现故障时,需要有一些故障提示功能,便于维护人员对系统快速维护;

(8) 故障报警功能:在存款打印机出现故障、日志打印机出现故障、收钞机出现故障等情况下,蜂鸣器报警,提示工作人员系统出现故障;在管理员卡确认前和收款保险箱被非法操作情况下,蜂鸣器报警,防止系统被非法操作。

2.2 硬件整体框图及设计方案

2.2.1 嵌入式系统的开发流程

嵌入式系统是以嵌入式计算机为技术核心,面向用户、面向产品、面向应用,软硬件可裁剪的,适用于对功能、可靠性、成本、体积、功耗等综合性能有严格要求的专用计算机系统[4,5]。

当前,嵌入式开发已经逐步规范化,在遵循一般工程开发流程的基础上,嵌入式开发有其自身的一些特点,嵌入式系统开发的一般流程包括系统需求分析(要求有严格规范的技术要求)、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品[6]。

嵌入式系统开发的一般流程图如图2.2所示:

5

西安科技大学硕士学位论文

系统需求分析体系结构设计机械系统设计硬件设计软件设计系统集成系统测试最终产品 图2.2 嵌入式系统开发流程图

(1) 系统需求分析。确定设计任务和设计目标,并提炼出设计规格说明书,作为正式设计指导和验收的标准。系统的需求一般分功能性需求和非功能性需求两方面。功能性需求是系统的基本功能,如输入输出信号、操作方式等;非功能需求包括系统性能、成本、功耗、体积、重量等因素。

(2) 体系结构设计。描述系统如何实现所述的功能和非功能需求,包括对硬件、软件和执行装置的功能划分,以及系统的软件、硬件选型等。一个好的体系结构是设计成功与否的关键。

(3) 硬件/软件协同设计。基于体系结构,对系统的软件、硬件进行并行设计,可以缩短产品开发周期。嵌入式系统设计大部分工作是集中在软件设计上,现代软件工程经常采用的方法是面向对象技术、软件组件技术和模块化设计。

(4) 系统集成。把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。

(5) 系统测试。对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。

(6) 最终产品。系统测试无发现问题后,就可以生产出最终的产品。

6

2 收款保险箱总体设计方案 2.2.2 硬件的整体设计

本系统的硬件设计按功能需求进行分析,系统的硬件结构分为以下几个部分: (1) 微处理器:收款保险箱硬件设计的核心是微处理器,微处理器的选择决定了整个平台的性能。通过国内外的研究现状分析,本系统选用 ATMEL公司的AT91RM9200作为核心处理器[7],它是基于ARM及Thumb的 ARM920T(核)微控制器,工作于 180MHz时性能高达200MIPS(Million Instructions Per Second)。它带有MMU,支持SDRAM、静态存储器、Burst Flash、Compact Flash、Smart Media以及NAND Flash,具有高性能、低功耗、低成本、小体积等优点。而且AT91RM9200处理器具有4个32位的PIO控制器,为本系统需要的多个外围接口解决了难题。AT91RM9200微处理器是一个用途广泛的通用芯片,它内部集成了微处理器和常用外围组件,具有更高性价比的特点,为工业控制领域嵌入式系统提供优秀的解决方案;

(2) 显示模块:从收款保险箱系统的人机交互功能需求,本平台使用7寸的TFT-LCD触摸屏,这样就不需要键盘或鼠标等外设和平台进行交互,人机交互简单便捷;

(3) 收钞模块:根据收款保险箱需要收钞、验钞、存储钞票功能,本平台选用的一款WBA-BNF型收钞机,该收钞机可接收50、100元人民币,纸币识别率高,接收率不低于96%,同时可以容纳2000张人民币。

(4) 打印模块:根据打印功能需求,本系统使用两台打印机,一台是日志打印机,简要打印员工存款数据。一台是存款打印机,打印员工存款信息、财务报表信息、保全取出钞箱信息;

(5) IC卡模块:由于本系统涉及到的员工、财务人员、保全人员和维护人员等不同身份的人,需要选择一种介质来识别身份,本平台选择IC卡方式来识别身份,以执行不同的权限;

(6) 电源模块:由于本系统是嵌入式系统,具有低功耗功能,一般的芯片、电路工作电压比较低,电源输入端选择24V就可以提供所需的工作电压了。通过电压转换芯片对24V电压进行转换,转换为各个芯片、电路所需电压;

(7) 存储模块:由于AT91RM9200处理器内部的存储容量相对比较小,作为一个嵌入式系统,需要烧写Linux操作系统和应用程序,因此仅仅靠微处理器来存储操作系统和应用程序那是远远不够用的。一般而言,微处理器外部扩展存储器。本平台选择32MB SDRAM ,16MB NOR FLASH 和128MB NAND FLASH。操作系统存储在NOR FLASH中,而应用程序存储在板载大容量NAND FLASH中;

(8) 网口模块:根据功能需求,要通过网页浏览的形式访问收款保险箱的相关数据信息。因此,需要一个网络接口。收款保险箱的网口与PC机网口通过网线相连,可以

7

西安科技大学硕士学位论文

实现网页访问功能。另外,由于烧写操作系统和应用程序时,如果通过串口进行烧写,烧写速度比较慢,而通过网口方式烧写速度比较快;

(9) 调试模块:考虑到产品发布之后还要不断对产品进行维护和升级。产品在使用过程中会发现一些在产品的设计阶段没有考虑到的问题,对这些问题的解决就是产品的维护。此外,在产品应用一段时间后,用户会对产品提出更多的需求,通过对产品的升级可以满足用户不断增加的需求。因此,本系统平台设计一个调试接口。

收款保险箱硬件总体框图如图2.3所示:

显示模块收钞模块打印模块IC卡模块微处理器电源模块存储模块网口模块调试模块

图2.3 收款保险箱硬件总体框图

2.3 软件整体架构及设计方案

明确了收款保险箱的需求,完成了硬件方案设计之后就要对软件进行设计。作为一个典型的嵌入式系统,收款保险箱系统的整体结构图如图2.4所示:

8

2 收款保险箱总体设计方案 应用软件GUI&嵌入式数据库glibcLinux&设备驱动硬件平台

图2.4 收款保险箱系统整体结构图

2.3.1 GUI界面的设计方案

图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的用户界面。图形用户界面是当今计算机技术的重大成就之一,它极大地方便了非专业用户的使用,人们不再需要死记硬背大量的命令,而可以通过窗口、菜单方便地操作[8]。收款保险箱界面是面向用户的,界面美观与否直接影响到用户对它的感受,在设计中采用图形用户界面(嵌入式GUI)来实现。嵌入式GUI是在嵌入式系统中为特定硬件平台而设计的图形用户界面系统,它要求简单、直观、可靠、占用资源小且反应快速,以适应硬件资源有限的条件。此外,由于嵌入式系统硬件本身的特殊性,嵌入式GUI应具备高度可移植性与可裁减性,以适应不同的硬件条件和使用要求[9]。

总体来讲,嵌入式GUI具备以下特点: ● 体积小;

● 运行时耗用系统资源小;

● 上层接口与硬件无关,高度可移植; ● 高可靠性;

● 在某些应用场合应具备实时性。

在嵌入式产品开发过程中,通常采取以下几种方案来解决产品的图形需求[10]: (1) 编写针对特定图形输出设备的接口,自行开发图形相关的功能函数。比如一些

9

西安科技大学硕士学位论文

图形功能简单的低端嵌入式产品经常使用这种方案解决图形问题。而利用这种方案编写的程序,无法将显示逻辑和数据处理逻辑划分开来,从而导致程序结构不好,不便于调试,并导致大量的代码重复。这种方案的缺点很明显,即可移植性差,维护成本高。

(2) 购买针对特定嵌入式操作系统的图形中间件软件包。一些嵌入式操作系统厂商,也为自己的操作系统专门开发了对应的图形用户界面(GUI)中间件产品。比如?C/OS-II、Nucleus上的GRAFIX包,VxWorks上的WindML包等等。这种方案为嵌入式产品开发提供了直接可用的方案,并且能够和原有操作系统良好配合;但是缺点就是这类软件包的功能通常比较简单,且价格昂贵。另外,基于这些软件包开发的GUI应用软件不具备跨操作系统的可移植性。

(3) 采用开发源码的嵌入式GUI支持系统。随着嵌入式Linux操作系统的应用,开源社区也在不断为嵌入式系统提供不同的开放源码嵌入式图形解决方案,比如MicroWindows,OpenGUI等开源软件。这些软件一般存在较多的软件缺陷且性能较差,加上缺乏有担保的技术支持,因此,存在着很大的开发风险。

(4) 使用独立软件开发商提供的嵌入式GUI产品,比如由北京飞漫软件技术有限公司开发的MiniGUI等。这种产品是开源(遵循GNU的GPL条款发布)的嵌入式GUI软件产品,但均采用双授权模式,即针对商业应用收取软件的许可费。Qt/Embedded属于高端产品,只支持嵌入式Linux操作系统,需要16MB以上的静态存储空间及64MB以上的动态存储空间。MiniGUI则可支持从中低端到高端的大多数嵌入式产品,其跨操作系统特性,以及适合嵌入式产品的小巧、高效的特点,使它受到了更多嵌入式产品开发商的青睐。

分析以上四种方案,第四种方案成本比较低,而且非常适合嵌入式系统的应用。因此,本系统设计的GUI界面采用第四种方案。

2.3.2 嵌入式数据库的设计方案

在嵌入式领域,早期的数据存储常常采用系统自定义的数据结构和文件格式来进行存取和查询,但近年来随着各种嵌入式应用的迅速发展,嵌入式软件中对数据存取和查询功能的要求也越来越高,而传统的用于个人计算机中的大型关系数据库对于硬件受限,且对响应时间要求相对较高的嵌入式系统来说,并不是非常的适合,只有简单小巧而又高效性能的小型嵌入式数据库才比较适用[11]。通常,我们所指的嵌入式数据库并不是说特定用于嵌入式系统的数据库,而是指,与操作系统和具体应用集成在一起,无需独立运行,而由程序直接调用相应的API(Application Programming Interface) 应用程序编程接口实现对数据的存取操作的数据库引擎。可以说,嵌入式数据库是一种具备了基

10

2 收款保险箱总体设计方案 本数据库特性的数据文件。与通常的数据库产品相比,嵌入式数据库是程序驱动式,而普通数据库是引擎响应式的,而且它们的体积通常非常小,编译后的产品仅仅几十KB,这是比较适于嵌入式系统的。

本文设计的收款保险箱的数据存储,根据功能需求需要处理员工存款信息、财务报表信息和保全取出钞箱信息。这些功能仅仅需要用到数据库的一些基本特性,需要的只是一个简单的基于磁盘文件的数据库系统,这样只要通过调用简单的API函数去创建数据库、添加记录、删除记录、索引、查询等即可,而不必安装庞大的数据库服务器。本系统使用比较流行的嵌入式数据库—Berkeley DB[12]。作为一个简单高效的嵌入式数据库系统,Berkeley DB被设计为简单、快捷、小型并且可靠的系统,能够为应用程序提供高性能的数据管理服务。Berkeley DB可以支持流行的现代操作系统,如Linux、UNIX、Windows等,同时为许多编程语言提供了实用的API接口,支持C、C++、JAVA、PHP等。Berkeley DB函数库本身只有300KB左右,但却可以用来管理多达256TB的数据,而且可以提供与传统关系数据库系统同样强健的数据存储特性[13]。

2.3.3 应用软件的设计方案

应用软件的设计是以一定的方法为基础的,对于收款保险箱这个相对复杂的软件开发任务,设计中根据软件设计模型,从用户需求和系统要实现的任务功能出发,主要遵循了以下几个原则[14]:

(1) 易用性。提供的应用编程接口要尽可能简洁而又满足需要,函数要有良好的容错性,便于将来系统升级开发;

(2) 高性能。在保证终端设备能够正常运行的情况下,考虑对存储器(包括SDRAM和FLASH)的严格要求,尽量减少可执行代码所需的空间,提高程序的运行速度;

(3) 模块化。把整个软件划分为多个小模块。为了减少模块之间的关联性,设计中各个模块之间的逻辑结构相对独立,无函数的交叉调用,数据传递由全局变量完成。这种模块化设计方法使得各个子系统之间相对独立,便于系统的调试,提高了系统的稳定性,也为软件升级提供了方便;

(4) 协同开发。软件和硬件之间采用同步进行的开发模式;

(5) 可移植性。嵌入式操作系统和应用程序要具有良好跨平台性,要能支持主流的微处理器硬件平台,以便于将来的升级和优化;

本系统的整个应用软件可以分两大部分,前台部分和后台部分。其应用软件模块图如图2.5所示。前台部分包括IC卡处理模块、收钞模块、打印模块、故障处理模块和人机交互界面模块;后台部分主要通过网页访问的方式浏览前台相关数据,包括员工存款

11

西安科技大学硕士学位论文

数据界面、财务报表数据界面、保全取出钞箱数据界面、数据导出界面、添加修改管理员密码界面和修改主板IP和机器号码界面。通过嵌入式数据库把前台和后台的信息关联起来。整个应用软件的设计采用模块化的方式,分别调用不用的API接口,结构非常清晰,为后续代码的跨平台移植奠定了基础。

员工卡财务卡维护卡故障处理模块保全卡员工存款信息打印财务报表信息打印保全取出钞箱信息打印收钞模块打印模块人机交互界面Berkeley DB数据库前 台后 台员工存款数据界面IC卡处理模块财务报表数据界面保全取出钞箱数据界面数据导出界面添加修改管理员密码界面修改主板IP和机器号码界面 图2.5 收款保险箱应用软件模块图

2.4 本章小结

本章从一个全局的角度考虑了收款保险箱的总体设计方案。从功能需求分析引出整个系统的硬件整体框架及设计方案和软件整体架构及设计方案两大部分。经过本章的介绍,本课题所要研究的内容和重点其实已经一目了然。本章内容着重从系统的软硬件架构设计进行分析,为3、4、5、6章的后续介绍做了很好的准备,起到一个提纲挈领的作用。

12

3 收款保险箱硬件系统设计 3 收款保险箱硬件系统设计

上一章介绍了收款保险箱硬件整体设计方案之后,本章主要详细介绍核心硬件电路的设计与实现。

3.1 系统的硬件组成

从收款保险箱的功能需求出发,从硬件设计角度划分,可将收款保险箱划分为:微处理器模块、电源模块、实时时钟模块、存储模块、显示模块、IC卡模块和外部扩展模块7个部分。其中,外部扩展模块又包括收钞机模块、打印机模块、串口调试模块和以太网模块等。其硬件原理方框图如图3.1所示:

BNF收钞机实时时钟IC卡读卡IC卡弹卡32MB SDRAM存储模块IC卡模块RS232串口调试接口外部通信扩展接口打印模块AT89C2051日志打印机存款打印机PC机RS232串口预留接口RS232串口微处理器AT91RM920016MB NOR FLASH128MB NAND FLASHTFT-LCD显示模块EPSON显卡2MB 显存电源模块以太网接口3.3V5V1.8V24V输入

图3.1 收款保险箱硬件原理方框图

3.2 核心电路设计

本节将从收款保险箱的各个模块设计进行介绍以及给出部分核心电路。

13

西安科技大学硕士学位论文

3.2.1 微处理器模块

本系统作为嵌入式产品,对处理器的选择至关重要,从第1章中国内外的研究现状已经分析,本系统的微处理器采用ATMEL公司的AT91RM9200微处理器,它是基于ARM920T核的高性能、低功耗16/32位RISC(精简指令集计算机)微处理器。其内部集成丰富的外设资源,适用于本系统要求外设资源丰富、功耗低、工作严格稳定等方面[15]。选择AT91RM9200微处理器具有以下几点优势:

(1) AT91RM9200是基于ARM及Thumb指令的ARM920T微处理器。它有丰富的系统与应用外设及标准的接口,从而为低功耗、低成本、高性能的计算机应用提供一个单片解决方案;

(2) AT91RM9200包括一个高速片上SRAM工作区及一个低等待时间的外部总线接口(EBI),以完成应用所要求的片外存储器和内部存储器映射外设配置的无缝连接。EBI有同步DRAM(SDRAM)、Burst Flash及静态存储器的控制器,并设计了专用电路以方便与Smart Media、Compact Flash及NAND Flash连接;

(3) 高级中断控制器(AIC)通过多向量,中断源优先级划分及缩短中断处理传输时间来提高ARM920T处理器的中断处理性能;

(4) 外设数据控制器(PDC)向所有的串行外设提供DMA通道,使其与片内或片外存储器传输数据时不用经过处理器。这就减少了传输连续数据流时处理器的开销。包含双指针的PDC控制器极大的简化了AT91RM9200的缓冲器链接;

(5) 并行I/O(PIO)控制器与作为通用数据的I/O复用外设输入/输出口线,以最大程度上适应器件的配置。每条口线上包含有一个输入变化中断、开漏能力及可编程上拉电阻;

(6) 电源管理控制器(PMC)通过软件控制有选择的使能/禁用处理器及各种外设来使系统的功耗保持最低。它用一个增强的时钟产生器来提供包括慢时钟(32kHz)在内的选定时钟信号,以随时优化功耗与性能。

3.2.2 电源管理模块

电源电路是整个系统能够正常工作的基本保证,如果电源电路设计的不好,系统有可能不能工作,或者出现散热不好导致系统不稳定的情况。因此如何选用合适的电源芯片很重要。综合考虑整个硬件平台需要的供电电压有24V、5V、3.3V和1.8V,其中,3.3V在电路上多次使用,所以在选择3.3V电源芯片的时候要充分考虑电源芯片的负载能力是否能够满足整个系统的工作需求。

系统外部输入为24V电压,使用LM2596-5V稳压输出5V电压,再从5V电压经过

14

3 收款保险箱硬件系统设计 LM1085-3.3V和LM1117-1.8V分别稳压输出3.3V和1.8V。收款保险箱系统的电源原理图如图3.2所示:

图3.2 系统电源原理图

3.2.3 实时时钟模块

收款保险箱涉及到数据打印功能,时间的准确性非常重要,而实时时钟电路是为系统提供时钟的。本系统用PCF8563作为系统的实时时钟芯片,开机工作状态下实时时钟芯片由外部输入电源供电,掉电状态下由后备电池供电。在后备电池的支持下,能保证系统掉电后片内时钟继续运行。实时时钟电路记录系统时间,内有秒、分、小时、天、月、年和世纪寄存器,在设备初始化时间后,通过访问它可知道当前时间[1]。SCL和SDA是I2C总线,用于读/写PCF8563内部寄存器,与CPU连接,实时时钟原理图如图3.3所示:

图3.3 实时时钟原理图

15

西安科技大学硕士学位论文

3.2.4 存储模块

以ARM芯片为MCU的系统,启动程序可能直接固化在内部即ROM,或者可以在外部ROM、外部FLASH或其它外部设备上。基于ARM的CPU上电启动或复位时通常都从地址0x00000000取它的第一条指令,也就是ARM系统启动或复位的时候从内部0x00000000地址开始运行。系统启动时一般都采用了地址重新映射机制,也就是把某个非易失设备(一般是ROM或FLASH)的地址映射到0x00000000当系统上电或复位时就从这个设备启动。

对于AT91RM9200处理器,系统上电后检测BMS,如果BMS为高电平(BMS=1),则AT91RM9200的内部ROM映射到内部存储区0即以0x0为起始地址。如果检测到BMS是低电平(BMS=0),则把EBI(外部总线接口)总线上相连的器件映射到内部存储区0x00000000处[16]。

系统选用一片MT公司的E28F128J3A型16MB Nor Flash用于存储Linux内核和根文件系统,使用2片HY57V281620来组成32位SDRAM接口用于系统的代码执行和数据段的存储。系统存储芯片部分原理图如图3.4所示。

图3.4 系统存储芯片部分原理图

3.2.5 显示模块

本收款保险箱系统选用EPSON公司的显示控制器件S1D13506用于控制LCD的图

16

3 收款保险箱硬件系统设计 像数据显示[17]。S1D13506可与多种CPU总线兼容,支持最高为16位数据宽度的LCD接口,可以在TFT-LCD、CRT最高显示64 K颜色。它配置一个16位内存接口,支持最高2 MB的EDO-DRAM。系统中S1D13506数据总线宽度为16位,AT91RM9200地址线A21与S1D13506的M/R引脚相连,用于选择访问寄存器与显存[18]。AT91RM9200访问S1D13506显存起始地址为0x30200000,寄存器起始地址为0x30000000。使用了GM71V18163型2MB DRAM作为显示存储,AT91RM9200通过访问S1D13506数据地址空间,实现对DRAM的数据存储操作,使用50MHZ的有源晶振作为S1D13506的总线时钟,25 MHZ有源晶振作为LCD的像素时钟信号,支持800x480 60HZ TFT-LCD显示,LCD行、场同步信号由S1D13506内部通过对25 MHZ像素时钟分频得出[19]。LCD显示控制硬件接口框图如图3.5所示。

AT91RM9200A[1..20]D[0..15]A21NCS2NRDNWR0NWR1NWAITS1D13506AB[1..20] MA[0..9]DB[0..15] MD[0..15]M/R RASCS WERD UCASWE0 LCASWE1 WAIT BUSCLK CLK150MHZ25MHZGM71V18163AQ[0..9]DQ[0..15]RASWEUCASLCAS________

图3.5 LCD显示控制硬件接口框图

3.2.6 IC卡模块

IC卡模块是收款保险箱必备的外部扩展设备,它包括IC卡读卡模块和IC卡弹卡模块。本系统根据功能需求将IC卡分为:员工卡、财务卡(管理员卡)、维护卡和保全卡等四种卡。员工卡用于员工存款和打印存款数据操作;财务卡用于管理员启动系统界面、财务报表打印操作和功能确认操作;维护卡用于系统出现故障时维护人员进行维护操作;保全卡用于保全人员取出钞箱和打印取出钞箱信息操作。

由于本系统CPU外部扩展了多个外围设备,考虑到CPU通用I/O的有限性,本平

17

西安科技大学硕士学位论文

台使用74LVC125芯片复用的方式将IC卡模块与预留接口进行复用。系统的CPU外接一个单片机用于控制IC卡模块。本设计选用ATMEL公司的AT89C2051单片机。AT89C2051是美国ATMEL公司生产的低电压,高性能 COMS 8位单片机,片内含2K字节可重复擦写Flash闪速存储器和128字节的随机存取数据存储器(RAM)。IC卡读写操作的各种时序和协议由单片机通过软件实现。

IC卡读写模块需要用到控制信号ICINSERT、时钟信号ICCLK、复位信号ICRST、数据输入输出ICDAT、电源输入ICVCC。而IC卡的弹卡模块使用SSR继电器,通过POPCARD信号控制IC卡座的线圈充电和放电情况。当线圈充电到一定程度时吸收线圈旁边的磁铁,此时IC卡座将卡弹出。从而完成IC卡弹卡功能。IC卡模块电路原理图如图3.6所示:

图3.6 IC卡模块电路原理图

3.2.7 外部扩展模块

本系统中外部扩展了多个串口,如主板与收钞机、存款打印机、日志打印机、PC机等相连的接口以及主板上的调试接口和预留1个接口等都是使用串口方式。串口电路采用RS-232标准,它是电子工业协会(EIA)推荐的一种常用的串行数据传输总线标准,采

18

3 收款保险箱硬件系统设计 用9芯或25芯接口。本系统采用9芯接口。

由于RS232电平与TTL电平相反,-3~-15V代表逻辑“1”,3~15V代表逻辑“0”,所以必须进行电平转换才能实现主板与外部扩展的设备进行通信[20]。在系统设计时采用了专用芯片MAX3232进行TTL电平与RS232电平转换。MAX3232工作电压是3.3V,具有低功耗性能,是一款比较优良的RS232通信芯片。要完成最基本的串行通信功能,实际上只需要RXD、TXD和GND即可。

本课题的收钞机、存款打印机和日志打印机通过RS-232串口与主板进行通信,完成相应的收钞和打印功能。调试接口与电脑相连来传送调试指令和显示调试信息。每个MAX3232芯片具有两路收发接口,其中串口电路原理图如图3.7所示:

图3.7 串口电路原理图

3.3 本章小结

本章首先简要介绍了收款保险箱的硬件组成,从全局设计角度给出了收款保险箱的硬件方框图。然后,从平台的硬件方框图出发,对收款保险箱的微处理器模块、电源模块、实时时钟模块、存储模块、显示模块、IC卡模块和外部扩展模块7个核心部分进行硬件设计,形成了嵌入式硬件平台,为后续章节的软件介绍提供必要的硬件环境。

19

西安科技大学硕士学位论文

4 收款保险箱系统软件平台设计

本章主要介绍的是Linux操作系统在AT91RM9200平台上的移植、GUI图形界面的设计和嵌入式数据库的设计。这个嵌入式操作系统平台为下一章的应用软件的开发提供一个软件平台。

4.1 收款保险箱系统软件平台的组成

嵌入式系统开发中,嵌入式的软件系统平台一般分为硬件驱动程序、操作系统相关软件、图形界面、嵌入式数据库、应用程序等几个部分。这几个部分有机的结合起来就构成了一个完整的嵌入式软件系统。本系统的软件平台架构图如图4.1所示:

读卡程序收钞程序打印程序应用程序故障提示程序CGI程序图形交互界面嵌入式数据库文件系统API数据库API可移植操作系统接口设备通信API文件系统Linux内核CPU LCD显示初始化驱动以太网 驱动IC卡 驱动串口 驱动其它 驱动驱动程序硬件设备 图4.1 系统的软件平台架构图

20

4 收款保险箱系统软件平台设计 4.2 软件平台的开发流程

从嵌入式Linux的移植到开发,要熟悉软件设计、编译的整个流程和移植Linux到硬件平台所要完成的具体工作[21]。嵌入式Linux的移植有Bootloader、Linux内核、根文件系统和应用程序几个部分。对于嵌入式Linux在AT91RM9200平台的软件开发,主要有以下几个步骤[22]:

第一步:建立嵌入式开发环境,如交叉编译工具、图形用户界面、嵌入式数据库; 第二步:移植、编译Bootloader,将Bootloader下载到开发平台;

第三步:根据开发平台的资源,配置和裁剪Linux内核。然后再重新编译内核,下载到

开发平台;

第四步:下载或者获取一个可用的根文件系统,然后在此基础上添加和修改形成自己的

根文件系统;

第五步:交叉编译应用程序生产可执行文件,并将可执行文件下载到硬件平台上。

4.3 Linux操作系统在AT91RM9200上的移植分析

4.3.1交叉开发环境的建立

嵌入式系统的硬件一般有很大的局限性,或者处理器频率很低,或者存储空间很小,或者没有键盘、鼠标设备,这样的硬件平台不便于庞大的Linux系统开发,这就需要借助宿主机为其建立交叉开发环境。交叉开发环境一般是由编译器、连接器和glibc库等组成。在Linux相关软件的开发时,交叉开发工具一般是使用GNU的工具链(如GCC),目前已经能够支持x86,ARM,MIPS和PowerPC等多种处理器[23]。

本系统中宿主机使用的开发环境为ubuntu Linux操作系统。目标板配备的内核版本号为Linux-2.6.25,使用到的交叉编译器有arm-linux-gcc-2.95.3,arm-linux-gcc-3.3.2,arm-linux-gcc-3.4.1,其中arm-linux-gcc-2.95.3用于编译应用程序和Bootloader,arm-linux-gcc-3.3.2用于编译Busybox,arm-linux-gcc-3.4.1用于编译Linux内核。

4.3.2 Bootloader的开发设计

Bootloader是在操作系统内核或用户应用程序运行之前执行的一段小程序。通过这段小程序可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环

21

西安科技大学硕士学位论文

境,为最终调用操作系统内核或用户应用程序做好准备[9]。

在本系统中,Bootloader是由boot和U-Boot两部分组成。第一部分为boot引导程序,这段程序的代码是由ATMEL公司提供,其作用是初始化系统基本资源,并引导加载U-Boot程序,其中,boot程序代码执行具体流程如图4.2所示。

系统复位定义系统中断向量表屏蔽中断、初始化各种工作模式堆栈配置EBI总线BANK0与外部Nor Flash时序匹配初始化9200内部时钟电路初始化SDRAM初始化9200控制台初始化内部Cache复制数据段、清理BSS段复制、解压Nor Flash中的U-Boot到指定的SDRAM地址跳转到U-Boot程序入口 图4.2 boot程序代码执行流程图

U-Boot可支持的主要功能有以下几点[24]:

●系统引导:支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统。支持NFS挂载,从FLASH中引导压缩或非压缩系统内核。

●基本辅助功能:强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,对Linux支持最为强劲;支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好。

22

西安科技大学硕士学位论文

4.4.1 MiniGUI的功能特点

作为操作系统和应用程序之间的中间件,MiniGUI将底层操作系统及硬件平台差别隐藏起来,并对上层应用程序提供了一致的功能特性。这些功能特性如下[33]:

(1) 遵循GPL条款的自由软件,全部源代码已经用户手册、编程指南、API参考手册等相关资料均可从internet上以近乎免费的成本获得。

(2) 提供了完备的多窗口机制和消息传递机制。

(3) 提供常用的控件类,包括静态文本框、按钮、单行和多行编辑框、列表框、组合框、进度条、属性页、工具栏、拖动条、树型控件、月历控件等。

(4) 对话框和消息框支持。

(5) 其它GUI元素,包括菜单、加速键、插入符、定时器等。

(6) 界面皮肤支持。用户可以通过皮肤支持获得外观非常华丽的图形界面。 (7) 通过两种不同的内部软件结构支持低端显示设备(比如单色LCD)和高端显示设备(比如彩色显示器),后者在前者的基础上提供了更加强大的图形功能。

(8) Windows的资源文件支持,如位图、图标、光标等。

(9) 各种流行图像文件的支持,包括JPEG、GIF、PNG、TGA、BMP等等。 (10) 多字符集和多字体的支持,目前支持ISO8859-1~ISO8859-15、GB2312、GBK、GB18030、BIG5、EUC-JP、Shift-JIS、EUC-KP、UNICODE等字符集,支持等宽点阵字体、变宽点阵字体、Qt/Embedded使用的嵌入式字体QPF、TrueType以及Adobe Typel等矢量字体。

(11) 多种键盘布局的支持。MiniGUI除支持常见的美式PC键盘布局之外,还支持法语、德语等西欧语种的键盘布局。

(12) 汉字(GB2312)输入法支持,包括内码、全拼、智能拼音等。用户还可以从飞漫软件获得五笔、自然码等输入法支持。

(13) 针对嵌入式系统的特殊支持,包括一般性的I/O流操作,字节序相关函数等。 (14) 层的支持。可以使用JoinLayer将一个客户程序加入到某个已由其它客户程序创建好的层中。如果成功,则处于同一层中的客户能够同时向屏幕上进行图形输出(该功能增加在MiniGUI-Lite版本中)。

(15) 借鉴著名的跨平台游戏和多媒体函数库SDL(Simple DirectMedia Layer)的新GAL接口即NEWGAL。提供了快速和增强的位块操作,视频加速支持以及Alpha混合等功能。

(16) 增强的新GDI函数,包括光栅操作、复杂区域处理、椭圆、圆弧、多边形以及区域填充等函数。

28

4 收款保险箱系统软件平台设计 (17) 图形抽象层(GAL)以及输入抽象层(IAL)。利用GAL和IAL,MiniGUI可以在许多图形引擎上运行,并且可以非常方便地将MiniGUI移植到其它POSIX系统上,而这只需要根据我们的抽象层接口实现新的图形引擎即可。基于QVFB图形引擎,MiniGUI应用程序可以运行在X Windows上,这将大大方便应用程序的调试。

4.4.2 MiniGUI的优势

比较目前几个面向实时嵌入式Linux系统的GUI,目前比较成熟同时得到最多开发人员认可的有MicroWindows、Qt/Embedded以及MiniGUI等三个系统[34]。相比较而言,MiniGUI在以下几个方面有其独特的优势。 (1) 轻型、占用资源少

MiniGUI本身的占用空间非常小,基于Linux和MiniGUI的嵌入式系统主要存储空间计算如下:

● Linux内核:300K~500K(由系统决定) ● 文件系统:500K~2MB(由系统需求决定) ● MiniGUI支持库:300K~500K(由编译选项确定)

● MiniGUI字体、位图等资源:400K(由应用程序确定,可缩小到200K以内) ● GB2312输入法码表:200K(不是必需的,由应用程序确定) ●应用程序:1M~2M(由系统决定)

总计应该在2M~4M左右。如果不需要某些特征,系统容量还可以更少。 (2) 高性能

MicroWindows采用的传统的基于UNIX套接字的客户/服务器系统结构。在这种体系结构下,客户建立窗口、绘制等都要通过套接字传递到服务器,由服务器完成实质工作。这样,系统非常依赖于UNIX套接字通讯;而UNIX套接字的数据传递,要经过内核,然后再传递到另外一个程序。这样,大量的数据在客户/内核/服务器之间传递,从而增加了系统负荷,也占用了许多系统资源。加上MicroWindows的图形引擎代码未经任何优化,因此,MicroWindows的图形效率很低。

Qt/Embedded是C++的函数库,影响其图形效率的原因,主要是C++的臃肿和由此造成的系统资源的极度浪费。从对用户操作的响应能力、应用程序的启动速度等方面看,Qt/Embedded的速度是最慢的。

MiniGUI为提高整体性能,首先采用了独特的体系结构,其次对图形系统进行了大规模的优化。 (3) 高可靠性

29

西安科技大学硕士学位论文

从1999年MiniGUI的第一个版本发布以来,就有许多产品和项目使用MiniGUI,MiniGUI本身也不断从这些产品或者项目中获得发展动力和新的技术要求,不断提高了自身的可靠性和健壮性。 (4) 可配置

嵌入式系统千变万化要求GUI系统可配置。通过Linux下的Automake和Autoconf接口,实现了大量的编译配置选项,通过这些选项可指定MiniGUI库中包括哪些功能而同时不包括哪些功能。大体说来,可以在如下几个方面对MiniGUI进行定制配置:

● 指定MiniGUI要运行的操作系统;

● 指定生成基于线程的MiniGUI-Threads版本还是基于进程的MiniGUI-Lite版本; ● 指定要采用老的GAL/GDI接口(低端显示设备)还是新的GAL/GDI接口(高端显示设备);

● 指定需要支持的GAL引擎和IAL引擎,以及引擎相关选项; ● 指定需要支持的字体类型; ● 指定需要支持的字符集; ● 指定需要支持的图像文件格式; ● 指定需要支持的控件类;

● 指定控件的整体风格,是三维风格还是平面风格; ● 其它。

总之,MiniGUI是一个非常适合于工业控制实时系统以及嵌入式系统的高效、可靠、可定制、小巧的图形用户界面支持系统。

4.4.3 MiniGUI图形界面的开发

1) MiniGUI在PC环境搭建

这里搭建的环境是让MiniGUI在PC机上运行,由于本系统应用程序开发时是在PC上开发的,在PC机交叉编译,把交叉编译好的可执行文件下载到板子上就可以了。

(1) 安装MiniGUI库文件

本系统使用libminigui-1.3.3.tar.gz这个包安装MiniGUI库文件。 (2) 安装qvfb

可以使用Ubuntu8.04内置的新立得软件包管理器来安装qvfb,点击显示器屏幕上方菜单栏的系统?系统管理?新立得软件包管理器,当管理器界面打开后点击搜索输入qvfb然后点击搜索,在搜索结果中选中qt3-dev-tools-embedded。然后点击应用安装完毕即可。

30

4 收款保险箱系统软件平台设计 (3) 安装MiniGUI资源文件

本系统使用minigui-res-1.3.3.tar.gz包安装MiniGUI资源文件[35]。 至此MiniGUI的PC环境搭建完毕。 2) MiniGUI交叉编译环境的搭建

MiniGUI的应用程序运行时要有动态库的支持,而最后无论是应用程序还是动态共享库都要在ARM平台上运行的,所以MiniGUI的库要利用ARM的编译器进行交叉编译。这里介绍MiniGUI交叉环境的搭建。

(1) 安装zlib库

本系统使用zlib-1.2.3.tar.gz包安装zlib库。由于zlib库的configure脚本不支持交叉编译选项,必须手动临时把gcc修改成指向我们的交叉编译器arm-linux-gcc。

(2) 安装png库

这个库是用来显示PNG图形的,MiniGUI里很多图片都是PNG的,如果没有这个库,MiniGUI将无法正常工作。本系统使用libpng-1.0.10rc1.tar.gz包安装png库。

(3) 安装jpeg库

安装jpeg库是用来显示JPG图形的,MiniGUI里有JPG图片,如果没有安装这个库,(4) 安装ttf字体支持库

最后安装libttf库,这个是TrueType字体的支持库,在嵌入式开发中还是经常会用的,最好也装上。系统中使用freetype-1.3.1.tar.gz包安装ttf字体库。

(5) 交叉编译MiniGUI

安装交叉编译MiniGUI前,首先要选择好编译器arm-linux-gcc,配置相关选项,如target目标平台选项选择arm-linux、build选项用来指明宿主机的类型这里使用i686-pc-linux-gnu、prefix选项用于指定MiniGUI函数库的安装路径等。配置好相关选项后,就可以编译和安装了,这里安装其实是给交叉编译器安装libminigui的库,为将来交叉编译含MiniGUI代码的程序做好准备。

(6) 安装MiniGUI资源文件

资源文件无需安装,只要将安装PC环境的所有MiniGUI资源文件拷贝到交叉编译环境的资源目录下即可。

至此MiniGUI交叉编译环境搭建完毕。

MiniGUI也将无法正常工作。本系统使用jpegsrc.v6b.tar.gz包安装jpeg库。

4.5 嵌入式数据库的设计与开发

在第1章绪论中,嵌入式数据库的设计方案中提出本嵌入式系统选用Berkeley DB

31

西安科技大学硕士学位论文

作为嵌入式数据库。Berkeley DB在数据存取方面非常高效。其高效性主要来自下面的两个方面[11]:

其一,使用Berkeley DB时,应用程序实际上是链接一个Berkeley DB提供的C库,这样运行时应用程序和所使用的数据库系统即C库都运行在同一个进程空间当中,而不是向远程服务器发送消息,从而消除了常见的客户端-服务器体系结构中所需要的进程间通信所导致的性能损耗。

其二,Berkeley DB提供简单的API来完成所有的数据库操作,而不是使用SQL语言,这样就减少了对结构化查询语言进行解析和处理所需的开销,提高了数据读取和查询效率。

Berkeley DB交叉编译环境的搭建,建立可以在ARM-Linux平台上运行的Berkeley DB库。本系统使用db-4.7.25.NC包安装数据库。

4.6 本章小结

本章主要介绍收款保险箱系统软件平台的设计,在介绍了收款保险箱系统软件平台的组成和软件平台的开发流程后,分别详细讲述了如何一步一步地构建嵌入式软件平台,包括Linux操作系统在9200上的移植分析、GUI图形界面的设计与开发和嵌入式数据库的设计与开发。

32

本文来源:https://www.bwwdw.com/article/40w3.html

Top