一种基于VxWorks的串口调试系统的设计与实现

2020-02-03 02:37吴迪代中华
电子技术与软件工程 2020年19期
关键词:控件串口通讯

吴迪 代中华

(上海船舶电子设备研究所 上海市 201108)

1 引言

VxWorks 是由美国Wind River System 公司推出的一款具有微内核、可裁剪的实时操作系统。它以其强大实时性、良好的可靠性、灵活的可裁剪性被广泛应用在高精尖技术及对实时性要求极高的领域,如航空航天、通信控制、军事国防、交通运输、医疗设备等。串行接口简称串口,是一种采用串行通信方式的扩展接口,按位来发送和接收字节,如图1所示。其特点是通信线路简单、传输距离长,只要一对传输线就能实现双向通信,成本较低。所以在VxWorks操作系统下采用串口通讯可以高效、方便的实现数据交互功能。但是,基于VxWorks 操作系统下的设备在串口模块开发、设备间的串口数据调试过程中缺少一款能够实时显示串口接收数据、模拟发送串口数据的调试工具。针对于以上背景本文提出了一种基于VxWorks 操作系统的串口调试系统的设计思想,可在设备中嵌入串口调试模块,当调试人员按下某个按键时即可调用串口调试模块,进而完成与其他设备间的串口数据调试工作。

2 系统总体设计

串口调试系统主要由硬件部分和软件部分组成。其中,硬件部分主要包括主板模块和串口通讯板模块,通过PCI 总线相连。PCI总线为穿插在系统总线和CPU 之间的一级总线,通过桥接电路保证了其上下接口的协调性,完成了对它的管理工作,并对数据进行传输。软件部分则安装于主板模块板载的电子盘上,软件分为主控模块、串口通讯模块、显示控制模块,分别完成系统的主控、串口通讯和显示控制功能。系统总体设计图如图2所示。

3 硬件设计

3.1 主板模块

主板模块以Intel Core Duo 低电压双核处理器为核心,主频为1.66GHz;采用Intel 945GME 及ICH7M 芯片组;显示采用ATI Mobility X300 独立图形引擎,提供1 路VGA 接口和2 路DVI 接口;主板模块板载IDE 电子盘,用于安装VxWorks 操作系统和串口调试系统软件。

3.2 串口通讯板模块

图1:串口通信示意图

图2 系统总体设计

图3:软件界面

图4:各软件模块间接口关系

图5:数据处理流程图

串口通讯板模块通过PCI 总线为主板模块提供扩展串行并行I/O 的能力和中断能力。该模块共有8 个串行接口和48 根并行I/0 线。串口通讯板模块根据功能可以分为PCI 总结接口、串行I/O 接口、并行I/O 接口三部分。

PCI 总线的主频为33MHz,数据位宽为32 位,SLAVE 模式。串口通讯板模块主要通过它的8 位I/O 端口读写周期来访问。

串行接口由1 片0X16PCI954 和1 片0X16C954 可编程异步串行通讯芯片组成,对所有的串口信号都进行了光电隔离。每个芯片各提供4 个异步串行接口。每个串行接口的发送器和接收器的先进先出缓冲区容量为128 字节。并且具备对调制解调器的控制功能。

并行I/O 接口由2 片8255 可编程并行接口芯片组成,每片8255 芯片有3 个8 位的双向并行I/O 端口,分别为A 口、B 口、C 口。8255 芯片可工作于方式0(基本输入输出方式)、方式1(选通输入输出方式)、方式2(双向总线方式)。

4 软件设计

串口调试系统软件是以VxWorks 操作系统、支撑软件、驱动程序为基础开发的应用软件,使用Tornado2.2 基于PC 平台及Windows 操作系统开发。Tornado 是VxWorks 操作系统下的集成开发环境,它包含了一套完整的面向嵌入式系统的开发调试工具,集成了设计、开发、分析等功能,提供了嵌入式实时应用程序开发的一种有效方式:串口调试系统应用程序在Windows 环境下编译生成可执行文件,将可执行文件导入目标系统,通过本地主机上的服务器(Target Server)与目标系统的目标代理(Target Agent)的通信完成对串口调试系统应用程序的调试和分析。

串口调试系统软件运行于VxWorks5.5 操作系统,提供友好、完整的人机交互界面,如图3所示。界面顶部为串口参数设置区域,可完成对串口号、波特率、校验位、数据位、停止位的设置及串口的开启关闭操作;界面中部为接收数据显示区域,可完成串口数据实时显示及显示方式的控制;界面底部为串口数据发送区域,可完成串口发送数据的输入及发送方式的控制。

