APP下载

面向VxWorks的嵌入式系统课程实验教学设计

2019-06-01张杰玮

中国现代教育装备 2019年9期
关键词:网络通信串口嵌入式

周 强 张杰玮

北京航空航天大学电子信息工程学院 北京 100191

嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗等有特殊要求的专用计算机系统[1]。目前嵌入式系统正在快速发展,嵌入式处理器已经从4位、8位微处理系统发展到32位、64位RISC系统,嵌入式软件系统也日趋复杂,大量多任务复杂应用已经广泛采用嵌入式操作系统尤其是嵌入式实时操作系统[2]。随着新工科建设探索的逐渐深入,嵌入式系统的功能也将越来越丰富,操作越来越复杂[3],为适应社会对高级型嵌入式系统人才的需求,国内各大高校所开设的嵌入式系统课程重要性日益增强,开展高级型嵌入式计算机系统的课堂教学和相关实验,使学生们掌握高级嵌入系统的原理、结构、软硬件的开发方法,为将来的实际工作打下更加坚实的基础。

嵌入式操作系统VxWorks作为关键应用领域的杰出代表,具有微内核、高可靠性、实时性强、可裁减等特点,日益成为嵌入式系统课程体系中重要的教学内容之一。

从课程教学的实践性需求出发,首先设计了面向Vxworks的两级实验教学内容体系:基本实验和综合实验;然后分别对两者进行了描述;最后,设计了一个综合显示模拟仪表系统实验,以此巩固课程教学知识和提升学生对于嵌入式系统技术开发的综合能力。

1 实验教学内容体系

根据嵌入式系统的教学内容要求,特别针对VxWorks的实验教学,设计的课程内容分为两级:基本实验内容和综合实验内容;其中基本实验内容包括开发环境、任务处理、数据通信、显示处理等基本环节;综合实验内容是在基本实验内容的基础上给出系统级的综合实验,提升学习VxWorks进行嵌入式开发的实践能力。整体的实验教学内容体系框架如图1所示。通过以上部分的实验内容配合授课的知识要点,以达到让学生掌握嵌入式系统的基本工作原理和VxWorks开发平台使用方法的目的,培养学生初步具备使用嵌入式系统开发嵌入式软件的基本能力。

1.1 开发环境

VxWorks是由美国Wind River公司面向嵌入式微处理器(EMPU,Embedded MicroProcessor Unit)而特别设计开发的一种实时多任务操作系统[4]。它具有高度模块化、高性能、很好的可靠性、较高的安全性以及灵活性等特点。VxWorks在为程序员提供了对实时任务高效的管理与调度、任务的同步等基本功能的基础上,还配备了一定的扩展模块,如网络系统、文件系统、虚拟内存系统、图形系统等。VxWorks适用于从简单到复杂的产品设计,能够在所有常见的CPU上运行。编程人员在VxWorks上编程不必关心系统资源的管理及底层的具体实现方式,可以把主要工作放在应用系统的设计和实现上。

图1 实验教学内容体系框架

TornadoII开发环境是嵌入式实时领域里著名的开发调试环境之一,作为开发和调试VxWorks系统必备的集成软件开发平台,其交叉开发环境运行在主机上,给嵌入式系统开发人员提供了一个不受目标机资源限制的集成开发和调试环境。

Wind River公司的新一代开发平台Workbench[5]继承了其原有的Tornado集成开发平台的一贯优势,并且功能更加强大,由于采用了先进的Eclipse软件框架结构,保证了系统具有更加开放和更易于拓展的特点。Workbench开发平台的广泛适用性体现在以下诸多方面上。(1)多任务;(2)多目标;(3)多模式;(4)多OS;(5)多CPU;(6)多连接形式;(7)多主机环境。

同时其所具备的丰富易用的调试手段,可以大大加快调试进度。Workbench安装流程及配置如图2所示。

图2 Workbench安装流程

1.2 任务处理

VxWorks采用多任务处理机制,即现实生活中的多重事件由多个任务进行响应。操作系统内核对不同任务在进行控制,通过任务控制块(task control block)完成。任务包含就绪、阻塞、挂起和延迟等状态。所有任务统一的线性空间中共同享有物理内存。每个任务只有独立的动态栈而没有自己独立的代码段和堆。为了减少在任务切换时的上下文切换时间,使得任务中的地址即是真正的物理地址,取消了对于地址空间映射的需求,以此满足实时操作系统的快速响应要求。

1.2.1 任务间调度

