您的位置首页>企业动态>

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

导读 大家好,我是极客范的本期栏目编辑小友,现在为大家讲解 基于Linux和MiniGUI的某型指控终端人机接口设计问题。0简介随着武器装备信息化程

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解 基于Linux和MiniGUI的某型指控终端人机接口设计问题。

0简介

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

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

软件和硬件的选择。

受车辆内部空间的限制,指挥控制终端必须小型化、嵌入式。ARM作为一种已经在很多领域得到广泛应用的架构,在这里是一个不错的选择。本项目选用国内市场广阔的三星公司的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是一个面向嵌入式系统的GUI支持系统,它为应用程序定义了一套轻量级的窗口和图形设备接口。有了这些接口,每个应用程序都可以构建多个窗口,并在这些窗口中创建各种控件。在软件系统中,它处于内核和应用程序之间,因此将使用MiniGUI来完成用户图形界面的编程。

2硬件设计。

ARMS3C2410芯片的应用电路有很多成熟的设计实例。在设计阶段,市场上有许多可用的开发板。选用杭州力宇泰公司的ARM SYS2410开发板作为开发的硬件平台。

开发板采用核心板与扩展板分离的结构,提供大部分外围接口电路,有200个引出管脚,引出CPU上的大部分I/O口,为后续的开发工作提供了便利。

2.1键盘矩阵电路。

本项目指挥控制终端功能可分为6项。选择每个项目后,为了便于输入或选择子项目,增加了10个数字键。此外,还需要OK键、Cancel键和6个功能键,总共24个键。由于按键数量众多,这些按键被设计成一个行列式键盘矩阵(见图1)。

结合开发板的电路结构,键盘矩阵的列输入端口使用GPE5~GPElO的6个通用I/O端口,行输出端口使用GPEll~GPEl4的4个通用I/O端口,在行线与列线的交叉处连接一个按键开关。

键盘扫描的原理是每隔一段时间看一下键盘矩阵,确定一个键是否被按下。键盘扫描可通过专用芯片或软件方法实现。本项目采用软件方法。

2.2显示驱动电路。

指挥终端输入输出设备的第二个重点是显示设备。ARM芯片内置液晶控制器,可以方便地实现显示功能。而ARM液晶控制器支持TTL级别的RGB分量显示,而市场上的大型工业液晶屏多为LVDS级接口,因此需要接口电路。

另一种解决方案是将ARM开发板TTL级别的RGB信号转换为VGA信号,使得显示器的选择更加随机,降低了成本。可以使用特殊的AD芯片,如ADV7120和ADV7123,将RGB信号转换为VGA信号。

3软件设计。

软件设计需要完成两个任务:一是驱动编程;第二,GUI编程。

3.1键盘矩阵驱动的编写。

开发板一般为自己提供的硬件提供相应的驱动,而自行开发的外围电路一般需要自己编写驱动。设备驱动是Linux内核的重要组成部分,操作系统只能通过驱动来控制外设的硬件行为。

在系统内部,通过一系列入口点访问输入/输出设备。字符设备提供以下入口点:打开、关闭、读取、写入、ioctl;它们分别对应开启装置、关闭装置、读取装置、写入装置等操作。这些入口点由一个重要的数据结构file_operaTIons定义。

键盘驱动程序编程要点如下:

(1)定义一个6次;4作为输出,按一个键得到相应的键值;

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

(3)定义键盘扫描功能scan_kbd()。它的算法是:初始化时,所有的行线都设置为低电平,如果没有按键,所有的列线都会读取到高电平。否则,任何键的关闭都会导致列变低。

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

可以通过头文件S3C2410.h中专门定义的宏set_gpio_ctrl、write_gpio_bit和read_gpio_bit来设置I/o模式和读/写I/o端口的位.

键盘驱动程序通过

过编译后,可以作为一个设备文件编译入内核,也可以采取模块动态加载的方式。3.2 MiniGUl IAL引擎的实现 通常,MiniGUI在使用前应针对目标系统的特点进行配置和编译,例如指定目标操作系统、运行模式、图形引擎和输入引擎、字体类型、字符集、所支持的控件类等。该课题中,因为采取了自行设计的键盘作为输入设备,因此最重要的配置是输入引擎(input abstract lay-er,IAL)。 抽象层是一组不依赖于硬件的抽象接口,其作用类似于操作系统的驱动程序,将底层的硬件操作与操作系统隔离,这样做简化了在不同平台上移植的难度。开发特定的键盘输入,主要是完成两部分工作:键盘驱动程序设计和键盘输入引擎开发。前者负责从键盘接收原始输入事件和数据,后者负责将原始的输入事件和数据转换成MiniGUl抽象的键盘事件和数据。 在代码实现上,MiniGUI通过INPUT数据结构来表示输入引擎。该结构中指定了若干函数指针,编写特定的输入引擎,主要就是编码实现INPUT结构中的各个函数。新的IAL引擎编写完成后,应加入MiniGUI进行配置,然后对MiniGUI进行编译。在工程实践中,一种比较简便的方法是对MiniGUI已经实现的引擎进行修改。3.3 图形界面设计 MiniGUI是一个图形用户界面支持系统,通常的GUI编程概念均适用于MiniGUI编程,如窗口和事件驱动编程等。嵌入式系统完成的功能一般比较单一,对于该系统而言,重点在于实现人机接口部分,因此只需要轮询用户的按键输入即可。如图2所示。

123下一页全文
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。