基于Linux和MiniGUI的某型指控终端人机接口设计

发布者:二进制心灵最新更新时间:2010-10-10 来源: 现代电子技术关键字:Linux  MiniGUI  指控终端 手机看文章 扫描二维码
随时随地手机看文章

  0 引言

  随着武器装备信息化程度的提高,各种嵌入式信息装备得到了广泛应用。作为未来战场主要作战平台的各种战斗车辆,其车载指挥控制平台的设计得到了广泛重视。

  一个车载指控平台的功能主要体现在以下几个方面:监控、显示车辆的技术状态;车际间的指控、通信;车辆的定位、导航;各种文电处理等。本文将介绍一个基于ARM和MiniGUI的车载指控系统人机接口部分的设计,这个系统初步实现了上述车载指控平台的主要功能。

  l 软硬件的选型

  受车辆内部空间的限制,指挥控制终端必须做到小型化,嵌入式。ARM作为一种已经在多个领域得到非常广泛应用的架构,这里采用它是一个很好的选择。该课题选择在国内有着较广泛市场的SAMSUNG公司的S3C2410芯片作为CPU。S3C2410芯片主要应用于手持设备或者其他对功耗、成本、性能有较高要求的场合。为了降低整机成本,该芯片内置了各16 KB的指令和数据缓存、MMU、UART、ADC、LCD控制器,I2C总线接口、IIS总线接口、USB主从设备支持、触摸屏接口等,这种设计提高了系统的集成度,也给系统开发提供了极大的便利。

  系统软件可以有很多选择,因为该芯片内置MMU,因此可以支持Windows CE,Linux,Palm OS和VxWorks等多种主流嵌入式操作系统。车载指控平台对实时性要求不高,因此这里选择嵌入式Linux作为操作系统。嵌入式Linux具有源码开放、成本低、应用软件丰富等特点,因此Linux和ARM是许多低成本的应用中首选的组合。

  作为指控终端,必然对用户图形界面有特殊的要求,该项目选择飞漫公司的MiniGUI作为图形引擎。MiniGUI是一个专门面向嵌入式系统的图形用户界面支持系统,它为应用程序定义了一组轻量级的窗口和图形设备接口。利用这些接口,每个应用程序可以建立多个窗口并在这些窗口中创建各种控件。在软件体系中,它介于内核和应用程序之间,在此将利用MiniGUI来完成用户图形界面的编程。

  2 硬件设计

  ARMS3C2410芯片的应用电路有许多成熟的设计范例;在设计阶段,市面上也有很多的开发板可供选用。该项目选用杭州立宇泰公司的ARM SYS2410开发板作为开发的硬件平台。

  该开发板采取核心板和扩展板分离的结构,提供了大部分的外设接口电路,并且有200个引出脚,引出了CPU上的大部分I/0端口,这样做为后续的开发工作提供了便利。

  2.1 键盘矩阵电路

  该项目的指挥控制终端功能可以分为6项。每项选中后,为便于输入或选择子条目,增加10个数字键,另外还需要确定键、取消键,再加上6个功能键,一共是24个键。因为键的数目较多,将这些键设计成一个行列式键盘矩阵(见图1)。

  结合开发板的电路结构,键盘矩阵的列输入端口使用GPE5~GPElO六个通用I/0口线,行输出端口采用GPEll~GPEl4四个通用I/0口线,在行线和列线的交点接入按键开关。

  键盘扫描的原理是,按照有规律的时间间隔察看键盘矩阵,以确定是否有键按下。键盘扫描可以采取专用芯片,也可以采用软件方法实现,该项目采用软件方法。

  2.2 显示驱动电路

  指挥控制终端输入/输出设备的第二个重点就是显示设备。ARM芯片内置有LCD控制器,可以方便地实现显示功能。但是ARM LCD控制器支持的是TTL电平的RGB分量显示,而目前市场上较大尺寸的工控液晶屏大多是LVDS电平接口,因此需要接口电路。

  另一种解决方案是将ARM开发板TTL电平的RGB信号转换成VGA信号,这样显示器的选择更加随意,而且降低了成本。RGB信号转换成VGA信号可采用专用的AD芯片,如ADV7120,ADV7123等。

  3 软件设计

  软件设计需要完成两个方面的工作:一是驱动程序编写;二是GUI编程。

  3.1 键盘矩阵驱动程序的编写

  开发板对自己所提供的硬件一般都提供相应的驱动程序,自行开发的外设电路一般需要自己编写驱动程序。设备驱动程序是Linux内核的重要部分,操作系统只有通过驱动程序才能够控制外设的硬件行为。

  在系统内部,I/0设备的存取是通过一系列的入口点来进行的,字符型设备提供以下入口点:open,close,read,write,ioctl;它们分别对应打开设备、关闭设备、读设备、写设备以及其他操作。这些入口点的定义是通过一个重要的数据结构file_operations来完成的。

  键盘驱动程序编制的要点有:

  (1)定义一个6×4的健值矩阵,作为输出,按下一个按键,得到对应的键值;

  (2)初始化时设置所用到的I/O端口的读/写模式,行线为写,列线为读;

  (3)定义键盘扫描函数scan_kbd()。它的算法是:初始化时所有的行线置低电平,如果没有键按下,列线都将读到高电平。否则,任何键的闭合将造成该列成为低电平。

  (4)在read入口点,也就是file_operations结构定义的read方法中,调用scan_kbd()。这样,驱动程序就可以定时扫描几个I/O端口,获取键值,然后通过putuser发送到用户地址空间。

  设置I/O模式,读/写I/0端口的位,可以通过头文件S3C2410.h中专门定义的宏set_gpio_ctrl,write_gpio_bit,read_gpio_bit来进行。

  键盘驱动程序经过编译后,可以作为一个设备文件编译入内核,也可以采取模块动态加载的方式。

  3.2 MiniGUl IAL引擎的实现

  通常,MiniGUI在使用前应针对目标系统的特点进行配置和编译,例如指定目标操作系统、运行模式、图形引擎和输入引擎、字体类型、字符集、所支持的控件类等。该课题中,因为采取了自行设计的键盘作为输入设备,因此最重要的配置是输入引擎(input abstract lay-er,IAL)。

  抽象层是一组不依赖于硬件的抽象接口,其作用类似于操作系统的驱动程序,将底层的硬件操作与操作系统隔离,这样做简化了在不同平台上移植的难度。开发特定的键盘输入,主要是完成两部分工作:键盘驱动程序设计和键盘输入引擎开发。前者负责从键盘接收原始输入事件和数据,后者负责将原始的输入事件和数据转换成MiniGUl抽象的键盘事件和数据。

  在代码实现上,MiniGUI通过INPUT数据结构来表示输入引擎。该结构中指定了若干函数指针,编写特定的输入引擎,主要就是编码实现INPUT结构中的各个函数。新的IAL引擎编写完成后,应加入MiniGUI进行配置,然后对MiniGUI进行编译。在工程实践中,一种比较简便的方法是对MiniGUI已经实现的引擎进行修改。

  3.3 图形界面设计

  MiniGUI是一个图形用户界面支持系统,通常的GUI编程概念均适用于MiniGUI编程,如窗口和事件驱动编程等。嵌入式系统完成的功能一般比较单一,对于该系统而言,重点在于实现人机接口部分,因此只需要轮询用户的按键输入即可。如图2所示。

  MiniGUI中有三种窗口类型:主窗口、对话框和控件窗口。每一个MiniGUI应用程序一般都要创建一个主窗口,作为应用程序的主界面或开始界面。MiniGUI包含有许多控件类,如静态框、按钮、列表框、编辑框、进度条等,这些控件类可以实现和Windows标准控件类似的效果。

  最重要的几个函数是:

  其中,WndProc是这个窗口的消息处理函数。在此,对消息循环进行初立即可。例如:

  添加了键盘驱动,修改了MiniGUI的输入引擎后,应用程序就可以响应键盘消息,处理各种事件。除了对标准控制的支持外,MiniGUI还提供了图形设备接口(GDI)的支持。通过GDI,程序可以在计算机屏幕上进行图形输出,包括基本绘图和文本输出。利用这种手段,可以绘制指控终端需要的仪表、各种表格。

  3.4 其他问题

  在该课题的开发过程中,还遇到了一些其他的问题,概述如下:

  (1)显示的色彩深度问题。作为指控终端,该课题设计的显示分辨率为640×480,如果是16位以上的色深,对ARM处理器将是一个比较大的负担,会出现画面的抖动,不连贯。处理的方法是将色深设置为8位,这需要通过修改Linux的显示驱动来解决。

  (2)键盘的防抖问题。按键的抖动问题是一类常见问题,可以通过软件延时或者其他的手段进行处理。

  (3)终端功能的进一步丰富。该课题只实现了终端的人机界面,但是作为一个完整意义的终端,还应该考虑终端之间的联网、数据传输,终端和工况采集装置之间的硬件接口、数据交换等问题。这些需要进一步开发利用ARM芯片上的其他外设,这是该课题下一步的目标。

  4 结语

  ARM作为一款性价比突出的嵌入式芯片,与图形系统MiniGUI相结合,是嵌入式图形界面编程的优选。实验证明,本文所介绍的软、硬件系统较好地实现了在本文引言中提及的车载指控平台的几项功能。作为一类典型的车载嵌入式系统,车载指控系统的设计原理与方法同样适用于其他嵌入式系统。