VxWorks系统任务调度采用基于优先级的抢占式调度与轮转调度相结合的策略,即对于优先级不同的任务根据抢占式调度的处理原则进行调度处理,而对于优先级一致的任务则采用依顺序轮流调度的原则调度处理。以网络通信任务调度为例,在任务的调度工作由操作系统来完成之前,首先根据实时系统的应用确定任务的优先级。通常网络通信任务优先级确定遵循一定的准则:主要有两类任务具有较高优先级,一是初始化任务所发起的新任务,二是网络监控任务清除相关任务;而以下四类任务优先级次之,包含连接接收、网络连接、发起数据收发和处理的任务;而且必须要保证在网络正常的基础之上才能进行有效的数据通信,所以数据收发和处理任务的优先级设定必须要低于网络状态检测任务的优先级;同时通信过程中传递的信息要在极短的时间内被取出并进行响应,这就需要保证系统实时性,所以通信数据发送任务的优先级设定必须要低于通信数据接收和数据信息解析任务的优先级。

1.2.2 任务间通信

VxWorks的任务间通信机制用于协调各个任务之间以及任务和中断之间的行为,具有丰富性和灵活性等特点,主要有内存共享、信号量、消息队列、管道、套接字和远程过程调用等,其中信号量和消息队列是VxWorks中经常使用的任务间通信机制。因为共享内存模式中各个任务间的关联性很强,同时其他几类通信机制也具有很高程度的抽象,这些缺点都会导致操作系统的复杂程度增加、内核扩大、代价增加。但是,信号量可以实现任务同步和资源互斥的工作;消息队列可以缓冲多个消息单元,完成任务间大容量信息交换工作。这就使得二者具有很高的实用性。

1.2.3 任务间互斥同步

VxWorks系统中控制任务间互斥同步的最快速、最简便的方式是使用信号量。信号量通过“等待”与“释放”进行计数,继而控制各进程之间的互斥或同步关系。

1.3 数据通信

1.3.1 网络通信

随着高位嵌入式处理器的日益普及,近年来嵌入式操作系统得到了迅猛的发展,并越来越多地被应用于通讯、国防、工业控制、医疗设备等方面。VxWorks作为嵌入式行业应用最为广泛的实时操作系统,率先集成了BSD Socket网络工具。利用VxWorks对多任务和实时通信的良好支持,可以方便地实现网络通信,这不但确保了嵌入式核心处理器与工作站、嵌入式核心处理器与PC之间进行正常网络通信的可能性,而且还在一定程度上丰富了系统的实时配置和调试方法,因此在原有VxWorks优点的基础上更进一步扩展了其功能和灵活性。VxWorks网络结构图如图3所示。

在实验教学中以单路网络通信和双网卡冗余通信为切入点,在掌握单路网络通信的基础上,更深入地学习双网卡冗余网络切换的设计和实现。

图3 VxWorks网络结构[6]

1.3.2 串口通信

串口作为CPU和串行设备间的通信接口,是嵌入式系统中一种重要的通信类型。串口通信的传输过程为:从CPU经过串行端口发送出去的通行数据,字节数据转换为串行的位;在接收数据时,串行的位被转换为字节数据。在VxWorks中,将I/O系统设计成为任何类型的设备提供一个简单、统一,与设备相互独立的接口,一切对于串口所进行的操作都能作为对一个文件所进行的操作,而不必了解串口设备或程序驱动实现的细节。

具体串口通信软件设计步骤概括为以下几点。

(1)在设计串口通信软件时,在完成串口初始化设置之后,在使用串口前调用函数open()打开相应串口,然后进行配置。

(2)完成上一步配置后,根据串口打开时的读写标志,为完成对串口进行读操作、写操作或同时进行读写操作,则需要调用函数 read(),write()。

(3)可以采用中断方式,以达到提高数据接收的实时性的目的。利用函数select()的事件触发机制,将读串口的任务状态保持为阻塞状态,可以使其一直等待数据,当有数据来到的时候该任务会立刻自动响应,以此提高系统的实时性。

除了学习单串口和多串口通信之外,还可进一步加入面向比特的数据链路控制协议HDLC通信协议的学习,由于HDLC协议长时间地发展与优化,使得它在通信和计算机网络等领域有着广泛的用途。

1.4 显示处理

WindML即Wind Media Library(多媒体库),它以灵活的体系为基础,可实现尽可能小的内存占用,同时提供最佳性能。WindML实现了嵌入计算机的所有图形要求,使开发人员在Wind River的实时操作系统上建造丰富的、全面的、可嵌入的GUI成为可能,同时保证较低系统开销和快速市场化。WindML由两个组件组成:一个软件开发工具箱(SDK)和一个驱动程序开发工具箱(DDK)。

利用WindML进行图形界面开发,首先要对WindML进行相应的配置和编译,然后将WindML加载到VxWorks内核。然后进行图形初始化颜色的配置,图形上下文(GC)的创建,然后进行画图的基本设置,如图形的前景色和背景色、线的类型和线宽、图形的填充模式、默认的位图、光栅覆盖模式、当前使用的字体等[7]。

WindML本来不支持对于中文字符的显示,但基于WindML对于双字节编码的支持则可以达到中文显示的目的,同时还能完成对汉字点阵的存储、获取和显示的全过程,并且为了实现汉字码到汉字的显示,可以利用WindML的双字节显示函数完成。具体方法:为对WindML的源代码进行修改,编写一个字符串转换函数,将所有单字节编码的字符全部转换成双字节编码,由此来实现中英文混合显示的支持,转换方法如图4所示。

