首页 » 技术文章 » 基于Linux和MiniGUI的某型指控终端人机接口设计

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

作者:  时间:2010-10-18 10:50  来源:EDN

  0 引言

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

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

  l 软硬件的选型

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

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

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

  2 硬件设计

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

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

  21 键盘矩阵电路

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

  结合开发板的电路结构,键盘矩阵的列输入端口使用GPE5GPElO六个通用I0口线,行输出端口采用GPEllGPEl4四个通用I0口线,在行线和列线的交点接入按键开关。

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

  22 显示驱动电路

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

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

  3 软件设计

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

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

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

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

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

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

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

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

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

  设置IO模式,读/写I0端口的位,可以通过头文件S3C2410h中专门定义的宏set_gpio_ctrlwrite_gpio_bitread_gpio_bit来进行。

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

相关推荐

Ctrack选用u-blox GPS和蜂巢式模组开发车队管理解决方案

u-blox  嵌入式  Ctrack  2014-05-21

动作撷取追踪的嵌入式体感控制新技术

嵌入式  体感控制  2013-12-06

嵌入式系统的固件更新

嵌入式  Flash  RAM  缓冲区  2013-09-12

汽车电子向一体化集成、网络化与智能化发展

汽车电子  嵌入式  2013-05-23

东芝开发嵌入式SRAM低功耗技术智能手机

东芝  嵌入式  SRAM  2013-02-23

飞思卡尔基于ARM平台全系列MCU引领嵌入式应用新趋势

飞思卡尔  ARM  嵌入式  2013-01-29
在线研讨会
焦点