模块
发布时间:2012/4/3 0:55:31 访问次数:664
在SOS中,模块是可以实现莱些功能或者任务的 MST517A-M-LF二进制可执行文件,就相当于TinyOS中的组件。模块可能会同时负责很多部分的功能,包括底层驱动、路由协议、应用程序等。
SOS的内核程序一般情况下是不需要变化的,除非底层硬件发生了改变或者源代码的管理必须改变。在SOS中一个实际的应用程序一般由一个模块或者多个的相互交互的模块组成,模块之间,位置独立,主要是通过消息机制或者函数接口来相互联系。SOS的发展面临的最大困难就是维护模块性和模块的安全性。
模块结构
SOS实现了一个定义完整并且优化的带有入口和出口的模块,这一类模块组成一个模块结构,SOS通过这样的一个结构来维护模块性。模块之间用两种入口机制来相互流通。第一种是通过内核的调度表,另一种是通过被模块注册的对方使用的函数。
模块的消息处理是通过模块的一个特定的函数来处理的,这个消息处理函数有两个参数,一个是正被分发的消息本身,一个是模块的状态。这两个参数都是一个结构体。所有模块的消息处理函数都必须依照SOS的内核定义,实现两个方法:init和final。init消息处理函数的作用是初始化模块的初始状态,初始化定时器,初始化一些注册函数以及一些订阅的函数。fina消息处理函数的作用是程序遐出时释放资源,包括内存、定时器、被注册过的函数指针。模块的消息处理函数还需要处理一些特定的消息,如定时器的触发、传感器读数据以及从别的模块或者别的传感器传来的包含数据的消息。SOS中的消息是异的,这点类似TinyOS。SOS的内核调度表会从优先级队列中,依次取出消息并将此消息发送给其对应的目的模块的消息处理函数。模块内部的直接函数是被用来做一些需要同步处理的操作。这些内部函数需要注册和订阅才能使用,模块的状态信息保存在内存的block块中,模块的地址是可再定位的,程序的状态是由SOS内核管理的,内部函数的位置是通过一个注册过程确定的,而消息处理函数则是处于可以执行的二进制的一段连续的块中。
SOS的内核程序一般情况下是不需要变化的,除非底层硬件发生了改变或者源代码的管理必须改变。在SOS中一个实际的应用程序一般由一个模块或者多个的相互交互的模块组成,模块之间,位置独立,主要是通过消息机制或者函数接口来相互联系。SOS的发展面临的最大困难就是维护模块性和模块的安全性。
模块结构
SOS实现了一个定义完整并且优化的带有入口和出口的模块,这一类模块组成一个模块结构,SOS通过这样的一个结构来维护模块性。模块之间用两种入口机制来相互流通。第一种是通过内核的调度表,另一种是通过被模块注册的对方使用的函数。
模块的消息处理是通过模块的一个特定的函数来处理的,这个消息处理函数有两个参数,一个是正被分发的消息本身,一个是模块的状态。这两个参数都是一个结构体。所有模块的消息处理函数都必须依照SOS的内核定义,实现两个方法:init和final。init消息处理函数的作用是初始化模块的初始状态,初始化定时器,初始化一些注册函数以及一些订阅的函数。fina消息处理函数的作用是程序遐出时释放资源,包括内存、定时器、被注册过的函数指针。模块的消息处理函数还需要处理一些特定的消息,如定时器的触发、传感器读数据以及从别的模块或者别的传感器传来的包含数据的消息。SOS中的消息是异的,这点类似TinyOS。SOS的内核调度表会从优先级队列中,依次取出消息并将此消息发送给其对应的目的模块的消息处理函数。模块内部的直接函数是被用来做一些需要同步处理的操作。这些内部函数需要注册和订阅才能使用,模块的状态信息保存在内存的block块中,模块的地址是可再定位的,程序的状态是由SOS内核管理的,内部函数的位置是通过一个注册过程确定的,而消息处理函数则是处于可以执行的二进制的一段连续的块中。
在SOS中,模块是可以实现莱些功能或者任务的 MST517A-M-LF二进制可执行文件,就相当于TinyOS中的组件。模块可能会同时负责很多部分的功能,包括底层驱动、路由协议、应用程序等。
SOS的内核程序一般情况下是不需要变化的,除非底层硬件发生了改变或者源代码的管理必须改变。在SOS中一个实际的应用程序一般由一个模块或者多个的相互交互的模块组成,模块之间,位置独立,主要是通过消息机制或者函数接口来相互联系。SOS的发展面临的最大困难就是维护模块性和模块的安全性。
模块结构
SOS实现了一个定义完整并且优化的带有入口和出口的模块,这一类模块组成一个模块结构,SOS通过这样的一个结构来维护模块性。模块之间用两种入口机制来相互流通。第一种是通过内核的调度表,另一种是通过被模块注册的对方使用的函数。
模块的消息处理是通过模块的一个特定的函数来处理的,这个消息处理函数有两个参数,一个是正被分发的消息本身,一个是模块的状态。这两个参数都是一个结构体。所有模块的消息处理函数都必须依照SOS的内核定义,实现两个方法:init和final。init消息处理函数的作用是初始化模块的初始状态,初始化定时器,初始化一些注册函数以及一些订阅的函数。fina消息处理函数的作用是程序遐出时释放资源,包括内存、定时器、被注册过的函数指针。模块的消息处理函数还需要处理一些特定的消息,如定时器的触发、传感器读数据以及从别的模块或者别的传感器传来的包含数据的消息。SOS中的消息是异的,这点类似TinyOS。SOS的内核调度表会从优先级队列中,依次取出消息并将此消息发送给其对应的目的模块的消息处理函数。模块内部的直接函数是被用来做一些需要同步处理的操作。这些内部函数需要注册和订阅才能使用,模块的状态信息保存在内存的block块中,模块的地址是可再定位的,程序的状态是由SOS内核管理的,内部函数的位置是通过一个注册过程确定的,而消息处理函数则是处于可以执行的二进制的一段连续的块中。
SOS的内核程序一般情况下是不需要变化的,除非底层硬件发生了改变或者源代码的管理必须改变。在SOS中一个实际的应用程序一般由一个模块或者多个的相互交互的模块组成,模块之间,位置独立,主要是通过消息机制或者函数接口来相互联系。SOS的发展面临的最大困难就是维护模块性和模块的安全性。
模块结构
SOS实现了一个定义完整并且优化的带有入口和出口的模块,这一类模块组成一个模块结构,SOS通过这样的一个结构来维护模块性。模块之间用两种入口机制来相互流通。第一种是通过内核的调度表,另一种是通过被模块注册的对方使用的函数。
模块的消息处理是通过模块的一个特定的函数来处理的,这个消息处理函数有两个参数,一个是正被分发的消息本身,一个是模块的状态。这两个参数都是一个结构体。所有模块的消息处理函数都必须依照SOS的内核定义,实现两个方法:init和final。init消息处理函数的作用是初始化模块的初始状态,初始化定时器,初始化一些注册函数以及一些订阅的函数。fina消息处理函数的作用是程序遐出时释放资源,包括内存、定时器、被注册过的函数指针。模块的消息处理函数还需要处理一些特定的消息,如定时器的触发、传感器读数据以及从别的模块或者别的传感器传来的包含数据的消息。SOS中的消息是异的,这点类似TinyOS。SOS的内核调度表会从优先级队列中,依次取出消息并将此消息发送给其对应的目的模块的消息处理函数。模块内部的直接函数是被用来做一些需要同步处理的操作。这些内部函数需要注册和订阅才能使用,模块的状态信息保存在内存的block块中,模块的地址是可再定位的,程序的状态是由SOS内核管理的,内部函数的位置是通过一个注册过程确定的,而消息处理函数则是处于可以执行的二进制的一段连续的块中。