关键字:Linux  MiniGUI  指控终端 引用地址:基于Linux和MiniGUI的某型指控终端人机接口设计

上一篇:VxWorks系统介绍
下一篇:Linux系统死机的软硬件问题分析

推荐阅读最新更新时间:2024-05-02 21:09

基于Linux的温度传感器DS18B20驱动程序设计
 引言  传统的模拟温度测量抗干扰能力差,放大电路零点漂移大,导致测量值误差大,难以达到所需精度。在实际应用中,采用抗干扰能力强的数字温度传感器是解决上述问题的有效办法。   DS18B20是Dallas公司生产的数字温度传感器,具有体积小、适用电压宽、经济灵活的特点。它内部使用了onboard专利技术,全部传感元件及转换电路集成在一个形如三极管的集成电路内。DS18B20有电源线、地线及数据线3根引脚线,工作电压范围为3~5.5 V,支持单总线接口。   准确的温度测量是很多嵌入式系统中重要的一点。在Linux操作系统下使用数字温度传感器DS18B20,不仅可以得到高精度的温度测量值,而且硬件简单可靠。   1L
[嵌入式]
Linux环境下串口通信的设计方法和步骤
引言 数据采集系统中由于单片机侧重于控制,数据处理能力较弱,对采集的数据进行运算处理比较繁琐,如果通过串口与上位机通信,利用上位机强大的数据处理能力和友好的控制界面对数据进行处理和显示则可以提高设计效率。串口通信以其简单的硬件连接,成熟的通信协议,成为上下位机之间通信的首选。移植了Linux操作系统的s3c2440可以在Linux环境下操作串口,降低了串口操作的难度,可以使开发者集中精力开发大规模的应用程序,而不必在操作底层设计上耗费时间。 1 硬件连接 s3c2440是三星公司生产的基于ARM9核的处理器,采用3.3V 电压 供电;C8051Fxxx系列单片机是美国CYGNAL公司推出的与8051兼容的高性能高速
[单片机]
<font color='red'>Linux</font>环境下串口通信的设计方法和步骤
OK6410A 开发板 (八) 36 linux-5.11 OK6410A 内存管理第四阶段
D mm_init- mem_init返回 - mm_init- kmem_cache_init返回 ----此时slab建立,开启了基于 buddy内存管理器时代 的 slab内存管理器时代 kmem_cache_init 此过程以 slab 为基础,通过slab 的api kmem_cache_create , 创建 很多个 slab 假设这么多个slab 为 一个集合A 这么多slab 就是给用户用的,然后 这么多slab 的 alloc 和 free api 是什么呢? 针对某一个 slab, slab 提供了 kmem_cache_alloc 和 kmem_cache_free 那么
[单片机]
基于嵌入式ARM Linux步进电机驱动程序的设计
0 引言 随着激光雕刻机的不断发展和改进,嵌入式Linux的激光雕刻机比CNC(Computer numerical control)激光雕刻的优势不断显现,它大幅度提高了处理能力,方便了设计开发,节约了成本,是未来经济型激光雕刻机发展的趋势。而嵌入式ARM(Advanced RISC Machines)Linux步进电机驱动是实现激光雕刻的核心。 嵌入式开发过程中,经常需要为特定设备开发驱动程序。这些驱动程序的编写和编译与PC上的Linux驱动开发相比存在明显的差异,需要考虑的因素较多,实现过程较为复杂。本文以Samsung公司的友善之譬S3C2440开发板为例,探讨如何使用嵌入式Linux开发字符设备驱动程序来驱动步进
[单片机]
基于嵌入式ARM <font color='red'>Linux</font>步进电机驱动程序的设计
OK6410A 开发板 (八) 71 linux-5.11 OK6410A linux 内核同步机制 禁软中断的实现
软中断是什么 软中断怎么触发 软中断发生时机 软中断发生条件 软中断 抢占 preempt_count_add 如何 加 SOFTIRQ_DISABLE_OFFSET 的话,就会 关 软中断 封装起来就是 local_bh_disable local_bh_disable __local_bh_disable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); preempt_count_add(SOFTIRQ_DISABLE_OFFSET) barrier()
[单片机]
基于数字电视系统的嵌入式linux操作系统实现
1. 简介: 数字电视是在电视信号产生后的处理、传送、接收、记录等过程都采用数字技术的电视。在设计数字电视系统时,应用于传统模拟电视系统中的硬件,不能满足音频、视频和数据处理等功能的需要,因此,数字电视系统需要更高性能的处理器和大规模的存储器。嵌入式操作系统可以有效的管理这些硬件资源。 本文将嵌入式linux操作系统移植到一个数字电视上,使其能够接收数字广播节目。为了将操作系统移植到数字电视系统上,需要修改内核和交叉开发环境,重新设计基本的设备驱动,配置系统的存储器映像以便加载内核到主存储器中,并且设计一个总线接口设备的驱动程序来控制整个系统。 2. 数字电视操作系统 数字电视比模拟电视能够提供更优质的电视图像和更多的视
[单片机]
基于数字电视系统的嵌入式<font color='red'>linux</font>操作系统实现
基于LinuxMiniGUI的某型指控终端人机接口设计
   0 引言   随着武器装备信息化程度的提高,各种嵌入式信息装备得到了广泛应用。作为未来战场主要作战平台的各种战斗车辆,其车载指挥控制平台的设计得到了广泛重视。   一个车载指控平台的功能主要体现在以下几个方面:监控、显示车辆的技术状态;车际间的指控、通信;车辆的定位、导航;各种文电处理等。本文将介绍一个基于ARM和MiniGUI的车载指控系统人机接口部分的设计,这个系统初步实现了上述车载指控平台的主要功能。    l 软硬件的选型   受车辆内部空间的限制,指挥控制终端必须做到小型化,嵌入式。ARM作为一种已经在多个领域得到非常广泛应用的架构,这里采用它是一个很好的选择。该课题选择在国内有着较广泛市场的SAM
[嵌入式]
第三部分 linux busybox最小文件系统的移植
1、源码包下载 首先要说明移植文件系统无非就是添加一些文件夹(有的需要加入一些配置文件)而已,这里是利用Busybox( http://www.busybox.net/downloads/ )创建/bin 和/sbin等目录的文件。 至于以上两种名字的含义,google很详细了。 言归正传,正式开始。 首先下载完成后将这两个压缩包可以用cuteftprro工具拷贝到linux文件夹下, 然后解压,tar –xvf busybox-1.23.2.tar.bz2 本版本的busybox是1.23.2本版本的所支持的内核、gcc、使用方法等的版本信息在加压后的busybox-1.23.2的文件夹下readme有详
[单片机]
第三部分 <font color='red'>linux</font> busybox最小文件系统的移植
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved