占海燕++吴海坤
摘 要:本文简要介绍了嵌入式操作系统应用背景和ReWorks;针对信息交互软件设计需要,分析了ReWorks操作系统任务机制,给出了信息交互软件的设计过程,介绍了ReWorks环境下使用ReDe集成环境进行软件开发和调试过程,对同行进行同类型研究具有参考意义。
关键词:ReWorks;信息交互软件;多任务;ReDe
中图分类号:TP31 文献标识码:A
0.引言
嵌入式操作系统面向特定的应用需求,能够有针对性地进行设计、优化,进而提高效率降低成本。当前主流的通用型嵌入式操作系统主要有Linux, VxWorks, Windows CE.net等,其中面向控制、通信等领域的实时嵌入式操作系统有WindRiver公司的VxWorks等,国内主要的嵌入式操作系统有麒麟系列Linux,Reworks等。
嵌入式操作系统的广泛应用给我们的生活工作带来了巨大的便利,同时对嵌入式操作系统的可靠、可控也有了越来越高的要求,尤其在关系国家安全社会稳定的应用上。在国防、航天、电力、交通等领域的信息化系统建设中尽可能地使用国产化的硬件和软件。
ReWorks是由华东计算技术研究所自主研发的一款国产化的嵌入式操作系统,与vxWorks全面兼容,具有实时、高效、安全和可裁减等特性。ReWorks操作系统是由微内核及一组可裁剪的核心组件构建的可伸缩的嵌入式实时操作系统,与通用嵌入式操作系统VxWorks高度兼容,具有中断管理、内存管理、时钟管理等功能,不仅能够较好满足一般嵌入式系统也能满足大型嵌入式操作系统需求。
1.Reworks操作系统任务机制
在ReWorks操作系统中,任务是可以单独执行的线程,具有唯一的任务编号,占用独立的CPU和系统资源,一个时刻独立占用处理器时间。任务信息包含在一组数据结构中,由名称、优先级、状态、栈信息和执行上下文组成。ReWorks任务包括Posix类型和VxWorks类型,各自拥有创建接口和相关管理接口,两者除Posix部分管理接口可共用外,大部分管理接口不能混用,否则会导致接口错误。Posix的创建接口为:pthread_create();VxWorks创建接口为taskSpawn()。
任务状态有就绪、等待、运行和僵死。状态转换关系如图1所示。
根据ReWorks系统的实时性和多任务性,ReWorks任务可以划分为并发任务和顺序任务。并发任务之间相互竞争,操作系统通过信号量、队列来实现不同任务之间的同步和通信问题。任务信息记录在由系统分配与维护的一个数据结构中。ReWorks内核采用基于优先级的抢占调度算法,结合时间片轮转法以及先进先出算法来进行同优先级任务的调度。在创建任务时,必须合理使用任务的优先级和时间片轮转法。
ReWorks操作系统的消息队列是应用动态创建的具有可变长度的缓冲区,消息的长度和存储在其中的内容都是用户定义的,可以是实际的数据指针或空。通过消息,任务和ISR发送和接收消息,实现带有数据的通信和同步。消息队列是系统管理的机构队列允许任务传递可变长的消息,可使用队列进行几个同种资源的互斥访问,队列的长度相当于该资源的数目,它决定了有多少个任务能够同时使用该资源。
ReWorks操作系统提供一个特殊的寄存器作为每个任务控制块的一部分,即事件寄存器它是一个属于任务的对象,并由一组跟踪指定事件值的2进制事件标志组成任务和ISR可以使用事件标志来向其他任务发送信号。下面显示的代码例示了串口接收任务comRece1()在接收到n个数据后,通过事OS_EVENT_1激活接收处理任务rece_comm1task()的过程。
2.基于ReWorks的信息交互软件设计思路
2.1 信息交互软件特点
在大型软件系统中,信息交互软件承担着各个软件之间数据转发、协议转换任务,通常具有实时性要求高,数据量大、外部接口众多等特点。作为软件系统数据交换的主要部件,信息交互软件对系统正常有效运行发挥必不可少的作用。软件系统中各部分间数据接口方式主要有网络、串口、总线等,不同的接口之间需要合理的互连实现信息互通。信息交互软件的主要功能示意图如图2所示。
2.2 信息交互软件设计思路
在信息交互软件中,网络和总线为主要的接口方式。通过网络互连的软件模块之间,建立网络连接后,采用TCP或UDP方式进行数据通信。信息交互软件多为控制台应用程序,无需进行界面设计,只在控制台中打印必要的信息。针对信息交互软件实时性要求高和数据量大的特点,信息交互软件多采用多任务结构:数据接收任务、数据处理任务和数据发送任务。
信息交互软件可分为:初始化、中断处理、数据接收任务、数据处理任务、数据发送任务5部分。软件初始化完成网络接口、磁盘划分、中断设置、任务启动等功能。由于其他软件单元的数据发送是不可预知的,使用中断设置来处理。当产生外部中断时调用中断服务程序,通知数据处理任务读取数据。数据接收任务接收到中断服务程序发出的通知,从网口接收来自其他软件单元的数据并将数据存放到相应数据缓冲区中。数据处理任务从接收数据缓冲区中取出需要处理的数据,根据数据类型分别进行解析、处理、重组,然后将处理好的数据放入对应发送数据缓冲区。数据发送任务则是从数据发送缓冲区中取出需要发送的数据,增加帧头帧尾及校验信息后发送到相应目的地址。
一般信息交互软件过程如下:
(1)对板卡的网络、内存等进行初始化,设置网卡IP和可用内存大小等,同时进行必要参数设置,启动数据接收、数据处理、数据发送三种任务;
(2)数据接收任务将接收到的数据放入数据接收缓冲区,同时向数据处理任务发送信号;
(3)数据处理任务接收到信号后从数据接收缓冲区取数据,进行解析,按照协议重新组帧并放入数据发送缓冲区;
(4)数据发送任务将数据发送缓冲区的数据发送到相应的目的地址。
3.ReWorks下的信息交互软件开发和调试
ReWorks操作系统下的软件开发需使用相应开发环境,一般包括宿主计算机和目标机,其中宿主计算机上安装有软件开发集成工具,目标机为ReWorks操作系统,两者通过网络连接。宿主计算机生成可供目标机运行的可执行文件,目标机直接执行该文件。ReDe是由华东计算技术研究所自主研发的ReWorks操作系统软件开发集成工具,安装在宿主计算机上,支持X86、ARM、PowerPC等多种目标机平台,主要包括配置、工程管理、编辑、交叉编译、引导、调试等工具。本文软件开发和调试目标机为中电32所生产的通信处理板卡,采用ReWorks操作系统和集成开发环境ReDe。
在目标机上运行可执行文件之前,需配置目标机参数,包括目标机调试网口IP地址,目标机上软件的启动方式。用于信息交互的目标机拥有多个网口,其中一个网口作为调试网口与宿主计算机连接,剩余网口与其他软件单元通信。调试网口通过指令esetifconfig设置,与宿主计算机位于同一网段,剩余网口可通过指令直接设置也可以在软件初始化时设置。ReWorks有两种启动方式:网络启动和硬盘启动,通过指令设置。
ReDe中软件开发过程如下:
(1)在ReDe中对编写好的工程源代码进行构建,生成的可执行文件
(2)将可执行文件发送到ReWorks目标板卡上。可通过两种方式进行:一是在ReDe文件视图上将可执行文件所在文件夹设为TFTP文件路径,启动目标板卡后通过命令“load $al;g”,使ReWorks以网络的方式启动应用程序;二是在宿主计算机使用FTP工具将.bin可执行文件拷贝到ReWorks系统C盘目录下,重启目标机后ReWorks从硬盘启动应用程序。
需要在ReDe对开发的程序进行程序调试时,需要在项目配置文件中开启“允许程序调试连接”,重构项目,在目标机启动重构后的可执文件后,在宿主计算机进行调试。
结语
通过文中的分析表明ReWorks操作系统能够很好地满足信息交互软件设计需求,同时实践结果证明了ReWorks下开发信息交互软件实现开发过程简单,在实时性、大数据快速传输方面表现良好。
参考文献
[1]王小勇,郑朝辉,蔡红霞,等.基于ReWorks平台的SD卡驱动程序设计[J]. 现代电子技术,2011(12):86-88,92.
[2]黄鑫.Reworks上下文切换在Tricore上的实现[J].计算机工程,2011(S1):368-370.
[3]周向争.基于ReWorks操作系统的自动检票机研究[J]. 计算机应用与软件,2013(5):211-215+286.
[4]董巍,马云.基于ReWorks操作系统的实时多任务程序设计[J]. 中国新技术新产品,2013(9):53.
[5]陈杰,谷世红.基于ReWorks嵌入式操作系统的SNMP协议实现[J]. 电子技术与软件工程,2014(14):211-212.
[6]王雯隽.嵌入式操作系统ReWorks中USB接口软件的设计与实现[D].华东师范大学,2005.