本软件采用模块化设计思想,将软件分为主控模块、串口通讯模块、显示控制模块。各软件模块间接口关系如图4所示。软件数据处理流程图如图5所示。

4.1 主控模块

主控模块是串口调试系统软件的控制中心,主要完成初始化串口调试系统内的软硬件资源、创建并启动各任务和消息队列、对其他模块的调用、显示初始画面。当串口调试系统软件启动时自动加载主控模块。通过taskSpawn 函数创建任务,通过msgQCreate 函数创建消息队列,通过msgQSend 和msgQReceive 完成消息的发送和接收,通过open 和close 函数完成串口的开启和关闭,通过ioctl函数实现串口的参数设置。示例代码如下:

4.2 串口通讯模块

串口通讯模块完成与外部待调试设备间的串口数据交互。在软件启动时,创建并激活串口发送、接收任务后,串口发送、接收程序被调用。串口接收任务定时查询串口接收缓冲区,若有数据就取出并处理;串口发送任务定时查询是否接收到串口数据发送消息,若接收到消息就拼装相应数据报文向外送出。通过select 函数监听串口的可读事件,如果可读,则调用read 函数读取串口数据。通过调用write 函数发送串口数据。主要示例代码如下:

4.3 显示控制模块

显示控制模块主要完成串口调试系统的界面显示、控制与处理功能,完成用户对系统的控制和输入。包括接收数据的显示、工作参数的设置、显示界面的控制和发送数据的输入。

显示控制模块的开发采用了VxWorks 下基于窗口管理及可视化控件的图形开发工具EGK。EGK 是一种应用于嵌入式系统跨平台的图形界面设计工具,包含了人机界面设计中需要的基本窗口和控件,用户可以根据实际需求对窗口及控件类进行重写。本文根据串口调试系统界面显示的内容和特点,主要用到了以下4 个类:全局类Egk、窗口类Egk_Window、控件组类Egk_Group 和控件基类Egk_Widget。

界面中的按钮采用了Egk_Button 控件,通过callback 函数将按钮与回调函数关联,当调试人员点击按钮时自动调用回调函数,示例代码如下:

接收数据显示区域采用继承Egk_Box 的自定义控件,默认16进制显示,一行最多显示32 个数据。通过自定义函数SetInfo 和draw 更新数据绘制控件,通过redraw 函数刷新界面显示。界面显示的控制包括开启、停止数据接收显示和清空界面显示。当调试人员点击“停止接收”按钮时软件停止接收处理串口数据,界面不再刷新显示;当点击“开始接收”按钮时,软件重新接收并处理显示串口数据;当点击“清空显示”按钮时清空界面数据显示。

工作参数菜单采用Egk_Choice 控件,通过menu 完成菜单内容的加载,通过value 取值。参数设置包括对串口号、波特率、校验位、数据位、停止位的设置。其中,串口号设置可内容为:com1、com2、com3、com4;波特率可设置内容为:300、600、1200、2400、4800、9600、19200、38400、43000、56000、115200;校验位可设置内容为:无校验、奇校验、偶校验;数据位设置可设置内容为8、7、6;停止位可设置内容为:1、2。

发送数据的控制包括自动发送、发送周期的设置及数据内容的输入。自动发送的控制采用Egk_Check_Button 控件,通过value 函数读取控件值,当此控件被勾选时,串口数据发送方式为周期性自动发送,否则为手动发送。发送周期及数据内容的输入框采用Egk_Input 控件,通过value 函数读取输入值。

5 结束语

本文详细介绍了实时操作系统VxWorks 中串口调试系统的设计和实现方法,克服了VxWorks 系统下串口调试手段的局限性,凭借VxWorks 操作系统优异的实时性、可靠性,提高了串口通信调试的能力。该方法可适用于工业控制、自动化等多个方面,具有一定的工程应用价值。

猜你喜欢
控件串口通讯
《茶叶通讯》简介
《茶叶通讯》简介
通讯报道
浅谈AB PLC串口跟RFID传感器的通讯应用
通讯简史
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
ASP.NET服务器端验证控件的使用
基于并行控制的FPGA多串口拓展实现
Spreadsheet控件在Delphi数据库系统中的编程与应用