专利名称:融合无线传感网络操作系统内核的方法
技术领域:
本发明涉及计算机操作系统的调试技术,特别是涉及一种融合无线传感网 络操作系统内核的方法。
背景技术:
计算机和网络技术发展至今,已经经历了主计算模式(Mainframe Computing) 时代和桌面计算模式(Desktop Computing)时代,并且已经开始向普适计算的 时代迈进。
在普适计算无所不在的、随时随地可以进行计算的环境中,无线传感网络 (WSN)必将得到大范围的应用。无线传感网络的节点具有感知、无线通讯、 计算能力,并且具有有限资源和价格低廉的特点,适合于大范围部署。
由于无线传感网络的每个节点的资源非常有限, 一般的桌面操作系统不能作 为节点的操作系统来使用。随着无线传感网络研究的兴起,无线传感网络操作 系统的研究也成为当前计算机前沿研究的一个热点。因此各种无线传感网络节 点操作系统也大量涌现,例如TinyOS, MANTIS,SOS等。
而当一个全新的操作系统的问世后,研发人员们又得重新开始为这个操作 系统编写新的应用程序。而这些应用程序很多是前人已经写过无数遍的。发明 一种简单、代价低廉的方法,能将一个操作系统的内核融合到另一个操作系统 内核中,形成一个新的操作系统内核,是一项非常有价值的技术。这项技术可 以使使融合后的操作系统内核具有融合前两个操作系统内核的共同的优点,而 又可以相互弥补各自的不足。并且旧操作系统的应用程序代码可以无缝地运行 与新操作系统内核之上,从而大大节约了无线传感网络的应用程序开发中的重 复劳动。
很多操作系统设计的初衷是针对某些方面的需要而设计的。但在其他的应 用场合就会表现出特性和功能上的缺陷。采用添加或替换操作系统内核模块的 方法扩展操作系统的功能可能会使操作系统失去原有的特性,并且的新机制的 应用范围仍然有其不可避免的局限性。并且这两种方法实现的代价都相当的大。
发明内容
本发明的目的在于提供一种将两个无线传感网络节点操作系统融合的方法, 使融合后的操作系统内核可以同时提供两个原始操作系统内核的系统服务,并可以使其中一个操作系统上的应用程序无缝地在融合后的操作系统内核上运 行。
本发明采用的技术方案是
1) 调度系统的融合
由调度代理模块接收目标操作系统的任务,调度代理模块对任务的数据类 型进行调整,并为之附加优先级和调度算法,然后调度代理模块将任务发送给 基础操作系统,并由基础操作系统完成任务的调度和运行;
2) 中断系统的融合
中断钩子模块入口被到嵌入到目标操作系统的硬件驱动中,使中断响应函
数的执行转入到中断钩子模块,中断钩子模块依据中断号为其设置一个优先级, 将中断号和中断入口地址插入到基础操作系统的中断调度系统中去调度和执 行;
3) 时钟系统的融合
使用硬件虚拟技术和时钟分频技术,利用底层操作系统的定时器为目标操 作系统虚拟出一个硬件时钟,并在内存中虚拟无线传感网络节点的硬件时钟计 数器的所有寄存器,并按照硬件的功能在软件上为目标操作系统提供一个虚拟 时钟,使两个操作系统的内核的时钟系统同时运行。
本发明使用WSN操作系统融合技术实现应用程序代码复用的方法,不再使 用构建操作系统接口层和构建虚拟机的方法实现应用程序代码服用。
与背景技术相比本发明具有以下优点
1) 扩展性使用内核代理技术将两个无线传感网络的操作系统的内核融合在
一起,以达到两个操作内核相互扩充功能,在保持两个操作系统内核优点和特 性的基础上,达到内核优化和功能扩展的目的。
2) 兼容性原本只可在目标操作系统之上运行应用程序,可以完全不需修改, 无缝运行于基础操作系统之上。而且应用程序在融合成的内核上的运行与在原 始操作系统上单独运行所表现的运行状态和结果完全相同。
3) 可用性应用程序可以同时使用两个操作系统内核提供的系统服务。如 原始的目标操作系统上不存在任务的优先级抢占功能,而原始的基础操作系统 具有任务的优先级抢占功能;融合后,应用程序就可以使用优先级抢占这个系 统服务。
4)易用性不需要对原始的两个操作系统内核进行大量代码修改,只需设计 几个简单的代理模块,并用这些代理模块将两个原始操作系统内核相连接。
图l是系统结构图。
图2是调度代理模块工作流程图。 图3是中断钩子模块工作流程图。 图4是虚拟时钟模块工作流程图。
具体实施例方式
本发明的技术和方法在无线传感网络的操作系统TinyOS-V2.0和操作系统 SenspireOS-Vl.O上实现。实现后的系统结构如图1所示。在此实现中,将 TinyOS-V2.0作为目标操作系统,将SenspireOS-Vl.O作为基础操作系统,使无 线传感网络的节点操作系统TinyOS-V2.0的内核融合到另 一节点操作系统 SenspireOS-Vl.O的内核之上。
SenspireOS-Vl.O启动后先初始化自身的内核模块,然后启动TinyOS-V2.0 的内核,并由TinyOS-V2.0初始化所有的硬件驱动。TinyOS-V2.0内核的(任务) 调度器通过(任务)调度代理模块与SenspireOS-Vl.O的(任务)调度器连接。 TinyOS-V2.0的内核的中断系统通过钩子程序与SenspireOS-Vl.O的中断系统连 接。TinyOS-V2.0的时钟系统运行在由SenspireOS-Vl.O的时钟系统虚拟出来的 时钟计数器之上。应用程序的运行由TinyOS-V2.0和SenspireOS-Vl.O共同支持。 应用程序既可以只运行在TinyOS-V2.0之上,仅使用TinyOS-V2.0内核提供的服 务;也可以跨平台,同时使用TinyOS-V2.0和SenspireOS-Vl.O内核提供的系统 服务。
本发明包括以下几个模块调度代理模块、中断钩子模块和虚拟时钟模块
1) 调度代理模块本模块的作用是起到基础操作系统的任务调度器和目标 操作系统的任务调度器之间的连接桥梁,使两个操作系统发布的任务可以统一 调度执行。调度代理模块还起到数据格式转换器的作用,使基础操作系统和目标 发布的任务的数据类型相互转化,这样两个操作系统的调度器之间可以相互通 信。
2) 中断钩子模块本模块的作用是起到基础操作系统的中断系统和目标操 作系统的中断系统之间的连接桥梁,使两个操作系统的中断系统可以在同一个 无线传感网络节点上运行。
3) 虚拟时钟模块该模块的作用是使用硬件虚拟技术和时钟分频技术,利 用底层操作系统的时钟系统,为目标操作系统虚拟出一个硬件时钟,使两个操 作系统的内核的时钟系统可以同时运行。1. 调度代理模块的工作流程(如图2所示)如下
1) 调度代理模块接收TinyOS-V2.0发布的任务。
2) 调度代理模块将此任务的数据类型转换SenspireOS-Vl.O的任务的数据 类型。
3) 调度代理模块将任务转发给基础操作系统的调度器。由于TinyOS-V2.0 的任务调度机制只有FIFO —种,所以调度代理模块将发送给SenspireOS-Vl.O 的任务的优先级设置为0级(最高级),并将其调度策略指定为FIFO。
4) 调度代理模块发送任务后会从SenspireOS-V1.0得到一个任务ID。调度 代理模块将此ID和响应的任务的数据保存在本身的缓存队列里。
5) SenspireOS-Vl.O的调度代理模块执行调度算法并选择执行TinyOS-V2.0 的任务时,会将此任务的任务ID通知调度代理模块进行任务调度。
6) SenspireOS-Vl.O的调度器将被调度到的任务的ID通知调度代理模块。
7) 任务代理模块依据任务ID从任务队列中将任务取出并执行。
2. 中断钩子模块入口被到嵌入到目标操作系统的硬件驱动中,使中断响应函 数的执行转入到钩子模块。假设i号中断被触发,则其执行流程(如图3所示) 如下
1) i号中断触发。
2) 开始响应中断。
3) 转入到中断钩子模块。
4) 中断钩子模块依据中断号为其设置一个优先级,将中断号和中断入口地 址插入到SenspireOS-Vl.O的中断调度系统。
5) SenspireOS-Vl.O的中断调度系统进行调度后决定执行i号中断的处理例程。
6) 执行中断处理例程。
3. 虚拟时钟模块VTimerO使用硬件虚拟技术和时钟分频技术,利用底层操作 系统的时钟系统,为目标操作系统虚拟出一个硬件时钟。此虚拟时钟模块模拟 了无线传感网络节点的硬件时钟计数器的所有控制寄存器,并从 SenspireOS-Vl.O的时钟系统中分频出一个时钟计数器信号作为TinyOS-V2.0的 时钟计数器。此虚拟时钟模块的所有控制逻辑与硬件时钟计数器的控制逻辑完 全相同。如此,两个操作系统的内核的时钟系统可以同时运行。虚拟时钟模块 运行流程(如图4所示)如下
硬件时钟Timer0是不断运行的。为了虚拟Timer0的运行效果,VTimerO也是不断地循环运行。上图表示的只是VTimerO—个循环的运行过程。图4中,Tc 是TimerO从0开始计时到触发匹配中断的时间。To是Timer0从0开始计时到 触发溢出中断的时间。Interval是定时器定时时间。 关键步骤的说明如下
1) 首先,在初始化VTimerO的所有寄存器。这部分的功能作为控制接口由 VTimerO的驱动模块HplAtml28TimerOAsyncP提供。
2) 将匹配时钟中断和溢出时钟中断分为两个定时过程。由于匹配中断肯定 在溢出中断之前触发,所以先将定时器的定时时间间隔设定为Tc。
3) 由于匹配中断事件的溢出中断事件是相互间隔触发的,且两者触发时间 间隔不同,所以定时器的类型设置为一次触发。每次触发一个定时器后,又自 动启动一个新的定时器。
4) 定时器触发匹配中断事件后依据VTimerO的寄存器值判断是否重新开始 计时。如果重新开始计时,那么表示VTimerO不会溢出,溢出中断事件不会被 触发,VTimerO重新回到步骤l)开始虚拟匹配中断事件的触发过程;否则,则 VTimerO转到步骤5)开始虛拟溢出中断事件的触发过程。
5) 将定时器定时间隔设置为To-Tc,定时器类型为溢出中断类型。启动定 时器。
6) 定时器到时,溢出中断事件触发。之后重新回到步骤1)开始虚拟匹配 中断事件的触发过程。
4.在TinyOS-V2.0编程环境的基础上,开发了此在融合后的操作系统内核上 开发应用程序的开发环境。首先修改了 nesC的编译器,使其可以使用通用版本 的avr-gcc编译器来生成ELF格式的可执行文件。然后将调度代理模块、中断钩 子模块、虚拟时钟模块添加到nesC的模块库中。编译系统按照应用程序的需求 从目标操作系统中收集需要的模块,并使编译器在编译时自动连接这几个模块, 将其编译生成一个C文件。此后,编译系统利用avr-gcc将生成的C文件编译成 二进制文件,并将此二进制文件与SenspireOS-V1.0的内核连接库进行链接,生 成可执行文件。
使用本方法不需要大量修改操作系统内核的代码,就可以使一个操作系统 的代码运行在另一个操作系统的内核之上。既可以保留两个操作系统内核各自 的特性,又可以为应用程序提供两个操作系统共同的系统服务。也就是说,应 用程序可以依据需要配置所使用的操作系统的内核服务。
权利要求
1.一种融合无线传感网络操作系统内核的方法,其特征在于1)调度系统的融合由调度代理模块接收目标操作系统的任务,调度代理模块对任务的数据类型进行调整,并为之附加优先级和调度算法,然后调度代理模块将任务发送给基础操作系统,并由基础操作系统完成任务的调度和运行;2)中断系统的融合中断钩子模块入口被嵌入到目标操作系统的硬件驱动中,使中断响应函数的执行转入到中断钩子模块,中断钩子模块依据中断号为其设置一个优先级,将中断号和中断入口地址插入到基础操作系统的中断调度系统中去调度和执行;3)时钟系统的融合使用硬件虚拟技术和时钟分频技术,利用底层操作系统的定时器为目标操作系统虚拟出一个硬件时钟,并在内存中虚拟无线传感网络节点的硬件时钟计数器的所有寄存器,并按照硬件的功能在软件上为目标操作系统提供一个虚拟时钟,使两个操作系统的内核的时钟系统同时运行。
全文摘要
本发明公开了一种融合无线传感网络操作系统内核的方法。由调度代理模块接收目标操作系统的任务,对任务的数据类型进行调整,并附加优先级和调度算法,将任务发送给基础操作系统,并完成任务的调度和运行;中断钩子模块入口被嵌入到目标操作系统的硬件驱动中,使中断响应函数的执行转入到中断钩子模块,依据中断号设置优先级,将中断号和中断入口地址插入到基础操作系统的中断调度系统中去调度和执行;使用硬件虚拟和时钟分频,利用底层操作系统的定时器为目标操作系统虚拟出硬件时钟,并在内存中虚拟无线传感网络节点的硬件时钟计数器的所有寄存器,按照硬件的功能在软件上为目标操作系统提供虚拟时钟,使两个操作系统的内核的时钟系统同时运行。
文档编号G06F9/48GK101299195SQ20081006136
公开日2008年11月5日 申请日期2008年5月6日 优先权日2008年5月6日
发明者卜佳俊, 罕 姜, 腾国栋, 郑扣根, 纯 陈 申请人:浙江大学