CN103150162B - 提高嵌入式软件代码共享程度的方法 - Google Patents
提高嵌入式软件代码共享程度的方法 Download PDFInfo
- Publication number
- CN103150162B CN103150162B CN201310057286.2A CN201310057286A CN103150162B CN 103150162 B CN103150162 B CN 103150162B CN 201310057286 A CN201310057286 A CN 201310057286A CN 103150162 B CN103150162 B CN 103150162B
- Authority
- CN
- China
- Prior art keywords
- initialization
- module
- software module
- message
- top layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种提高嵌入式软件代码共享程度的方法,包括以下步骤:使用源文件和头文件两种组织形式进行静态配置,在软件模块和操作系统之间形成中间层;完成系统的顶层初始化;创建多个软件模块共享的公共消息处理任务和自消息处理任务,完成调度初始化;各软件模块向中间层提供顶层初始化、调度初始化和消息处理函数,并通过中间层实现各软件模块之间的通信,从而完成软件模块的初始化和相应的消息处理。本发明,在软件模块和操作系统适配层之间提供一个模块管理与调度的中间层,将各个模块之间通信和模块调度接管过来,降低模块之间的耦合,可以非常方便的将模块做成组件独立出来,以供其他产品使用,提高代码的共享程度。
Description
技术领域
本发明涉及嵌入式系统,具体涉及提高嵌入式软件代码共享程度的方法。
背景技术
通信领域的嵌入式软件是为实现某种特定用途而设计的,建立在通用处理器和嵌入式操作系统之上。在通信领域日新月异的今天,嵌入式软件通常由多个模块和多个线程组成。目前,嵌入式软件的主流设计方法主要有几下几种:
(1)软件模块直接使用操作系统提供的接口与特定的嵌入式操作系统深度绑定。
(2)使用封装技术将需要使用的操作系统接口封装起来,用以支持多操作系统,软件模块使用封装之后的函数接口。
上述两种方法中,软件模块之间的相互通信需要定义多个全部变量用于软件模块之间的两两通信,并且使用操作系统提供的消息接口进行处理,软件模块的初始化和创建线程等接口直接挂接在用户主入口函数里面。
然而,上述两种方法分别存在各自的缺点:第(1)种方法的缺点是软件代码不支持多操作系统,并且软件模块之间的通信结构复杂,软件模块无法独立出来,代码共享程度低。第(2)种方法虽然解决代码不支持多操作系统的问题,但是没有解决模块之间的通信结构复杂、模块无法独立出来、代码共享程度低的问题。
由此可见,现有的嵌入式软件普遍存在模块之间的通信结构复杂,模块无法独立出来,代码共享程度低的问题。
发明内容
本发明所要解决的技术问题是解决嵌入式软件存在模块之间的通信结构复杂,模块无法独立出来,代码共享程度低的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种提高嵌入式软件代码共享程度的方法,包括以下步骤:
使用源文件和头文件两种组织形式进行静态配置,在软件模块和操作系统之间形成中间层,采用宏描述的方式在源文件中定义顶层初始化登记表、模块登记表和模块族登记表的全局变量数组,在头文件中描述相关的全局变量成员;
根据顶层初始化登记表的内容完成系统的顶层初始化;
根据模块族登记表创建多个软件模块共享的公共消息处理任务,根据模块登记表创建非模块族的相应自消息处理任务,完成调度初始化,根据各软件模块的初始化周期和初始化步骤依次发送相关的调度指令;
各软件模块向中间层提供顶层初始化、调度初始化和消息处理函数,并通过中间层实现各软件模块之间的通信,从而完成软件模块的初始化和相应的消息处理。
在上述方法中,顶层初始化包括以下步骤:
步骤201:获取顶层初始化登记表的基地址和元素个数;
步骤202:获取顶层初始化登记表中的第一个元素;
步骤203:调用该元素的初始化接口进行初始化;
步骤204:判断本次初始化是否成功,如果初始化失败,则返回顶层初始化错误,结束顶层初始化;否则,转步骤205;
步骤205:获取顶层初始化登记表中的下一个元素,如果上一个元素已经是顶层初始化登记表中的最后一个元素,则转步骤206;否则,转步骤203;
步骤206:启动调度初始化接口,如果调度初始化接口启动失败,则返回调度初始化错误,结束顶层初始化;否则返回顶层初始化成功,结束顶层初始化。
在上述方法中,调度初始化包括以下步骤:
步骤301:定义软件模块描述和任务描述的全局变量数据,根据模块族登记表创建公共消息处理任务,并初始化软件模块描述和任务描述的相关数据;定义模块登记表中局部变量的元素个数,并分别设置相应局部变量的数值;
步骤302:获取模块登记表中第一个软件模块的登记信息及描述信息;
步骤303:判断该软件模块是否为模块族登记表中的模块,若是,则创建公共消息处理任务,并初始化全局变量的描述信息,转步骤304;否则,创建自消息处理任务,并初始化局部变量的描述信息,转步骤304;
步骤304:判断该软件模块是否为模块族登记表中的最后一个,如果不是,则转步骤305,否则,转步骤306;
步骤305:获取模块族登记表中下一个软件模块的模块登记信息及描述信息,转步骤303;
步骤306:定义全局变量初始化周期,并设置为1;定义软件模块的初始化步骤,并设置为1;
步骤307:获取模块登记表中的第一个软件模块;
步骤308:向该软件模块发送模块初始化任务消息,并等待初始化返回结果;
步骤309:判断初始化返回结果,如果初始化失败,则登记系统错误信息并返回初始化失败,调度初始化结束;否则转步骤310;
步骤310:判断模块初始化步骤是否小于最大初始化步骤,如果是则转到步骤311,否则转到步骤312;
步骤311:软件模块初始化步骤加1,转步骤308;
步骤312:判断当前的全局变量初始化周期是否小于全局变量最大初始化周期,如果是则转步骤313;否则,调度初始化结束;
步骤313:判断当前初始化周期是否还有软件模块需要进行初始化,是则全局变量初始化周期加1,转步骤314,否则转步骤315;
步骤314:判断该软件模块是否为模块登记表中的最后一个,如果不是,则转步骤315,否则,调度初始化结束,启动模块公共消息处理任务和自消息处理任务;
步骤315:获取模块登记表中下一个软件模块的模块,转步骤308。
在上述方法中,模块公共消息处理任务的流程包括以下步骤:
步骤401:定义软件模块描述和任务描述的局部变量,并根据当前运行参数初始化该局部变量;
步骤402:等待模块初始化事件或任务运行事件,若为模块初始化事件,则转步骤403,若为任务运行事件,则转到骤404,其他事件继续本步骤;
步骤403:若在当前初始化周期内模块初始化接口函数不存在,则转步骤402,否则转步骤405;
步骤404:等待模块初始化事件或消息队列非空事件,若所述非空事件,则转到步骤406,其他继续本步骤;
步骤405:调用模块初始化函数执行当前初始化步骤的初始化,向调度初始化模块发送初始化结果事件,转步骤402;
步骤406:依次轮询任务描述里面的各个模块,读取消息并调用消息处理函数进行处理,处理完成后调度释放消息,所有消息处理完成后转步骤404。
在上述方法中,模块自消息处理任务的流程包括以下步骤:
步骤501:定义软件模块描述和任务描述的局部变量,并根据当前运行参数初始化该变量;
步骤502:判断模块初始化步骤是否完成,若初始化没有完成,则转步骤503,否则转到步骤504;
步骤503:等待任务运行事件,若等到任务运行事件,则转到步骤504,否则继续本步骤;
步骤504:调用模块自消息处理任务函数完成模块的指定功能;
步骤505:删除模块自消息处理任务。
本发明,在软件模块和操作系统适配层之间提供一个模块管理与调度的中间层,将各个模块之间通信和模块调度接管过来,降低模块之间的耦合,可以非常方便的将模块做成组件独立出来,以供其他产品使用,提高代码的共享程度。
附图说明
图1是本发明提供的方法流程图;
图2是本发明的顶层初始化流程图;
图3是本发明的调度初始化流程图;
图4是本发明的模块公共消息处理任务流程图;
图5是本发明的模块自消息处理任务流程图;
图6是本发明的模块的消息使用流程;
图7是本发明的消息管理的状态机。
具体实施方式
本发明的目的在于提供一种提高嵌入式软件代码共享程度的方法,采用积木式模块化设计方式,在软件模块和操作系统适配层之间提供一个模块管理与调度的中间层,使软件模块接口统一,软件模块之间依赖程度低,这样在新产品的开发上可以非常容易使用其他产品开发的软件模块,提高了软件模块代码的共享程度。为了更好的说明本发明,下面将结合具体实施例和说明书附图进行详细的阐述。
如图1所示,本发明提供的提高嵌入式软件代码共享程度的方法,包括以下步骤:
步骤101、静态配置。
静态配置主要负责完成顶层初始化登记表、模块登记表和模块族登记表的管理,使用源文件和头文件两种组织形式,源文件用于定义顶层初始化登记表、模块登记表和模块族登记表的全局变量以及相关的宏描述形式,在源文件(源代码文件)中采用宏描述的方式定义顶层初始化登记表、模块登记表、模块族登记表的全局变量数组,使源代码在编译的时候自动生成相关登记表的内容,头文件用于登记相关全局变量的成员,在头文件中完成相关的全局变量成员的宏描述定义,新增全局变量成员的时候只需要修改头文件即可。
步骤102、顶层初始化。
顶层初始化是指在程序入口和模块初始化之间进行的初始化,根据顶层初始化登记表的内容完成,在所有模块初始化之前进行,实现系统全局相关的初始化。具体作法是:创建一个根任务,根据顶层初始化登记表的内容依次完成顶层初始化过程,在完成所有的顶层初始化之后,调用调度初始化入口启动调度初始化。
步骤103、调度初始化。
调度初始化负责创建模块公共消息处理任务和自消息处理任务并使其在模块初始化完成之后才运行。首先根据模块族登记表的内容创建多个模块共享的公共消息处理任务,然后根据模块登记表的内容创建非模块族的模块的自消息处理任务。根据模块的初始化周期和初始化步骤依次向模块发送公共消息处理任务和自消息处理任务指令。
步骤104、完成模块的初始化和消息处理,软件模块只需要向该中间层提供顶层初始化、调度初始化和消息处理函数,软件模块之间的通信通过该中间层来实现,软件模块的初始化分成多个初始化周期,每个初始化周期分成多个初始化步骤,模块的初始化和消息处理包括以下几个方面:
(1)模块公共消息处理任务。
模块公共消息处理任务负责完成模块的初始化和消息处理,为所有的模块提供统一的消息处理,按照初始化的目的不同,可以将模块的初始化分布在不同的阶段完成,该任务读取模块的消息队列里面的消息,调用模块登记表里面对应的消息处理函数进行处理,处理之后统一释放任务。
(2)、模块自消息处理任务。
模块自消息处理任务负责完成消息处理之外的为需要完成某种特定功能的任务。
(3)、消息管理。
消息管理负责完成消息队列的管理、消息的分配和释放、消息的入队和出对以及相关消息状态的处理。
顶层初始化的流程如图2所示,包括以下步骤:
步骤201:获取顶层初始化登记表的基地址和元素个数;
步骤202:获取顶层初始化登记表中的第一个元素;
步骤203:调用该元素的初始化接口进行初始化;
步骤204:判断本次初始化是否成功,如果初始化失败,则返回顶层初始化错误,结束顶层初始化;否则,转步骤205;
步骤205:获取顶层初始化登记表中的下一个元素,如果上一个元素已经是顶层初始化登记表中的最后一个元素,则转步骤206;否则,转步骤203;
步骤206:启动调度初始化接口,如果调度初始化接口启动失败,则返回调度初始化错误,结束顶层初始化;否则返回顶层初始化成功,结束顶层初始化。
调度初始化的流程如图3所示,包括以下步骤:
步骤301:定义软件模块描述和任务描述的全局变量数据,根据模块族登记表创建公共消息处理任务,并初始化软件模块描述和任务描述的相关数据;定义模块登记表中局部变量的元素个数,并分别设置相应局部变量的数值;
步骤302:获取模块登记表中第一个软件模块的登记信息及描述信息;
步骤303:判断该软件模块是否为模块族登记表中的模块,若是,则创建公共消息处理任务,并初始化全局变量的描述信息,转步骤304;否则,创建自消息处理任务,并初始化局部变量的描述信息,转步骤304;
步骤304:判断该软件模块是否为模块族登记表中的最后一个,如果不是,则转步骤305,否则,转步骤306;
步骤305:获取模块族登记表中下一个软件模块的模块登记信息及描述信息,转步骤303;
步骤306:定义全局变量初始化周期,并设置为1;定义软件模块的初始化步骤,并设置为1;
步骤307:获取模块登记表中的第一个软件模块;
步骤308:向该软件模块发送模块初始化任务消息,并等待初始化返回结果;
步骤309:判断初始化返回结果,如果初始化失败,则登记系统错误信息并返回初始化失败,调度初始化结束;否则转步骤310;
步骤310:判断模块初始化步骤是否小于最大初始化步骤,如果是则转到步骤311,否则转到步骤312;
步骤311:软件模块初始化步骤加1,转步骤308;
步骤312:判断当前的全局变量初始化周期是否小于全局变量最大初始化周期,如果是则转步骤313;否则,调度初始化结束;
步骤313:判断当前初始化周期是否还有软件模块需要进行初始化,是则全局变量初始化周期加1,转步骤314,否则转步骤315;
步骤314:判断该软件模块是否为模块登记表中的最后一个,如果不是,则转步骤315,否则,处理完该软件模块后,结束调度初始化,启动模块公共消息处理任务和自消息处理任务;
步骤315:获取模块登记表中下一个软件模块的模块,转步骤308。
软件模块的公共消息处理任务流程如图4所示,包括以下步骤:
步骤401:定义软件模块描述和任务描述的局部变量,并根据当前运行参数初始化该局部变量;
步骤402:等待模块初始化事件或任务运行事件,若为模块初始化事件,则转步骤403,若为任务运行事件,则转到步骤404,其他事件继续本步骤;
步骤403:若在当前初始化周期内模块初始化接口函数不存在,则转步骤402,否则转到步骤405;
步骤404:等待模块初始化事件或消息队列非空事件,若所述非空事件,则转到步骤406,其他继续本步骤;
步骤405:调用模块初始化函数执行当前初始化步骤的初始化,向调度初始化模块发送初始化结果事件,转到步骤402;
步骤406:依次轮询任务描述里面的各个软件模块,读取相应的消息处理函数进行处理,处理完成后调度释放消息,所有消息处理完成后转步骤404。
模块自消息处理任务的流程如图5所示,包括以下步骤:
步骤501:定义软件模块描述和任务描述的局部变量,并根据当前运行参数初始化该变量;
步骤502:判断模块初始化步骤是否完成,若初始化没有完成,则转步骤503,否则转到步骤504;
步骤503:等待任务运行事件,若等到任务运行事件,则转到步骤504,否则继续本步骤;
步骤504:调用模块自消息处理任务函数完成模块的指定功能,自消息处理任务一般情况下为循环体;
步骤505:删除系统创建的模块自消息处理任务。
消息管理的流程如图6所示,包括以下步骤:。
步骤601:申请消息,填写消息内容;
步骤602:调用消息发送接口将消息发送到目的模块的消息队列,同时向消息处理任务发送消息队列非空事件并激活消息处理任务;
步骤603:判断发送是否成功,如果成功,则结束流程,否则转步骤604;
步骤604:则释放消息,并结束流程。
如图7所示,消息队列的创建过程描述如下:
(1)建立消息队列管理全局变量;
(2)分配一个空闲的消息队列,并将其状态设置为忙,初始化该消息队列。
消息的管理描述如下:
(1)申请消息,将消息从空闲迁移到分配;
(2)释放消息,将消息从分配迁移到空闲;
(3)发送消息,将消息从分配迁移到入队列,并且队列所属任务发送队列非空事件;
(4)获取消息,将消息从入队列迁移到出队列,有消息处理任务调用消息处理函数来处理该消息;
(5)调度释放,将消息从出队列迁移到空闲,该消息有处理任务统一进行释放;
(6)消息转发,将消息从出队列迁移到入队列;
(7)禁止调度释放,将消息从出队列迁移到分配。
本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
Claims (3)
1.提高嵌入式软件代码共享程度的方法,其特征在于,包括以下步骤:
使用源文件和头文件两种组织形式进行静态配置,在软件模块和操作系统之间形成中间层,采用宏描述的方式在源文件中定义顶层初始化登记表、模块登记表和模块族登记表的全局变量数组,在头文件中描述相关的全局变量成员;
根据顶层初始化登记表的内容完成系统的顶层初始化;
根据模块族登记表创建多个软件模块共享的模块公共消息处理任务,根据模块登记表创建非模块族的相应模块自消息处理任务,完成调度初始化,根据各软件模块的初始化周期和初始化步骤依次发送相关的调度指令;
各软件模块向中间层提供顶层初始化、调度初始化和消息处理函数,并通过中间层实现各软件模块之间的通信,从而完成软件模块的初始化和相应的消息处理;
顶层初始化包括以下步骤:
步骤201:获取顶层初始化登记表的基地址和元素个数;
步骤202:获取顶层初始化登记表中的第一个元素;
步骤203:调用该元素的初始化接口进行初始化;
步骤204:判断本次初始化是否成功,如果初始化失败,则返回顶层初始化错误,结束顶层初始化;否则,转步骤205;
步骤205:获取顶层初始化登记表中的下一个元素,如果上一个元素已经是顶层初始化登记表中的最后一个元素,则转步骤206;否则,转步骤203;
步骤206:启动调度初始化接口,如果调度初始化接口启动失败,则返回调度初始化错误,结束顶层初始化;否则返回顶层初始化成功,结束顶层初始化;
调度初始化包括以下步骤:
步骤301:定义软件模块描述和任务描述的全局变量数据,根据模块族登记表创建公共消息处理任务,并初始化软件模块描述和任务描述的相关数据;定义模块登记表中局部变量的元素个数,并分别设置相应局部变量的数值;
步骤302:获取模块登记表中第一个软件模块的登记信息及描述信息;
步骤303:判断该软件模块是否为模块族登记表中的模块,若是,则创建公共消息处理任务,并初始化全局变量的描述信息,转步骤304;否则,创建自消息处理任务,并初始化局部变量的描述信息,转步骤304;
步骤304:判断该软件模块是否为模块族登记表中的最后一个,如果不是,则转步骤305,否则,转步骤306;
步骤305:获取模块族登记表中下一个软件模块的模块登记信息及描述信息,转步骤303;
步骤306:定义全局变量初始化周期,并设置为1;定义软件模块的初始化步骤,并设置为1;
步骤307:获取模块登记表中的第一个软件模块;
步骤308:向该软件模块发送模块初始化任务消息,并等待初始化返回结果;
步骤309:判断初始化返回结果,如果初始化失败,则登记系统错误信息并返回初始化失败,调度初始化结束;否则转步骤310;
步骤310:判断模块初始化步骤是否小于最大初始化步骤,如果是则转到步骤311,否则转到步骤312;
步骤311:软件模块初始化步骤加1,转步骤308;
步骤312:判断当前的全局变量初始化周期是否小于全局变量最大初始化周期,如果是则转步骤313;否则,调度初始化结束;
步骤313:判断当前初始化周期是否还有软件模块需要进行初始化,是则全局变量初始化周期加1,转步骤314,否则转步骤315;
步骤314:判断该软件模块是否为模块登记表中的最后一个,如果不是,则转步骤315,否则,调度初始化结束,启动模块公共消息处理任务和自消息处理任务;
步骤315:获取模块登记表中下一个软件模块的模块,转步骤308。
2.如权利要求1所述的提高嵌入式软件代码共享程度的方法,其特征在于,模块公共消息处理任务的流程包括以下步骤:
步骤401:定义软件模块描述和任务描述的局部变量,并根据当前运行参数初始化该局部变量;
步骤402:等待模块初始化事件或任务运行事件,若为模块初始化事件,则转步骤403,若为任务运行事件,则转到骤404,其他事件继续本步骤;
步骤403:若在当前初始化周期内模块初始化接口函数不存在,则转步骤402,否则转步骤405;
步骤404:等待模块初始化事件或消息队列非空事件,若所述非空事件,则转到步骤406,其他继续本步骤;
步骤405:调用模块初始化函数执行当前初始化步骤的初始化,向调度初始化模块发送初始化结果事件,转步骤402;
步骤406:依次轮询任务描述里面的各个模块,读取消息并调用消息处理函数进行处理,处理完成后调度释放消息,所有消息处理完成后转步骤404。
3.如权利要求1所述的提高嵌入式软件代码共享程度的方法,其特征在于,模块自消息处理任务的流程包括以下步骤:
步骤501:定义软件模块描述和任务描述的局部变量,并根据当前运行参数初始化该变量;
步骤502:判断模块初始化步骤是否完成,若初始化没有完成,则转步骤503,否则转到步骤504;
步骤503:等待任务运行事件,若等到任务运行事件,则转到步骤504,否则继续本步骤;
步骤504:调用模块自消息处理任务函数完成模块的指定功能;
步骤505:删除模块自消息处理任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310057286.2A CN103150162B (zh) | 2013-02-22 | 2013-02-22 | 提高嵌入式软件代码共享程度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310057286.2A CN103150162B (zh) | 2013-02-22 | 2013-02-22 | 提高嵌入式软件代码共享程度的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150162A CN103150162A (zh) | 2013-06-12 |
CN103150162B true CN103150162B (zh) | 2016-02-10 |
Family
ID=48548264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310057286.2A Active CN103150162B (zh) | 2013-02-22 | 2013-02-22 | 提高嵌入式软件代码共享程度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103150162B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108205452B (zh) * | 2016-12-16 | 2021-05-18 | 北京小米移动软件有限公司 | 软件的执行控制方法及装置 |
CN109471673B (zh) * | 2017-09-07 | 2022-02-01 | 智微科技股份有限公司 | 用来于电子装置中进行硬件资源管理的方法及电子装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004044736A2 (en) * | 2002-11-14 | 2004-05-27 | Accelent Systems, Inc. | System and method for configuring software from reusable code |
CN101013370A (zh) * | 2007-02-08 | 2007-08-08 | 浙江大学 | 一种嵌入式实时操作系统的静态配置方法 |
CN102521044A (zh) * | 2011-12-30 | 2012-06-27 | 北京拓明科技有限公司 | 一种基于消息中间件的分布式任务调度方法及系统 |
-
2013
- 2013-02-22 CN CN201310057286.2A patent/CN103150162B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004044736A2 (en) * | 2002-11-14 | 2004-05-27 | Accelent Systems, Inc. | System and method for configuring software from reusable code |
CN101013370A (zh) * | 2007-02-08 | 2007-08-08 | 浙江大学 | 一种嵌入式实时操作系统的静态配置方法 |
CN102521044A (zh) * | 2011-12-30 | 2012-06-27 | 北京拓明科技有限公司 | 一种基于消息中间件的分布式任务调度方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103150162A (zh) | 2013-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103902390B (zh) | 基于Android的应用层的进程间通信方法及基础应用通信系统 | |
CN103324173B (zh) | 基于中间件的多异构机器人协作方法 | |
CN103513976B (zh) | 业务流程建模方法及装置 | |
CN109471626A (zh) | 页面逻辑结构、页面生成方法、页面数据处理方法及装置 | |
CN105893320A (zh) | 一种面向多核处理器的远程任务函数调用方法 | |
CN102222017A (zh) | 通过不可见接口实现不符合abi特征的方法和系统 | |
CN104683472A (zh) | 一种支持大数据量的数据传输方法 | |
CN108196929B (zh) | 一种智能加载系统、方法、存储介质及设备 | |
CN103019823A (zh) | 实现VxWorks与Qt通信的消息队列方法 | |
CN103150162B (zh) | 提高嵌入式软件代码共享程度的方法 | |
CN101986282A (zh) | 拓扑适配方法及装置 | |
CN105262604A (zh) | 虚拟机迁移方法及设备 | |
CN106896956B (zh) | 一种“道”系统下多点触控的实现方法 | |
CN109889406A (zh) | 用于管理网络连接的方法、装置、设备和存储介质 | |
CN104506948A (zh) | 一种中间件与用户界面之间的消息传递方法和系统 | |
CN107315686A (zh) | 一种自动化测试的运行方法 | |
CN108427555A (zh) | 一种用于分布式存储的模型可变的数据分布方法及系统 | |
CN101404656A (zh) | 一种与第三方智能设备协议通讯的软件接口设计方法 | |
CN105677341A (zh) | 一种解决软件分支语句过多的方法 | |
CN101246421A (zh) | 一种基于工作流引擎实现的通用框架 | |
CN105468448A (zh) | 一种面向异构众核环境的从核系统调用实现方法 | |
CN109359146A (zh) | 一种自动化etl数据处理工具及其使用方法 | |
CN101800695A (zh) | 一种软件实现同步通信及异步通信的方法 | |
CN111405022B (zh) | 一种异构设备柔性组网通信平台 | |
CN109426529A (zh) | 基于x窗口系统图形绘制的方法、装置及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |