- UID
- 852722
|
一、嵌入式系统概述 嵌入式系统一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。
嵌入式系统几乎包括了生活中的所有电器设备,如掌上PDA、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等。
嵌入式系统的特点
(1) 嵌入式系统是一个实现预定特殊功能的系统,它具有有限的资源(如内存、功耗、处理器速度、计算能力等) 。通常,应用程序的运行将占用整个ROM 的存储容量。这与一台具有普通处理器、支持多种应用程序的PC 机是截然不同的。另外,嵌入式软件的应用范围较PC 机丰富许多。PC 机中的应用软件无非就是实现文字处理、电子制表、游戏等功能,而嵌入式系统则不同,由于它可应用的领域极其广泛,其应用软件为面向具体应用的专用软件,所以嵌入式软件非常多样化,并且每年都会涌现出近50 000 种用以实现不同功能的嵌入式应用软件。
(2) 嵌入式系统具有自己的操作系统,一般为实时操作系统RTOS ( Real - time Operating Sys2tem) 。RTOS 对系统控制具有实时性,能提供多任务的任务间调度、时间管理、任务间通信和同步以及内存管理MMU (MemoryManager Unit) 等重要服务,并且系统内核可根据功能的需要进行适当的裁剪,去除冗余,保证在占用少量资源的前提下高效执行任务。RTOS 的出现,很大程度上缩短了开发周期,减少了系统程序员的工作量,提高编程效率与程序质量,同时也加速了嵌入式产品的更新换代,而利用RTOS 进行开发的嵌入式系统所带来的优越性
是其他监控系统(如单片机、PLC 等) 无法比拟的。 (3) 嵌入式系统的CPU 具有低功耗、体积小、 集成度高等特点,能够把通用CPU 中许多由板卡完成的任务集成到芯片内部,从而有利于整个系统设计趋于小型化。系统可靠性高,能适应冷热、振动、腐蚀等各种变化,因此特别适用于需要在恶劣环境下工作的监控系统
二、
嵌入式系统的构成
嵌入式系统的硬件部分,包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等,其中嵌入式微处理器是嵌入式系统的核心。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用EPROM、EEPROM或闪存(FlashMemory)作为存储介质。软件部分包括操作系统软件(要求实时和多任务操作)和应用程序编程。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
嵌入式软件是嵌入式系统的基础,而与嵌入式操作系统紧密联系的开发调试工具是嵌入式软件的核心,它的集成度和可用性将直接关系到嵌入式系统的开发效率。因为嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中。
嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。
实时多任务操作系统是指具有实时性、能支持实时控制系统工作的操作系统。北京昆仑通态软件公司开发了基于WindowsCE.NET的嵌入式工控组态软件,本系统作为组态软件的一个功能块集,其运行的目标环境为WindowsCE.NET。
三、嵌入式实时控制软件概述 嵌入式实时控制软件是基于PC的实时控制软件,是下一代自动化控制的解决方案。传统的PLC由硬件或固件实现,软PLC则由PC通过串口连接设备对其编程。就组态软件而言,其实就是实现设备驱动的可组态,即用FBD搭建控制程序,实现与外部硬件进行数据交换的方法。
嵌入式软件通常组态环境与运行环境是在不同的机器上,组态环境在普通装有Windows98/2000/NT等操作系统的计算机上,运行环境则需装有嵌入式操作系统(如:Windows CE)的计算机,也称为目标机或下位机。组态环境下通过图形化的操作——也可以称之为“编程”,将数据通讯和数据处理的过程直观的画出来。然后将程序下装到下位机,在编辑出来的图形化语言背后是系统生成的标准C++代码,在目标机中执行这些代码,实现与外部环境的数据交换。在下位机中运行的“执行器”本质就是开发环境产生的C++代码的解释执行器。
软件的主要部分FBD编辑环境其实是一种二次开发平台,开发环境的整体布局和功能在一定程度上与一个可视化的编程工具,如VB、Delphi等软件类似,但是本系统与VB等系统有一个很大的不同之处:VB、Delphi等专业程序开发系统并不包含特定应用领域相关的逻辑,它们的用户群一般分为开发者和最终用户两部分;而我们设计的系统最终用户和开发者很可能是同一个用户。正如在第一章中提到的,本系统的设计需求是针对一般的不具备计算机方面的专业知识的初级用户,因此在系统中需要包含完整的、能够解决通讯领域中问题的逻辑。
从另一个角度看,系统工作起来与CAD软件、PhotoShop、电路图编辑软件和文档编辑器等都非常相似,这些系统也可以作为设计参考。但是,需要看到本系统与这些软件的差异性,即:CAD等软件系统是静态的内容编辑器,它们编辑出的产品是静态的,产品本身不能作为一个软件运行来完成特定的功能;而我们设计的系统开发出来的画面能够同外部环境进行数据交换。
四、项目概述
在信息社会中,打印终端应用非常广泛,比如超市的收银系统、图书馆的借书还书系统、移动营业厅的话费打印系统等场合,我们都可以看到打印终端的身影。传统打印终端通常都是在PC加上一个微型打印机构成,这种架构的打印终端价格比较昂贵,体积庞大,移动笨拙,使用十分不便。
随着嵌入式技术的发展,许多原来基于PC的应用都纷纷转向基于嵌入式技术来实现。基于嵌入式技术的产品具有非常明显的优势,如价格便宜、功耗低、体积小及移动方便等。具体到打印终端这个产品上来说,可以从表1看出基于PC的打印终端和基于嵌入式的打印终端在各个方面的差异性。
表1 打印终端差异比较
| 基于PC的打印终端
| 基于嵌入式的打印终端
| 价格
| 几千元不等
| 几百元
| 体积
| 很大
| 非常小
| 性能
| 强
| 较强
| 开发方便性
| 易
| 较易
| 移动方便性
| 难
| 易
| 本项目实例中拟开发的嵌入式移动打印终端是解决从数据输入、数据处理和数据输出的一体化系统,它提供下列几个功能:
n
数据录入功能:支持从扫描仪端录入数据;
n
通过网络到数据库查询;
n
数据打印功能。
五、 嵌入式移动打印终端总体架构构建
5.1 总体架构
嵌入式移动打印终端是一套完整的嵌入式应用系统,包括硬件和软件两个部分。从硬件角度来看,该系统由以下3大部件构成:
n
数据输入部件(手持扫描仪)---完成数据输入功能;
n
数据处理部件(嵌入式开发板和远程服务器)---完成数据处理任务;
n
数据输出部件(微型打印机)---完成数据打印功能。
1) 数据输入部件
通常一个系统可以有很多种输入数据的途径,常用的输入设备有键盘、鼠标等。在嵌入式移动打印终端中,只采用了扫描仪来完成数据的输入工作。
2) 数据处理部件
数据处理部件是整个应用系统的核心,它的主要任务使得到扫描仪传来的数据,然后连接远程服务器,将数据传送到远程服务器端,完成程序任务后,从远程服务器端得到结果,然后将结果送给微型打印机打印。
所以,数据处理部件包括嵌入式开发板和远程服务器两个部分。嵌入式开发板和远程服务器之间通过网络线相连。
3) 数据输出部件
在超市收银系统中,收银员最后的一个动作总是打印顾客的单据。同样,在嵌入式移动打印终端系统中,最后一个动作也是将查询到的结果通过一个微型打印机打印出来。
5.2 软/硬件选型
从2.1部分的描述中可以看出,整个系统有四个关键的设备组成:手持式扫描仪、嵌入式开发板、远程服务器和微型打印机。
1) 手持式扫描仪
该扫描仪主要完成的功能其实是条码扫描的任务。条码扫描仪是用来扫描条形码的设备,利用光学原理,把条形码的内容解码以后通过数据线或者无线的方式传输到电脑或者别的设备中。
目前,条形扫描仪通过有线的方式和电脑连接,主要有PS/2键盘接口、RS-232串口、USB接口3种接口;通过无线方式和电脑连接主要有蓝牙和2.4G的方式,一般无线的距离基本都在30-100m之内。
条形扫描仪按条码分类繁杂,按照读取设备所采用的读取方式可分为:CCD和激光两种扫描模式;按接触方式可分为:接触式和红外线射频是;按照每次扫描线数的多少和分方向可分为:单线扫描、多线扫描、单线/多线可选扫描;按扫描时能在多少角度上读取信息科分为:单行扫描和全方位扫描、单线/多线平行扫描、快速迷你型全方位扫描。
选择一个合适的扫描仪,可以从下面几个指标来把握:
n
工作距离(景深):景深指扫描时扫描仪和条形码之间的距离,通常情况下,扫描距离可以从零(接触式)到若干英尺,扫描距离由条码扫描仪决定;
n
标签尺寸:标签尺寸描述被扫描条码的整个宽度;
n
条码密度:条码密度指能够满足阅读的最小条和空模块的宽度;
n
电气特性:电气特性描述扫描仪的工作电压、电流等指标。它是我们选型时要高度关注的一个目标,选择的标准就是尽量要和整套系统的电气特性比较一致。
n
接口类型:选择扫描仪时,其接口一定要是嵌入式开发板所支持的类型。
2) 嵌入式开发板
嵌入式开发板是本系统的核心部件,它担负着整个系统中心枢纽的重担,同时,它的选型也直接影响到上层操作系统和其它部件的选型。所以,在选择这个部件时,要站在整个系统的高度来进行。
选择嵌入式开发板要考虑的因素非常多,但必须首先考虑下面几个核心要素:
n
接口类型:在本系统中,嵌入式开发板连接着扫描仪、远程服务器和微型打印机。所以,开发板上必须具备和这些部件连接的接口,如和扫描仪连接时需要的RS-232C串口,和远程服务器连接时的网络接口,和微型打印机连接时的打印接口。
n
所支持的操作系统:嵌入式开发和单片机开发核心的区别之一就是嵌入式开发往往基于一个操作系统之上来进行。嵌入式操作系统种类繁多,各具特色,因此,必须要选择一个较通用和易用的操作系统平台。在本开发实例中,我们选择嵌入式Linux作为后面的平台开发。
n
性价比:如果作为产品来开发,必须要考虑产品在价格上的竞争要素。嵌入式开发板可以自己设计,也可以直接购买市场上已有的成熟开发板,当然这种开发板一定是能够满足使用的最小系统,即裁减掉任何用不到的多余软/硬件。如果选择购买其他公司已有的开发板,首先要看该开发板是否稳定,其次要看该开发板是否能够提供所需的软件,比如各个部件的驱动;再次要看开发板的售后支持。
3) 微型打印机
微型打印机采用美松科技MS系列微型打印机,该快采用独特的面板式嵌入结构,便可将整个打印机固定在仪表面板上,操作简单、方便。
该款打印机的性能指标如下:
n
打印方式:针打,针式撞击点阵打印;热敏,热敏加热点阵打印。
n
打印速度:针打,1.0行/秒,0.7行/秒,0.4行/秒(5X7点阵字符);热敏,35毫米/秒。
n
分辨率:针打,8点/毫米,384点/行。
n
打印宽度:针打,33mm/48mm;热敏,48mm。
n
字符数/行:针打,16/24/40;热敏,32。
n
打印字符:全部448个字符集图块,包括96个ASCII字符,352个希腊文、德文、俄文、法文等字母,日文片假名,部分中文汉字,数字符号,打印字符,块图符;32个用户自定义字符。国际一二级汉字库中全部汉字和西文字、图符共有817个。
n
字符大小:西文,5 X7点阵;块图符,6 X 8点阵;用户自定义字符,6 X8点阵;
n
汉字,24 X24点阵,16 X 16点阵,12 X12点阵。
n
控制板:采用模块化驱动控制电路,有效保护打印头的绝对安全;专门的复位控制电路、电源检测电路以及近乎完美的软硬件看门狗控制电路,确保打印机不死机、不乱打。热敏控制电路提供温度检测、电压检测、过热检测、缺纸检测,有效延长打印头的使用寿命,更能保证打印机在不同的工作场合打印效果清晰美观、高效流畅、完整、无噪声。
n
控制命令:通用ESC/P打印命令。支持字符、汉字、图形的正向、反响、左右旋转打印、反白、上下划线、左右划线打印以及任意变高、变宽、行间距、字间距调整,水平制表、垂直制表,曲线打印,条形码打印等功能,以及以上功能的混合打印,也可以根据用户需要适当增减相关命令。
n
打印汉字:V8型、VS型可通过随机软件自由选择打印汉字的数量、汉字的字体、汉字的点阵,并通过随机电缆下载至打印机。打印汉字只需输入相应汉字代码即可方便快速打印。8+型标配16 X16点阵与12 X12点阵国标一、二级汉字字库。
n
打印缓存:32KB。
4) 远程服务器
远程服务器用于存放大型数据库,它通过网络接口接受嵌入式开发板发来的数据,然后进行查询、更新等处理工作,最后把结果再传给嵌入式开发板。所以,远程服务器必须具备较强的数据存储能力和网络通信能力。在本系统设计中,我们可以用一台普通PC来完成这个功能。
5) 软件选型
嵌入式系统是一个软/硬件相结合的系统,硬件好比人的身体,而运行在其上的软件则好比人的灵魂。没有软件的驾驭,硬件只是一些废铜烂铁,因此,相比较硬件选型而言,软件的选择也异常重要。在整个软件选型中,要特别重视两个方面的因素:
n
运行其上的嵌入式操作系统:嵌入式操作系统是整个软件的核心和基础,它的功能的强大与否直接影响后面整个系统的设计,因此必须加以重视。目前嵌入式操作系统有几百种之多,它们各具特色,各有相应的用武之地。通常来说,各个嵌入式开发板提供商,在其嵌入式开发板上会提供已经移植好的的几个嵌入式操作系统,这些操作系统通常为嵌入式Linux、WinCE、VxWorks和uCosII。uCosII是一个非常好的教学操作系统,但由于其功能较少,在商用领域使用比较少。而VxWorks由于较昂贵的使用费用,在中小型公司中使用也较少。WinCE主要用于PDA等领域,嵌入式Linux由于其源码开放,共享资源丰富,整个系统功能异常强大,因此在嵌入式领域应用得也最为广泛。
n
软件驱动支持:由于不同的嵌入式开发板上提供的接口也各不相同,因此Linux内核源码包不可能提供所有外设接口的底层驱动。通常情况下,这些底层驱动或者由嵌入式开发板提供商做好后提供给用户使用,或者由用户自己开发出来。而底层驱动的开发是整个系统设计中比较耗时的工作,所以用户在选择开发板时,尽量选择已提供自己所需要的底层驱动的开发板,这样可以缩短项目的开发周期,减少项目投资,提高整个产品的竞争力。
六、 软/硬件设计
6.1 设计流程
嵌入式移动打印终端系统开发可以划分为5个模块:
n
开发环境的建立
n
硬件的设计
n
扫描仪驱动的设计
n
打印机驱动的设计
n
服务器数据库的设计及通信模块的开发
整个设计思路是:从硬件到软件,从底层到上层的设计方法。
总统设计流程图如3所示。
图3 嵌入式移动打印终端总体设计流程图 6.2 硬件设计
由于本开发系统中的核心部件采用已有的开发板,硬件设计的任务就大为简单,其核心任务就转化为通过嵌入式开发板将各个部件连接在一起。
1) 嵌入式开发板和扫描仪的连接
从图3可以看出,整个嵌入式开发板提供两个串口,其串口部分的点亮器设计如图4所示。
图4中J8为串口0,使用9根线中的5根;而J7为串口1,使用9根线中的3根。通常情况下,串口0用作整个系统的控制终端,所以串口1来连接扫描仪。下面来比较串口1和扫描仪接口,看看扫描仪是否可以直接连到开发板的串口1上(见表4)
图4 ST2410嵌入式开发板串口部分电路设计 表4 比较串口1和扫描仪接口
| 嵌入式开发板串口1 | 扫描仪上串口
| 串口头类型
| 公头
| 母头
| 电平类型
| RS-232电平
| RS-232电平
| 所用引脚
| 引脚2:用于TXD 引脚3:用于RXD 引脚5:用于GND | 引脚2:用于TXD 引脚3:用于RXD 引脚5:用于GND | 通过表4中的比较,可以看出扫描仪可以直接接到嵌入式开发板上。
2) 嵌入式开发板和远程服务器连接
嵌入式开发板ST上有一个Mbps以太网接口,其接口部分电路如图5。
图5 嵌入式开发板ST2410以太网接口电路图 远程服务器同样具有网络接口,可以通过网线直接将这两个设备接入到网络中。
3) 嵌入式开发板和微型打印机连接
此处采用的打印机为深圳市美松科技有限公司生产的MS-t380微型打印机,此打印机是一种面板式超小型点阵式通用打印机。整体体积小,重量轻,功能完善,操作简单,连接方便。表5列出了此类型打印机的主要特点。
表5 MS-t380微型打印机的主要特点 打印方法 | 撞击式点阵打印 | 支持打印的字符
| 共448个字符,包括:
n
全部96个ASCII字符(5X7点阵)
n
希腊文、德文、俄文、法文等字母
n
数学符号、打印符号
n
块图符(6 X8点阵)
n
32个用户可定义字符(6 X8点阵)
n
专用汉字库16 X16点阵国标汉字
| 接口
| n
并行接口插座(26线针型扁平电缆插座)
n
串行接口插座(D型9线孔型插座)
| 打印宽度
| 16字符/行、24字符/行或40字符/行
| 打印速度
| 1.2行/秒,0.7行/秒或0.4行/秒
| 打印纸
| 44.5mm
| 电源
| 直流,电压5V5%,电流1.5A
| 信号电平
| TTL电平
| MS-t380 微型打印机具有串口和并口两种接口类型,但是由于嵌入式开发板上两个串口都已被使用掉,所以此处必须使用其并口来和嵌入式开发板连接。从图2中可以看出,嵌入式开发板上没有并口接口,但是开发板上有一些多余的GPIO口,恰好可以利用这些GPIO口来构建一个并口。
① MS-t380 微型打印机的并行接口
MS-t380 微型打印机采用了与CENTRONICS标准兼容的并行接口,接口插座为26线针型扁平电缆插座。并行接口插座引脚序号如图6所示。
图6 并行接口插座引脚序号 并行接口各引脚信号定义如表6所示。
表6 并行接口各引脚信号定义
引脚号
| 信号
| 方向
| 说明
| 1 | | 入
| 数据选通脉冲,上升沿时读入数据
| 3 | DATA1 | 入
|
这些信号分别代表并行数据的第1-8位信息,每个信号当其逻辑为“1”时为高电平,逻辑为“0”时为低电平
| 5 | DATA2 | 入
| 7 | DATA3 | 入
| 9 | DATA4 | 入
| 11 | DATA5 | 入
| 13 | DATA6 | 入
| 15 | DATA7 | 入
| 17 | DATA8 | 入
| 19 |
| 入
| 回答脉冲,“低”电平表示数据已被修改
| 21 | BUSY | 出
| “高”电平表示打印机正在“忙”,不能接收数据
| 23 | PE | 出
| 接地
| 25 | SEL | 出
| 经电阻上拉“高”电平,表示打印机在线
| 4 |
| 出
| 经电阻上拉”低”电平,表示无故障
| 2,6,8,26 | NC | 出
| 未接
| 10 | GND | 出
| 接地
| ② 设计接口板
表6显示MS-t380 微型打印机的并行接口虽然有26个引脚,但真正使用的只有15个,其中有两个地线。因此如果要在嵌入式开发板上使用GPIO口构建一个并口,其实只需要13个GPIO线就可以了。
通过查看开发板上的电路图,可以找到GPC8-GPC15和GPD0-GPD413个GPIO引脚空闲(它们其实是LCD的引脚,由于没有使用LCD,故可以他用,如果要使用到LCD,则必须另外找13个空闲引脚出来)。
接口板电路连接如图7所示。
图7 接口板电路连接 由于开发板的GPIO口和打印机不是一一对应的,因此还需要做一块转接板,在转接板上将两边的引脚按照图8所示对应正确,并焊接好。
其中要注意的是,打印机的SELECT和ERROR要经过上拉电阻才能置“高”,因此必须在SELECT和GPD3、ERROR和GPD4之间接一个4.7KΩ的上拉电阻,具体接法如图8所示。
同样,ERROR与GPD4接法相同。
从图7可以看出,微型打印机和嵌入式开发板的GPIO是直接焊接到一起的,这样做有个非常重要的原因,GPIO和微型打印机引脚电平相同,都采用TTL电平。
6.3 打印机驱动的设计
前面对嵌入式Linux下的驱动开发已经做了很深入的探讨,微型打印机的驱动仅是一个特例而已。按照编写嵌入式驱动的方法步骤,打印机驱动的编写可分为下列几个环节。
定义主设备号和设备名;
实现社保驱动初始化函数和清除函数;
设计所要实现的文件操作,定义file_operation结构,实现所需要的底层接口调用函数;
将驱动编译到内核或编译成模块,用insmod命令加载;
生成设备节点文件。 |
|