Tilcon是理想的人机界面、虚拟设备和嵌入式图形界面开发环境。Tilcon图形引擎、平台无关的API和一个可视化图形界面设计工具—Tilcon图形编辑器,以上3个基本部分构成了Tilcon开发系统。

图4 单字节字符转换为双字节字符

2 综合性实验

2.1 实验目的

在VxWorks平台上搭建一个基于虚拟目标机的综合显示模拟仪表系统,在功能上完成实验教学内容的各个功能模块,综合各个功能模块实现与宿主机的网络通信及串口通信并按照宿主机的指令驱动模拟仪表,达到一个简化的模拟座舱效果。

2.2 实验架构

基于实际的航电综合显示平台架构及数据链路过程,在结构和功能上进行简化[8],综合实验架构分为3个层面(如图5所示):第一是构成层面,包括飞行数据模拟器(主机1、显示器及遥感手柄)和综合显示模拟仪表系统(主机2及显示器);第二是总体软件架构,包括飞行数据模拟器软件系统(含操作系统、模拟飞行软件、数据中间件、数据管理软件等)和综合显示模拟仪表软件系统(操作系统、VxSim、VxWorks、数据通信模块、数据处理模块、Tilcon、综合显示界面等),两个系统之间通过网络通信交联。第三是数据流层面,包括模拟航电综合显示系统的整个数据流过程(飞行模拟数据源产生数据,数据管理软件进行数据组包,然后数据通信模块实现数据传输,数据处理模块实现数据处理,最后分发至显示模块进行数据显示)。

用户通过操作摇杆,控制模拟飞行软件中的飞行参数(航姿,速度,航向等),可以在飞行数据模拟器显示器上实时看到飞机姿态的变化,同时,在综合显示仪表显示屏上对应仪表的参数也随着用户的操作实时变化。

数据流处理分为5个方面,详细描述如下。

(1)飞行模拟数据源。通过飞行数据模拟软件(如Flight Simulator或X-Plane)或者通过Visual Studio编程设计数据源软件,以此模拟接近真实的各种飞行数据,如飞行姿态、大气环境、交通信息等参数。

(2)数据管理软件。负责接收来自飞行模拟数据源产生的飞行数据,按照接口控制文件(ICD)要求进行组包,同时负责与目标机的TCP服务器间建立通信并发送相关数据,也可根据实验的具体需求进行网络配置。其中ICD包含了各航电接口的定义与规范,同时规定了消息块的帧结构、最大值、最小值、最小分辨率等信息。

(3)数据通信模块。运行于目标机上的服务器端程序,负责搭建TCP服务器,初始化网络连接,进行网络监听并接收来自模拟数据源管理软件的数据包,同时进行数据包的解包。

(4)数据处理模块。主要实现任务处理和数据分发功能,接收由数据接收模块传递的信息,解包并传输至综合显示图形界面。

图5 综合实验架构

(5)显示模块。接收来自数据处理模块的数据,按照不同数据的显示要求,通过调用图形库中间件、绘图引擎,将信息显示到不同的显示页面及区域,从而实现综合显示系统的人机交互。显示模块结构如图6所示。

图6 显示模块结构

2.3 实验步骤

实验由以下5步构成:(1)搭建开发环境,包括建立飞行数据模拟器部分;(2)熟悉数据管理软件及ICD要求,编写综合显示模拟仪表软件系统中的数据通信模块;(3)编写数据处理模块;(4)编写图形界面控制模块,包括Tilcon控件动作控制;(5)进行测试,记录实验数据,总结实验结论。

2.4 实验结果——综合显示界面

通过实验,从3个层面(构成、总体软件架构和数据流)搭建一个基于VxWorks的综合显示模拟仪表系统,体现了从模块级基本实验到系统级综合实验的完整实验教学过程。图7给出了一个实验结果实例—综合显示界面。

图7 综合显示界面

3 结语

本文从嵌入式系统课程教学的实践性需求出发,开展了基于VxWorks的实验课程设计,包括基本实验和综合实验两级实验教学内容体系;设计了多种功能性模块实验并以综合实验的形式设计一个从数据源生成到数据处理再到数据显示的实验平台,以此巩固课程教学知识和提升学生对于嵌入式系统技术开发的综合能力。

猜你喜欢

网络通信串口嵌入式
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
浅谈AB PLC串口跟RFID传感器的通讯应用
基于EM9000工控板高性能双串口通信模型设计与实现
基于网络通信的智能照明系统设计
TS系列红外传感器在嵌入式控制系统中的应用
网络通信中信息隐藏技术的应用
搭建基于Qt的嵌入式开发平台
基于网络通信的校园智能音箱设计
谈计算机网络通信常见问题及技术发展