![IP2000网络终端系统方案概要设计_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/f73e3b8c-0d93-42a9-aa80-4bc06ea5e8c0/f73e3b8c-0d93-42a9-aa80-4bc06ea5e8c01.gif)
![IP2000网络终端系统方案概要设计_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/f73e3b8c-0d93-42a9-aa80-4bc06ea5e8c0/f73e3b8c-0d93-42a9-aa80-4bc06ea5e8c02.gif)
![IP2000网络终端系统方案概要设计_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/f73e3b8c-0d93-42a9-aa80-4bc06ea5e8c0/f73e3b8c-0d93-42a9-aa80-4bc06ea5e8c03.gif)
![IP2000网络终端系统方案概要设计_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/f73e3b8c-0d93-42a9-aa80-4bc06ea5e8c0/f73e3b8c-0d93-42a9-aa80-4bc06ea5e8c04.gif)
![IP2000网络终端系统方案概要设计_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/12/f73e3b8c-0d93-42a9-aa80-4bc06ea5e8c0/f73e3b8c-0d93-42a9-aa80-4bc06ea5e8c05.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、IP2000 是我们公司根据市场需求将开发的第二代网络终端,要求具有友好的类WINDOWS 风格的人机交互界面,在满足传统终端全部功能基础上,实现以太网联机功能(实现 TELNET 远程登录协议)和支持多任务的一种更新换代产品。功能需求简述如下:l提供类 WINDOWS 风格的用户界面,采用桌面图标的方式启动任务l实现 TELNET 远程登录协议l支持最多达 8 个任务同时运行l支持 PS/2 鼠标l支持网络版本更新l支持网关功能l支持本地和网络打印机在此需求前提下,我们决定采用多任务嵌入式操作系统(EOS)+嵌入式 GUI+终端仿真的结构来实现需求,系统结构框图描述如下:AP窗口管理图形界面
2、API支持中文支持系统设备接口头表示控制流实线箭头表示数据流进程管理文件系统网络支持内存管理中断和系统调用设备驱动IO控制GUI 虚线箭EOS一、结构设计在此系统框图的基础上,我们分别对各层次进行结构设计分析:1、EOS 设计目前存在的嵌入式系统多不胜数,流行的有 WinCE、PalmOS、Vxwork、pSOS、Neculeus等多种系统。从目前嵌入式系统使用最广泛的信息家电行业和通讯行业分析,PalmOS 和 WinCE、Vxwork 是当前应用最广泛的三种:lWindows CE:Microsoft Windows CE 是一个简洁的,高效率的多平台操作系统。它不是削减的 Windows
3、95 版本,而是从整体上为有限资源的平台设计的多线程,完整优先权,多任务的操作系统。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定制,但 WinCE 是非开放性操作系统,使第三方很难实现产品的定制,嵌入式操作系统追求高效、节能,而 WinCE 在这方面是笨拙的,它占用过多的内存,应用程序庞大,而且入门费和许可费较高,使得整个产品的成本急剧上升。所以 WinCE 多用于从高档的产品。lVxWorks:VxWorks 所在的公司 WindRiver 兼并了 pSOS 的 ISI 公司,使得该公司现在有两大 RTOS 系统。VxWorks 是目前嵌入式系统领域中使用最广泛,
4、市场占有率最高的系统。它支持多种处理器,如 x86,i960,Sun Sparc,Motorola MC68xxx,MIPS RX000,POWER PC 等等。使用的是和 UNIX 不兼容的环境,大多数的 VxWorks API 是专有的。采用 GNU 的编译和调试器。lpSOS:ISI 公司已经被 WinRiver 公司兼并,现在是属于 WindRiver 公司的产品。这个系统是一个模块化,高性能的实时操作系统,专为嵌入式微处理器设计,提供一个完全多任务环境,在定制的或是商业化的硬件上提供高性能和搞可靠性。可以让开发者将操作系统的功能和内存需求定制成每一个应用所需的系统。开发者可以利用它来
5、实现从简单的单个独立设备到复杂的、网络化的多处理器系统。lQNX:QNX 是一个实时的,可扩充的操作系统,它遵循 POSIX.1 (程序接口)和 POSIX.2 (Shell 和工具)、部分遵循 POSIX.1b(实时扩展)。它提供了一个很小的微内核以及一些可选的配合进程。其内核仅提供 4 种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它 OS 服务,都实现为协作的用户进程,因此 QNX 内核非常小巧(QNX4.x 大约为 12Kb)而且运行速度极快。这个灵活的结构可以使用户根据实际的需求将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机
6、操作系统。lPalm OS:3Com 公司的 Palm OS 在 PDA 市场上占有很大的市场份额,它有开放的操作系统应用程序接口(API),开发商可以根据需要自行开发所需要的应用程序。目前已经有总共 3500 多个应用程序可以运行在 Palm Pilot 上,其中大部分应用程序均为其他厂商和个人所开发,使得 Palm Pilot 的功能得以不断增多。这些软件包括计算器、各种游戏、电子宠物、地理信息等等。在开发环境方面,可以在 Windows 95/98,Windows NT 以及 Macintosh 下安装 Palm Pilot Desktop;PlamPilot 可以与流行的 PC 平台上
7、的应用程序如 Word,Excel 等进行数据交换。lOS-9:Microwave 的 OS-9 是为微处理器的关键实时任务而设计的操作系统,广泛应用于高科技产品中,包括消费电子产品,工业自动化,无线通讯产品,医疗仪器,数字电视/多媒体设备中。它提供了很好的安全性和容错性。与其他的嵌入式系统相比,它的灵活性和可升级性非常突出。lLynxOS:Lynx Real-time Systems 的 LynxOS 是一个分布式、嵌入式、可规模扩展的实时操作系统,它遵循 POSIX.1a、POSIX.1b 和 POSIX.1c 标准。LynxOS 支持线程概念,提供 256 个全局用户线程优先级;提供一些
8、传统的,非实时系统的服务特征;包括基于调用需求的虚拟内存,一个基于 Motif 的用户图形界面,与工业标准兼容的网络系统以及应用开发工具。lLinux:Linux 在嵌入式领域获得了飞速发展,目前正在开发的嵌入式系统中,49%的项目选择 Linux 作为嵌入式操作系统。Linux 之所以能在嵌入式系统市场上取得如此迅速的发展,与它自身的优良特性有着不可分割的关系:免费、开放源码,丰富的软件资源;功能强大的内核,性能高效、稳定,多任务;支持多种体系结构,如 X86、ARM、MIPS、ALPHA、SPARC 等;完善的网络通信、图形、文件管理机制;支持大量的周边硬件设备,驱动丰富;大小、功能都可定
9、制;良好的开发环境,不断发展的开发工具集;广泛的软件开发者的支持;价格低廉。从我们 IP2000 网络终端的需求和目前网络终端的市场来分析,目前我们公司已有的产品 IP1000 采用 Linux+Microwin 这种方式已基本实现网络终端的需求,只是在界面的美观程度和系统速度上比同类型的较为突出的实达 netterm 860 终端有所不足,但从系统的角度和开发进度以及成本的角度考虑,重新引进一种新的嵌入式操作系统,以上介绍的几种 EOS引进的门槛成本太高,且需要较长时间消化和熟悉,移植到我们的硬件平台也需要长时间的过程,综合考虑,我们还是决定在博利思提供的 Linux 内核的基础上构筑我们的
10、 IP2000 的OS,并准备对内核作如下改进:l优化 framebuffer 代码,并在原有 256 色的基础上增加 16 色支持l修改 ttyS0/1 的设备驱动,解决目前 IP1000 存在的所有由于串口造成的问题2、GUI 设计通过对目前几种基于 Linux 的嵌入式 GUI 的详细分析,较好的嵌入式 GUI 通常结合面向对象方法采用多层独立设计,具有以下结构:l 设备相关层(driver)在这一层的功能应该是将系统中与设备和操作系统平台的具体细节屏蔽起来。它利用实际的设备驱动程序接口或者 OS 系统调用来与硬件设备交互,这些硬件设备主要包括 screen、mouse 和 keyboa
11、rd 等。我们使用设备对象(device object)的概念来描述一类设备,每一个对象描述了一类实际设备的属性和方法。比如,screen设备对象就描述了 screen 设备的各种属性(屏幕尺寸、分辨率、像素深度、像素格式、逻辑显存首地址等等)和基本方法(打开和关闭显示器、设置调色板、返回屏幕属性、读写像素点等等)。对于同一类设备在不同驱动或者平台上的具体情况则以设备对象实例来描述,比如 screen 类型的设备,我们可能让它工作在 Linux 上,通过 framebuffer 或者 SVGALib 驱动来操作它。他们的对象类相同,但是类的属性和方法的实现不一样。中间层看到的只是该类设备的可选
12、的对象实例,不用关心底层是如何操作的(也就是对象的方法是怎样实现的)。最底层实际上是以设备对象的方式为中间层提供了一个抽象的设备驱动界面。为了移植更容易,最底层应尽量简洁,只实现最基本的设备功能函数。可以看到,当系统要移植到另外的平台上时,我们只要按照各类设备对象的定义实现相对较少的函数就能建立新的设备对象实例并让中间层选择他们就可以了。l 设备无关层(engine)这一层的功能是提供一个可以为各种应用层共享的与设备无关的核心图形引擎,其中的主要工作就是实现各种图形函数和输入设备的功能函数。对于中间层,它向下看到的是各类设备对象,向上则是要提供一个抽象的核心图形界面,使得上面的应用层对它所使用
13、的到底是什么设备对象不用去理会。很显然,这一层根据不同的设备和平台选择相应的设备对象实例来实现核心图形引擎。 由于每类设备的各个实例拥有同样的对象类型定义,所以中间层基于设备对象所实现的功能是不会因为设备和平台的更改而受影响的。同时,中间层把消息驱动机制、窗口管理机制交给应用层去完成,因此,对于各类型的应用层(Win32 或者是X-Windows),中间层完成的功能都是通用的。l 应用层(API)这一层的功能是按照应用的具体要求为应用程序提供适当的应用层用户界面。当应用程序不需要窗口系统的时候,用户自定义图形界面将十分简单,甚至可以什么都不做而直接使用中间层提供的抽象核心界面。如果用户需要完善
14、的多任务窗口系统,比如是类 Win32 的,可以使用抽象核心界面来实现其应用程序编程接口(API)以及窗口和消息机制等。嵌入式 GUI 的体系结构的抽象参考模型如下:目前采用此套结构的比较成熟的嵌入式 GUI 有 Microwindow 和 MiniGUI 两种 GUI 平台, Microwindow 平台提出较早,并且经过多年的实践,已经比较成熟,目前国内的众多嵌入式系统厂商包括联想、中软、红旗、桑夏科技、华恒等都采用 Micorwindow 作为基础开发自己嵌入式 GUI,但因为该项目缺少强有力的核心代码维护,代码质量参差不齐,因此在另外一种 GUI Qt/Embedded 发布以来,它就
15、长时间停留在了 0.89Pre7 版本,近几年来发展缓慢; MiniGUI 项目起源于清华大学一个采用嵌入式 Linux 系统的工业控制系统项目,开发之初借鉴了 Microwindow 的一些经验,但后来在发展速度上超过了 Microwindow(MiniGUI 已是1.2.0 版本,但Microwindow 至今还是 0.89pre 版本),由于两者都是自由软件项目,开放源代码和所有文档,可作为我们 IP2000 网络终端的 GUI 设计的参考选择,我们可以在其中一种的基础上构筑我们自己的 GUI 平台。由于 IP2000 网络终端有多任务功能需求,因此我们的 GUI 设计必须能够满足适应多
16、任务的需求,通过对已有的两种 GUI 进行预研,我们发现, GUI 的多任务设计通常有两种方法:l采用 C/S 结构C/S 结构是天然的多任务,在 Sever 端专门负责监控外部事件和随之的消息传递和分发,Client 完成消息的处理,各个 Client 之间互不干扰和影响。采用这种方法实现多任务支持的有 Microwindows 的 Nano-x 方案和 MiniGUI,但两种 GUI 实现的机制有很大差别,MicroWindows 为了追求和 X Window 的兼容,采用了传统的基于 Unix套接字通讯方式的 C/S 系统结构,这样大量的数据在客户/内核/服务器之间传递,增加了系统负荷,
17、占用了更多系统资源,降低了系统的图形效率,并不适应于 CPU 速度较慢和系统资源有限的一般嵌入式场合。而 MiniGUi 吸取了 Microwindows 的经验,采用了独特的体系结构,它的最初版本采用线程机制来实现 C/S 结构,这样所有的应用程序都运行在同一个地址空间,大大提高了程序之间的通信效率,但这种结构也导致了系统整体的脆弱,如果某个线程因为非法的数据访问而终止运行,整个进程都将受到影响,不过,这种体系结构对关键的实时控制系统来说,还是非常适合的,后期发展的 MiniGUI-Lite 版本则作了一些改进,在独立多进程和系统效率之间作了一些综合,采用套接字和共享内存结合的方式支持多进程
18、,并且提供前后台进程的切换,通过共享内存机制提供全局资源的共享,以便减少实际内存的消耗,但好像 MiniGUI 的图形引擎不是直接建立在内核 framebuffer 驱动上,而要由如 Libggi 或 Svgalib 等更高一级的图形库支持,并且由于 MiniGUI 采用了独特的接口设计,其应用程序的可移植性很差,而 MicroWindows 的 Nano-x 方案则采用 X Window 的兼容接口设计,大大方便了许多基于 X Window 的应用程序的移植和代码复用。l采用 GUI 上下文共享的方法通常在单任务 GUI 基础上开发图形界面应用有如下图左边的系统流程,应用程序通过调用 GUI
19、 的 API 实现相应功能,而这些函数有自己的上下文,并且这些上下文主要是通过数据空间的形式(data & BSS)来保持的。由于消息系统的同步功能,如果在同一进程中创建并使用多个窗口,也不会造成 GUI 的冲突。例如,可以在一个进程中构造记事本和计算器,两个窗口都可以正常地运行,因为任一时刻只有一个窗口接受消息队列的消息分发并处理(使用或改变 GUI 上下文)这种同步是由消息系统来保证的。假如把 GUI使用的上下文和应用其它部分的上下文分开,一个应用完全是可以正常运行的。如果把这种方法应用到多任务的系统,如果各个任务独有自己的 GUI 上下文,则不能解决一些系统公共的设备例如鼠标、键
20、盘、输入法等事件的检测、转换、分派以及系统庞大等许多问题(在 C/S 结构中是由 Sever 来完成这个工作的)。由此只能在各个任务之间共享 GUI 上下文,同步访问的方法来实现多任务,但在这种方法下,可能出现上图右部的状况,两个应用的 GUI API 接口函数会不可预知地改写 GUI 的上下文,会造成严重冲突,为了避免这种情况,通过 OS 的锁机制来实现在不同进程间实现同步地访问 GUI 上下文,则可实现不同进程有秩序地协同作,达到多任务的目的,通常通过采用了嵌入式 Linux 中常用的一些工具,包括 ld 脚本、ld、nm、objcopy、awk、objdump 等把ELF 文件各部分抽取
21、出来、并重新定位,用共享内存函数把指定的内存映射到固定的地址的方法,把抽取的 GUI 上下文装载到固定位置的方法来实现共享。共享 GUI 上下文的各进程运行时结构如下图所示:share data &bssdata & bsscodestatck进程私有空间进程虚拟空间进程共享空间其中 share data & BSS 就是 GUI 的上下文。采用这种方法来设计 GUI 多任务支持的有博利思公司为我们公司 IP1000 多任务版网络终端设计 GUI,该 GUI 是在 Microwindows 的基础上改进后的设计,事实上,这种设计方法也是借鉴了 MiniGUI-Lite
22、版本的一些技术,用一个主进程作为虚拟 Sever 处理所有的外部事件,完成消息转换后完成消息的分发并完成窗口维护和管理,同时负责用户进程的启动(用 fork 的方式复制子进程,因而主进程和所有用户进程之间皆为父子关系,各用户进程之间则互为兄弟进程),各用户进程则接受并完成消息处理。主进程和用户进程通过共享内存的方式来实现 GUI 上下文共享和通讯,并且采用主进程附加调度的方式:在 LINUX 内核进程调度的基础上再建立应用调度,任意时刻只让其中一个用户进程运行(Running 状态),其他用户进程则让其进入 Sleep-on 状态,主进程并用消息分发的主动权采用消息驱动的机制完成各用户进程间的
23、调度,并实现前后台时间片的主动分配,这种方法不仅可实现共享 GUI 的访问冲突,同时也提高系统的效率决不使空闲的用户进程占用宝贵的 CPU 时间片资源,但这种方法的缺点也是显而易见的。对于我们 GUI 的设计,我们进行了较长时间的预研,并对 Microwindows/Nano-x 和 MiniGUI 的多任务机制进行了较为详细的剖析,觉得两者实现多任务的 C/S 结构对于我们的 arm7500 硬件平台并不适合,由于 C/S 结构系统效率较低,在我们这种硬件平台资源的基础上,性能远远不能达到我们的功能需求,鉴如此,我们决定在 IP1000 多任务版本 GUI 的基础上, 开发 IP2000 的
24、 GUI,主要是完善在 IP1000 开发过程中已发现的缺陷,并增加如下功能的支持:l 对 Microwindows 桌面和窗口管理进行完善,使整个桌面和窗口管理与 windows 风格更加类似,从而为 IP2000 设计出更好的人机界面:多窗口操作,图标的拖动,窗口最大、最小化操作等l 参照 MiniGUI 改进 Microwindows 图形引擎的一些算法,提高 GUI 的效率l增加业务窗口下拉菜单的支持(参考 MiniGUI 菜单组件设计)l增加国际标准化汉字系统:支持 16x16(大字符集)、24x24 汉字库(GB2312)多种汉字字体l字符显示驱动增加 16 色支持l寻找替代单消息
25、队列共享的进程间通讯机制,避免某个用户进程崩溃导致整个系统崩溃。3、 仿真设计设计目标l降低模块间的耦合关系l减少中间层l方便各个平台的移植设计方法l将 IP1000 的仿真程序进行整合,按模块封装成 API。l针对几个关键点进行技术改进,争取最大程度地发挥系统和硬件平台的优点。l在纵向的层次上只有相邻的两层有调用和被调用的关系,相同的层次可以调用和被调用。仿真结构设计全局模块、命令分析模块键盘模块显示模块打印模块外设模块通讯模块自检模块键盘仿真driver显示仿真driver打印仿真driver外设仿真driver通讯仿真driver自检仿真driverNVR 操作键盘 API显示 API打
26、印 API串口 API网络 APINVR API中文输入法仿真层仿真 driver 层microwin模块说明1)、仿真全局模块,包括:l初始化 Gblint 的数据l改变汉字通讯码的显示拼字入口l设置输入/输出入口(将终端仿真软件从功能上分为输入、输出两大部分)l复位通用命令分析器l根据参数初始化串口l恢复、保存、缺省 NVR 参数2)、命令分析使用有限状态自动机来解析命令序列。3)、键盘模块仿真上层:l处理控制码(ESC、CAN、BS、CR、XON、XOFF)l处理 ASCII 码l处理本地功能键l处理用户自定义序列键l处理缺省功能键l汉字译码并发送仿真 driver 层:将系统发来的键盘
27、消息 WM_KEYDOWN、WM_KEYUP 转换成终端所需的键码(高字节扫描码低字节 Ascii 码)GUI 层:l在键盘有数据时,更新键盘状态,分发键盘事件。l将原始码转换成终端所需的键码l如果是输入法相关键且输入法有效,进输入法处理;否则向上层发WM_KEYDOWN 或 WM_KEYUP 消息。4)、显示模块将显示从操作对象上可以分为 5 个部分:屏幕、光标、字符显示、滚屏、图形。仿真上层:l根据通讯方式的不同,TTY 显示一个国标码/ASCII 码/ID 码/CNC 码。l 能在光标的当前位置以当前属性和字符集显示一个 ASCII 字符l 屏幕开关显l 背景色设置仿真 driver 层
28、:l 初始化显示。主要是创建光标、设置光标的属性、显示光标、设置屏幕行数和列数。l 光标控制:设置光标属性、位置显示光标属性、位置移动光标得到光标的位置和光标左右的字符。GUI 层:清除光标支持多个光标l光标驱动:创建光标、释放(清除)光光标属性(点/线、固定/闪烁/消隐)支持l屏幕驱动开/关显、节电模式支持分辨率、背景色设置支持l字符显示驱动西文、汉字、汉字左半、汉字右半显示支持自造汉字显示支持字符属性(上/下/左/右划线、高/低亮/正常、倍高/宽、显示/消隐)支持l滚屏驱动l图形驱动向上滚屏、向下滚屏支持显存数据操作支持点、线、圆等基本图形操作支持5)、打印模块仿真上层l选择打印机l打印机
29、字库打印l终端字库打印l正常打印拷贝屏幕l自动打印屏幕上的一行l透明打印l条码打印一个字符l退出打印l打印出错时弹出模态窗口,显示提示信息,用键盘或鼠标选择 Y/N来决定继续打印/退出打印。仿真 driver 层l得到当前行列的 VRAM 地址l打印字符属性处理l将显示点阵转换成打印点阵l打印一个字符(串)到设置的打印端口。最多查询打印端口 0x7ff次,若就绪就送打印,若打印机错退出。l打印测试GUI 层l后台打印字符缓冲区支持l并口支持6)、外设、通讯外设模块和通讯模块的程序结构以及两个模块之间的关系如下图所示:仿真上层仿真 driver 层网络 API串口 APIGUI 层外设模块仿真上
30、层:l打开/关闭端口l打开/关闭密码键盘、读密码键盘的数据向主机发送l辅串口、透明打印等命令分析l向辅串 1n 输出数据l读辅串口数据向主机发送l串口拷屏l串口打印一个字符通讯模块仿真上层:l通讯初始化l通过主通讯口(主串口或网络口)以非阻塞方式从主机读数据。l通过主通讯口(主串口或网络口)以阻塞方式从主机读数据。l写一个字节数据到主通讯口(串口或网络口)l写一串数据到主通讯口(串口或网络口)外设模块仿真 driver 层:l 串口通讯初始化l 向主串、辅串输出数据l 从主串、辅串读数据l 设置串口参数l 串口复位l 串口测试网络模块仿真 driver 层:l 网络通讯初始化l ping 功能
31、支持l 打开/关闭一个 Telnet 会话l 从一个 Telnet 会话中读数据l 向一个 Telnet 会话中写数据外设模块 GUI 层:l 打开/关闭串口l 从串口读数据l 往串口发送数据l 设置串口参数l 读取串口参数网络模块 GUI 层:l 打开/关闭一个网络联接l 从网络读数据l 通过网络发送数据7) 、输入入法模块输入法放嵌入 GUI 层,并支持输入法挂接接口设计。l 切换输入状态l 切换输入法l 取得输入键的 Ascii 码,查表取得相应的汉字内码,把汉字的内码发送给提示行,用数字键选择汉字l 自造汉字和短语输入支持l 提供修改默认输入法的 API8) 、NVR 模块仿真 dri
32、ver 层:l 读取/保存终端参数l 读取/保存自造短语l 读取/保存自造汉字GUI 层:l 读 NVR 到缓冲区l 保存缓冲区到 NVRl 从缓冲区中读数据l NVR 校验读l NVR 校验写l 读取自造短语、自造汉字9)、自检模块l 键盘测试l 串口测试l 并口测试l 网络测试l 循环自检l 演示测试l 报告自检结果二、 流程设计在以上设计的基础上,我们采用 SDT 方法作如下基于消息驱动机制数据流程的详细流程设计(图见基于消息驱动机制数据流程设计):基于消息驱动机制数据流程设计消息循环消息处理流程PeekMessage()查询消息队列消息分发出口系统公用消息队列 WM_LBUTTONUP
33、主桌WM_KEYDOWN面消息处理绘制主桌面WM_COMMAND业务进程WM_COMMAND调度WM_SETFOCUS启动当前应用,切换到前台,申请当前应用的 socket号处理键盘连发系统调用 select()输入法处理查询所有公共读鼠标button以及位置状态检测网络状态入口鼠标消息WM_FDINPUT/OUPUT检测串口状态WM_FDINPUT/OUPUT WM_KEYDOWN终端仿真消息WM_KEYUP处理 1KbPro传统终端仿真处理设备和注册设备读键盘状态键盘消息 WM_CHARSysOut显示模块全局上下文共享WM_FDINPUTWM_CREATE读取串口或网络数据获取上下文释放
34、上下文注册sockfd行属性表点阵读取(数组方式)仿真显示上层GUI显示驱动WM_PAINT屏幕、状态行刷新如果需要,网络初始化显示模块VRAM字符属性变换终端到屏末引起逐行memmove方式滚屏操作DRAM操作仿真消息处理 N13如上图所示我们可取得如下结论:1、流程设计的几个基本原则:l 消息循环的速度必须足够快,也就是说从事件的检测>完成消息的转换>进入消息队列>从消息队列取出分发>相应消息回调函数处理完成>事件检测 这整个循环必需在某个限定时间内完成,才不会造成事件丢失和消息处理滞后,应用不能有长时间的某个消息处理流程。l 由于整个应用系统共享一个消息队列
35、,所有消息处理在不非法操作造成系统崩溃的基础上都必须能够正确返回,否则某次消息的处理会造成消息循环停止,造成系统停止。2、性能分析:我们的传统终端 810C/910/920 等型号和 IP1000/2000 都是采用 CLPS-7500 硬件平台,分析两者的流程,我们可作出如下图所示对比分析,为了支持图形界面、多任务、网络,我们不得不在我们的系统中引入 OS、GUI,随之而来的则是许多中间流程的引入,使我们整机效率和处理速度等性能的降低,所以我们 IP2000 功能指标如刷屏、滚屏、处理速度等所能达到的终极目标就是采用同类型 CPU 的传统终端,一般来说,达到 80左右当属正常。一般来说,可考
36、虑如下角度优化影响性能指标的流程:l频繁在内核态和用户态之间切换l各层次之间接口混乱、冗余lGUI 操作效率低下l多任务各进程之间数据通讯效率低下lBIOS 层算法、代码效率低下对比分析传统终端网络终端外部中断事件外部中断事件终端仿真AP主循环事件查询>分发>终端仿真数据分析>处理OS 内核处理内核态OSBIOS消息 循环(查 询、组装、分发)终端仿真数据分析>处理GUIAP其他出口显示BIOS用户态其他出口显示BIOSBIOS3、IP1000 目前所存在的几个未解决问题的初步分析l 系统处理速度较慢系统处理速度主要由数据通讯方法、显示、滚屏等因素综合构成,这个指标的瓶
37、颈也就要根据实际情况分析,举个例子:假如我们采用 Nano-x 方案实现多任务,则在 SERVER 和 CLIENT 之间数据传递的低效的套接字方法就成为了我们速度的瓶颈,我们采用了较高效率的共享内存方式传递数据,则显示、滚屏 BIOS 的算法就成为我们速度提高的关键,而且从 IP1000 串口联机和网络联机处理速度的差异分析,我们也可得出在 AP 层数据处理的方法和访问上下文的机制也可成为影响性能的关键:网络联机一个 WM_FDINPUT 消息对应处理一个数据包,而串口一个 WM_FDINPUT 消息则只处理单个数据,造成串口联机处理速度很慢。l 滚屏、刷新速度较慢刷新速度主要是由终端仿真的显示结构和 GUI 字符显示的方法(算法)决定,滚屏速度则与滚屏所采用的机制(行滚? 屏滚?)关系最大,当然也与系统数据传递的速度及显示底层的实现有关,我们可从改进这三个方面作为突破口,可望有较大性能提高。此外如果在维持 16 点阵不变的情况下,采
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海股权转让合同模板
- 450亿广告投放框架合同正式签署
- 人力资源和社会保障局与劳动合同法改革探讨
- 个体户全职员工标准劳动合同合同范本
- 个人小型店面租赁合同样本
- 个体药店并购转让合同及附件
- 产业合作投资合同
- 交通事故赔偿合同范本大全
- 个人家政服务劳务合同
- 丧葬礼仪服务合同模板
- 班级管理交流-班主任工作经验交流课件(共28张ppt)
- 建筑装饰工程计量与计价试题一及答案
- 简易劳务合同电子版
- 明代文学绪论
- 通用税务自查情况说明报告(7篇)
- 体育赛事的策划、组织与实施 体育赛事利益相关者
- 分析化学(高职)PPT完整版全套教学课件
- 晚熟的人(莫言诺奖后首部作品)
- m拱顶储罐设计计算书
- 2023外贸业务协调期中试卷
- 新人教鄂教版(2017)五年级下册科学全册教学课件
评论
0/150
提交评论