基于Telnet协议的VxWorks调试监测软件

2018-07-10 11:17练学辉王善民
雷达与对抗 2018年2期
关键词:调用内存调试

练学辉,杜 清,付 林,朱 润,王善民

(1. 海军驻南京地区雷达系统军事代表室,南京 211153;2. 中国船舶重工集团公司第七二四研究所, 南京 210003)

0 引 言

VxWorks是一个运行在目标机上的高性能、可裁剪的嵌入式实时操作系统。它以良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求较高的领域中。近年来,可视化用户界面正成为现代计算机系统中受到高度重视的组成部分。许多厂家推出了便于使用的各种可视化操作界面。可视化是一种更自然、直观的视觉呈现方式,是处理大容量数据的一种有效手段。然而,VxWorks开发平台WorkBench的调试和监视功能不够完善,且在使用中比较繁琐和复杂。[1-2]

本文设计一种基于Telnet协议的VxWorks调试监测软件。它可以通过Telnet协议实现调试计算机与目标机的交互,并且通过可视化界面展示调试结果和监视内容,有利于提高研发效率,缩短研发的周期。

1 基于Telnet协议的网络通讯

基于Telnet协议的网络通讯是本地计算机与VxWorks系统目标机之间的主要连接方式。它利用客户机/服务器模式可以实现调试计算机上通过以太网远程访问和控制VxWorks系统目标机。

面向连接的协议服务器端首先调用socket函数建立流式套接字,然后用bind将此套接字和本地地址绑定,接着调用listen准备接收客户端的连接,然后调用accept接收连接。当接收到客户端的请求后,则建立连接,accept返回新的套接字就可以在这新套接字上读写数据。原来的套接字则可以继续通过accept调用等待另一个连接。

客户端也首先调用socket函数建立流式套接字,然后调用connect向远程主机发起连接请求,连接建立后就可以在此套接字上进行数据读写了。

上述执行流程图如图1所示。

2 调试监测软件设计

嵌入式系统本身资源很有限,如内存小和CPU速度低等,而且大部分嵌入式系统硬件没有显示器和键盘,不足有效地运行第三方软件。另外,大部分软件只使用于主流的硬件平台,不可能普遍适用于种类繁杂的嵌入式CPU。所以,对大多数嵌入式系统的调试和监测采用交叉方式,即把第三方软件安装在调试计算机上,通过某种方式连接目标机,并通过与目标机交换信息完成调试和监测工作。

VxWorks为目标机提供了一个Shell,以方便应用系统的开发和使用,简称为tShell。目标机tShell是VxWorks系统与外部最主要的接口。它的主要功能是管理用户与VxWorks操作系统之间的交互:等待用户的输入,向VxWorks操作系统解析用户的输入指令,然后调用VxWorks库函数,最后处理各种各样的VxWorks操作系统的输出结果。

VxWorks配置中包含“Target Shell”组件。包含该组件后,usrRoot函数会调用初始化函数:shellInit(SHELL_STACK_SIZE,TRUE)。该函数会创建tShell任务以实现Shell功能。

VxWorks初始启动时,如果VxWorks包含了网络组件中的“telnetserver”组件,系统会创建tTelnetd任务,这时就可以使用主机的Telnet通过网络远程访问tShell。主机和目标机之间能完成信息交互。关健在于目标机的符号表。利用符号表可以直接调用程序中的输出函数名,这是VxWorks系统提供的一个独特便利。

Telnet是TCP/IP协议的一个标准的服务,其端口为固定的23。在主机和目标机通讯的过程中,Socket先与IP地址和端口绑定,然后在套接字上读写数据,直到数据交换完毕。

下面是软件实现数据交互的主要代码:

tcpclient=new TcpClient(ip, port);

stream=tcpclient.GetStream();

StreamWriter sw=new StreamWriter(stream);

StreamReader sr=new StreamReader(stream);

调试监测软件首先利用函数sw.Write()把用户输入的指令写入套接字类,然后通过Telnet协议提交给tShell。tShell对指令进行解析,解析后的指令通过目标机的符号表关联至库函数。内核的库函数获取到有用的信息后再通过Telnet协议将信息返回。接着利用函数sr.Read()把有用信息从套接字类中读取出来,并通过函数AnalysisMessage()对这些信息进行解析,最后将解析完的信息送至软件界面显示。整个流程如图2所示。

调试监测软件的功能主要包括以下几个方面:

(1) 调试计算机IP地址设置:主要作用是获取调试计算机IP地址,并且可以编辑修改;

(2) 处理器基本信息:软件可以自动检测到以太网上的处理器IP列表,从列表中选择某一处理器进行连接,可以获取当前处理器的详细信息,包括CPU硬件ID、系统相关版本信息;

(3) 任务信息:主要包括任务的ID、名字、入口函数、优先级和状态等;

(4) 任务堆栈使用概况:主要包括堆栈总大小、堆栈当前使用字节、堆栈最大使用字节、堆栈从未使用字节等;

(5) 内存分配与使用概况:主要包括内存状态、字节数、内存块数、最大空闲块尺寸等;

(6) 处理器温度:获取处理器的实时温度,并生成近5 min的温度曲线;

(7) 系统启动参数:获取当前的系统启动方式,并且可以在快速启动方式和Boot启动方式之间进行切换;

(8) 内存查看:可以通过手动输入内存地址,查看内存单元的具体状态。

同时,为了使整个开发过程快速、简单、灵活和有效,选择基于.NET框架下的C#作为开发工具。软件主界面如图3所示。

3 调试监测软件的硬件平台

编写调试监测软件运行于本地计算机,通过以太网与PowerPC板卡相连接,PowerPC板卡之间则通过RapidIO进行交互,硬件平台如图4所示。

4 结束语

本文提出一款基于Telnet协议的VxWorks系统调试监测软件。该软件利用Telnet协议将VxWorks指令库中的指令发送至目标机,实现了与服务器的命令行交互,并且通过基于.NET框架的C#设计可视化界面,使得用户能更加直观、清晰地对目标机进行调试与监测。该软件操作简易,后期功能可扩展性强,可以大大提高研发调试人员的工作效率,具有一定的工程意义。

猜你喜欢
调用内存调试
高温气冷堆示范工程TSI系统安装及调试
电气仪表自动化安装与调试分析
调试新设备
调试机械臂
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
系统虚拟化环境下客户机系统调用信息捕获与分析①
内存搭配DDR4、DDR3L还是DDR3?
基于属性数据的系统调用过滤方法
利用RFC技术实现SAP系统接口通信