CN104317632A - 在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法和系统 - Google Patents
在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法和系统 Download PDFInfo
- Publication number
- CN104317632A CN104317632A CN201410510742.9A CN201410510742A CN104317632A CN 104317632 A CN104317632 A CN 104317632A CN 201410510742 A CN201410510742 A CN 201410510742A CN 104317632 A CN104317632 A CN 104317632A
- Authority
- CN
- China
- Prior art keywords
- task
- ucos
- thread
- function
- windows
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法和系统,通过模拟UCOS-II的时钟节拍中断信号,模拟UCOS-II任务和模拟UCOS-II任务调度来实现在Window系统中模拟UCOS-II运行的硬件环境,无需先有硬件平台,即可通过模拟的硬件环境进行应用层软件的运行调试,从而能够在嵌入式产品开发中,可以在硬件开发尚未完成前,即可在Window上模拟UCOS-II系统进行应用程度的开发,有效的缩短的应用层软件开发的调试周期。
Description
技术领域
本发明涉及嵌入式技术领域,特别是涉及一种在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法和系统。
背景技术
UCOS-II是一种免费公开源代码,结构小巧,抢占式内核的实时操作系统内核。自1992年发布以来,在世界各地都获得了广泛的应用,它是一种专门为嵌入式设备设计的内核,目前已经被移植到40多种不同结构的CPU上,运行在从8位到64位的各种系统之上。系统自从2.51版本之后,就通过了美国FAA认证,可以运行在诸如航天器等对安全要求极为苛刻的系统之上。鉴于UCOS-II可以免费获得代码,对于嵌入式RTOS而言,选择UCOS-II无疑是最经济的选择。
现有的基于UCOS-II操作系统的嵌入式产品开发,基本上都是在将免费获得的UCOS-II源码在对应的硬件平台上移植调试完成后才能进入嵌入式应用层软件开发调试。
而UCOS-II源码分为与硬件平台相关的驱动部分及与硬件平台无关的操作系统软件部分,对应用层软件开发调试而言,仅需其与硬件平台无关的操作系统软件部分,对硬件平台的驱动部分只需要标准接口调用即可。
传统的或现有的开发模式通常需要先有硬件平台实现,才可以进行应用层软件的运行调试,这就造成应用层软件开发调试周期长,开发成本高,很难实现在最短的时间开发产品原型并验证产品的功能。
发明内容
基于此,有必要针对基于UCOS-II操作系统的软件开发调试需要借用硬件平台的问题,提供一种在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法和系统。
一种在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法,包括以下步骤:
时钟节拍中断信号模拟步骤:在Window系统中模拟时钟节拍中断信号,时钟节拍中断信号告诉UCOS-II操作系统时钟节拍信息事件到达,形成UCOS-II需要的时钟节拍;
任务模拟步骤:将UCOS-II操作系统的任务启动、运行、调度和切换接口转接到Window的线程启动、运行、调度和切换接口;
任务调度模拟步骤:调用Windows的线程挂起函数实现运行态的任务挂起,调用Windows的线程恢复函数实现任务投入运行。
在其中一种实施方式中,时钟节拍中断信号模拟步骤具体包括:
定时器每隔预定时间调用UCOS-II的时间中断处理函数,定时器为通过Windows的应用程序编程接口的时钟函数设计的线程分离的定时器;
时间中断处理函数触发UCOS-II操作系统的节拍服务函数,告诉UCOS-II操作系统时钟节拍信息事件到达。
在其中一种实施方式中,任务模拟步骤具体包括:
启动多任务线程接口,多任务线程接口接收对应的UCOS-II任务的堆栈指针的传入;
多任务线程接口根据传入的堆栈指针获取UCOS-II任务接口函数指针及参数,调用任务接口函数实现UCOS-II任务的执行。
在其中一种实施方式中,任务模拟包括UCOS-II的任务创建模拟,任务创建模拟包括以下步骤:
调用UCOS-II系统的任务创建函数创建一个任务;
附加UCOS-II任务接口函数指针及要传给任务接口函数的参数到UCOS-II任务堆栈中;
调用Windows的建立新线程函数创建以多任务线程接口为入口函数的新线程,入口函数的参数为UCOS-II任务堆栈的windows线程;
记录建立新线程函数返回的windows线程句柄到UCOS-II任务堆栈中。
在其中一种实施方式中,调用windows的线程挂起函数实现运行态的任务挂起的步骤包括以下步骤:
调用Windows的线程挂起函数实现运行态的任务挂起,线程挂起函数需要的参数为对应线程的句柄;
根据UCOS-II的任务调度函数的仲裁结果,调用线程挂起函数实现先前运行态的任务挂起;
任务调度的任务恢复包括以下步骤:
调用线程恢复函数实现任务投入运行,线程恢复函数需要的参数为对应线程的句柄;
根据UCOS-II的任务调度函数的仲裁结果,调用线程恢复函数让要投入运行的任务分配CPU执行时间权实现任务投入运行。
一种在Windows系统中模拟虚拟硬件环境运行UCOS-II的系统,包括以下模块:
时钟节拍中断信号模拟模块:用于在Windows系统中模拟时钟节拍中断信号,时钟节拍中断信号告诉UCOS-II操作系统时钟节拍信息事件到达,形成UCOS-II需要的时钟节拍;
任务模拟模块:用于将UCOS-II操作系统的任务启动、运行、调度和切换接口转接到Window的线程启动、运行、调度和切换接口;
任务调度模块:用于调用windows的线程挂起函数实现运行态的任务挂起和用于调用windows的线程恢复函数实现任务投入运行。
在其中一种实施方式中,时钟节拍中断信号模拟模块具体包括:
定时器单元,定时器每隔预定时间调用UCOS-II的时间中断处理函数;定时器单元为通过Windows的应用程序编程接口的时钟函数设计的线程分离的定时器;
节拍服务单元,用于时间中断处理函数触发UCOS-II操作系统的节拍服务函数,告诉UCOS-II操作系统时钟节拍信息事件到达。
在其中一种实施方式中,任务模拟模块包括:
启动单元,用于启动多任务线程接口,多任务线程接口接收对应的UCOS-II任务的堆栈指针的传入;
多任务线程接口单元,用于多任务线程接口根据传入的堆栈指针获取UCOS-II任务接口函数指针及参数,调用任务接口函数实现UCOS-II任务的执行。
在其中一种实施方式中,任务模拟模包括UCOS-II的任务创建模拟,任务模拟模块还包括:
任务创建模拟单元,用于模拟任务创建,任务创建模拟单元调用UCOS-II系统的任务创建函数创建一个任务,任务创建模拟单元在UCOS-II任务堆栈中附加UCOS-II任务接口函数指针及要传给任务接口函数的参数,多任务线程接口单元调用Windows的创建新线程函数在主线程上创建以多任务线程接口为入口函数的新线程,入口函数的参数为UCOS-II任务堆栈的windows线程,任务创建模拟单元将创建新线程函数返回的windows线程句柄记录在UCOS-II任务堆栈中。
在其中一种实施方式中,任务调度模块包括:
任务挂起单元,用于调用Windows的线程挂起函数实现运行态的任务挂起,线程挂起函数需要的参数为对应线程的句柄;
任务恢复单元,用于调用Windows的线程恢复函数实现任务投入运行,线程恢复函数需要的参数为对应线程的句柄;
仲裁执行单元,用于根据UCOS-II的任务调度函数的仲裁结果,调用线程挂起函数实现先前运行态的任务挂起,调用线程恢复函数让要投入运行的任务分配CPU执行时间权实现任务投入运行。
本发明通过在Windows系统中,通过模拟UCOS-II的时钟节拍中断信号,模拟UCOS-II任务和模拟UCOS-II任务调度来实现模拟UCOS-II运行的硬件环境,无需先有硬件平台,即可通过模拟的硬件环境进行应用层软件的运行调试。而且,能够借助众多支持Windows的可视化集成开发软件调试环境,加速进行基于UCOS-II的嵌入式应用软件的开发和调试,从而缩短产品应用软件开发周期,节约开发时间和成本。
附图说明
图1为UCOS-II操作系统中任务状态图;
图2为时钟节拍中断信号模拟的线程图;
图3为在Windows系统中模拟虚拟环境运行UCOS-II的方法流程图;
图4为在Windows系统中模拟虚拟环境运行UCOS-II的系统的模块图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示的UCOS-II操作系统中任务状态图,从图1可以看出任务等待状态WATING、任务睡眠状态DORMANT,任务就绪状态READY,任务运行状态RUNNING以及时钟中断之间切换的条件关系,这五个状态通过调用UCOS-II的不同函数实现任务间的切换。例如,任务睡眠状态DORMANT通过调用任务创建函数OSTaskCreate和OSTaskCreateExt切换到任务就绪状态READY,任务就绪状态READY调用请求删除任务函数OSTaskDel切换到任务睡眠状态DORMANT。时钟中断状态通过调用中断级的任务切换函数OSIntExit,直接调度就绪的高优先级的任务运行切换到任务运行状态RUNNING。在UCOS-II操作系统中,时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次,时间频率取决于用户对硬件系统的定时器编程来实现。中断发生的时间间隔是固定不变的,该中断也成为一个时钟节拍。因此,使用软件模拟硬件环境运行UCOS-II,需要解决UCOS-II向硬件索要的时钟节中断信号的问题,本发明提供一个时钟节拍中断信号模拟UCOS-II向硬件索要的时钟节拍中断信号的方法,如图2和图3所示,具体包括以下步骤:
S101:在Windows系统中模拟时钟节拍中断信号,该步骤具体包括:
S1011:主线程调用TimesetEvent函数启动定时器线程。
S1012:定时器每隔预定时间调用时间中断处理函数OSTickISR,则主线程挂起,定时器为通过Windows的应用程序编程接口(WIN32API)中的时钟函数Timer设计的线程分离的定时器,在本实施例中,该预定时间为一毫秒。
S1013:时间中断处理函数OSTickISR触发UCOS-II操作系统节拍服务函数OSTimeTick,告诉UCOS-II操作系统时钟节拍信息事件到达,从而形成UCOS-II需要的时钟节拍。
S1014:时间中断处理函数OSTickISR退出,恢复主线程。
通过上述方法,在Windows系统中,借用Window的函数设计定时器,让这个定时器每隔一个毫秒触发接口时间中断处理函数OSTickISR,时间中断处理函数OSTickISR触发UCOS-II操作系统节拍服务函数OSTimeTick接口,告诉UCOS-II操作系统时钟节拍信息事件到达,从而形成UCOS-II需要的时钟节拍,UCOS-II无需向硬件索要时钟节拍中断信号。
此外,UCOS-II以任务为核心单元进行任务调度,而任务创建、运行、挂起、恢复调度是在具体的硬件平台上由硬件功能定义设计实现,因此,使用软件模拟硬件环境运行UCOS-II,要让UCOS-II任务在Windows平台合理正确运行,还包括步骤:
S102:将UCOS-II操作系统的任务启动、运行、调度、切换接口转接到Windows的线程启动、运行、调度、切换接口,从而将UCOS-II操作系统作为Windows操作系统的一个进程运行。具体为:
S1021:启动多任务线程接口,该多任务线程接口接收对应的UCOS-II任务的堆栈指针的传入,具体为,在Windows上设计一个可重入的多任务线程接口OSTaskW32,该接口OSTaskW32传入的参数为对应的UCOS-II任务的堆栈指针;
S1022:线程OSTaskW32在Windows上启动后,它根据传入的堆栈指针获取UCOS-II任务接口函数指针及参数,调用任务接口函数实现UCOS-II任务的执行。
以任务创建为例,在UCOS-II系统中,函数OSTaskStkInit用于任务堆栈结构的初始化。任务创建函数OSTaskCreate通过调用函数OSTaskStkInit来初始化任务的栈结构。在Windows系统中,将UCOS-II每一个任务用一个windows线程模拟,UCOS-II任务创建的模拟为:
S201:调用UCOS-II系统的任务创建函数创建一个任务,具体为,UCOS-II调用函数OSTaskCreate创建一个任务的同时调用函数OSTaskStkInit时初始化UCOS-II任务堆栈,
S202:在UCOS-II任务堆栈中附加UCOS-II任务接口函数指针及要传给任务接口函数的参数;
S203:调用windows的创建新线程函数CreateThread在主线程上创建以线程任务接口为入口函数的新线程,该入口函数的参数为UCOS-II任务堆栈的Windows线程;
S204:将CreateThread返回的windows线程句柄Handle记录在UCOS-II任务堆栈中,从而实现UCOS-II任务创建在windows上以线程模式运行。
S103:任务调度模拟。UCOS-II总是运行进入就绪状态中优先级了高的那一个任务,任务调度由任务调度器来完成。调度器的主要工作是在任务就绪表中查找具有最高优先级别的就绪任务并实现任务切换。任务级的调度由函数OS_Sched实现,它根据任务就绪表、任务优先级仲裁当前哪个任务投入运行,并将先前运行态的任务挂起。具体的嵌入式产品中任务切换由与硬件相关的汇编中断函数实现,在Windows系统中任务调度模拟的具体步骤为:
调用Windows提供有线程挂起函数SuspendThread,用于挂起线程,调用线程恢复函数ResumeThread,用于继续挂起的线程。要在windows系统中实现UCOS-II的任务调度功能,需要使用windows提供的这两个函数实现任务的挂起和恢复。具体任务挂起包括以下步骤:
S1031:调用Windows的线程挂起函数SuspendThread实现运行态的任务挂起,线程挂起函数SuspendThread需要的参数为对应线程的句柄Handle;
S1032:根据UCOS-II的任务调度函数OS_Sched的仲裁结果,调用线程挂起函数SuspendThread实现先前运行态的任务挂起。
任务恢复包括以下步骤:
S2031:调用Windows提供的线程恢复函数ResumeThread实现任务投入运行,线程恢复函数ResumeThread需要的参数为对应线程的句柄Handle
S2032:根据UCOS-II的任务调度函数OS_Sched的仲裁结果,调用线程恢复函数ResumeThread让要投入运行的任务分配CPU执行时间权实现任务投入运行。
通过调用Windows的线程挂起函数SuspendThread和线程恢复函数ResumeThread,根据UCOS-II的任务调度函数OS_Sched仲裁结果,调用SuspendThread实现先前运行态的任务挂起,调用线程挂起函数ResumeThread让要投入运行的任务分配CPU执行时间权实现任务投入运行,从而实现UCOS-II任务的调度机制,将UCOS-II的任务调度执行功能在windows上正确地模拟出来了。
本发明通过在Windows系统中,通过模拟UCOS-II的时钟节拍中断信号,模拟UCOS-II任务和模拟UCOS-II任务调度来实现模拟UCOS-II运行的硬件环境,无需先有硬件平台,即可通过模拟的硬件环境进行应用层软件的运行调试。而且,能够借助众多支持Windows的可视化集成开发软件调试环境,从而使得嵌入式硬件开发与嵌入式应用程序开发分离,能够在硬件开发尚未开发完成前,在Windows上模拟UCOS-II操作系统环境中提前进行嵌入式应用程序开发、调试,当嵌入式硬件及与硬件关联的驱动软件开发调试完成后,基于Windows上模拟UCOS-II操作系统环境中开发的嵌入式应用程序可不加修改地整合为一套嵌入式产品,从而提高了嵌入式应用开发效率。利用这种无需前期硬件支撑的模拟嵌入式操作系统运行环境,可对嵌入式应用程序进行实时仿真、功能验证,有效的缩短产品应用软件开发周期,节约开发时间和成本。
本发明还提供一种在Windows系统中模拟虚拟硬件环境运行UCOS-II的系统,该系统包括:
时钟节拍中断信号模拟模块101,用于模拟时钟节拍中断信号,时钟节拍中断信号告诉UCOS-II操作系统时钟节拍信息事件到达,形成UCOS-II需要的时钟节拍。该时钟节拍中断信号模拟模块101包括:
定时器单元,用于每隔预定时间调用UCOS-II的时间中断处理函数;定时器单元为通过Windows的应用程序编程接口的时钟函数设计的线程分离的定时器,
节拍服务单元:用于时间中断处理函数触发UCOS-II操作系统的节拍服务函数,告诉UCOS-II操作系统时钟节拍信息事件到达。
本发明的在Windows系统中模拟虚拟硬件环境运行UCOS-II的系统还包括任务模拟模块102和任务调度模块103。
任务模拟模块102,用于将UCOS-II操作系统的任务启动、运行、调度和切换接口转接到Window的线程启动、运行、调度和切换接口。任务模拟模块包括:
启动单元,用于启动多任务线程接口,多任务线程接口接收对应的UCOS-II任务的堆栈指针的传入;
多任务线程接口单元:用于多任务线程接口根据传入的堆栈指针获取UCOS-II任务接口函数指针及参数,调用任务接口函数实现UCOS-II任务的执行。
任务模拟包括UCOS-II的任务创建模拟,任务模拟模块102还包括任务创建模拟单元。在UCOS-II系统中,函数OSTaskStkInit用于任务堆栈结构的初始化。任务创建函数OSTaskCreate通过调用函数OSTaskStkInit来初始化任务的栈结构。在Windows系统中,将UCOS-II每一个任务用一个windows线程模拟,
任务创建模拟单元调用UCOS-II系统的任务创建函数创建一个任务,任务创建模拟单元调用UCOS-II系统的任务创建函数创建一个任务,任务创建模拟单元在UCOS-II任务堆栈中附加UCOS-II任务接口函数指针及要传给任务接口函数的参数,多任务线程接口单元调用Windows的创建新线程函数在主线程上创建以多任务线程接口为入口函数的新线程,入口函数的参数为UCOS-II任务堆栈的windows线程,任务创建模拟单元将创建新线程函数返回的windows线程句柄记录在UCOS-II任务堆栈中。
任务调度模块103包括:
任务挂起单元,用于调用Windows的线程挂起函数实现运行态的任务挂起,线程挂起函数需要的参数为对应线程的句柄;
任务恢复单元:用于调用Windows的线程恢复函数实现任务投入运行,线程恢复函数需要的参数为对应线程的句柄;
仲裁执行单元:用于根据UCOS-II的任务调度函数的仲裁结果,调用线程挂起函数实现先前运行态的任务挂起,调用线程恢复函数让要投入运行的任务分配CPU执行时间权实现任务投入运行。
通过时钟节拍中断信号模拟模块,任务模拟模块和任务模拟模块,实现在在Windows系统中,模拟UCOS-II的时钟节拍中断信号,模拟UCOS-II任务和模拟UCOS-II任务调度来实现模拟UCOS-II运行的硬件环境,无需先有硬件平台,即可通过模拟的硬件环境进行应用层软件的运行调试。而且,能够借助众多支持Windows的可视化集成开发软件调试环境,从而使得嵌入式硬件开发与嵌入式应用程序开发分离,能够在硬件开发尚未开发完成前,在Windows上模拟UCOS-II操作系统环境中提前进行嵌入式应用程序开发、调试,当嵌入式硬件及与硬件关联的驱动软件开发调试完成后,基于Windows上模拟UCOS-II操作系统环境中开发的嵌入式应用程序可不加修改地整合为一套嵌入式产品,从而提高了嵌入式应用开发效率。利用这种无需前期硬件支撑的模拟嵌入式操作系统运行环境,可对嵌入式应用程序进行实时仿真、功能验证,有效的缩短产品应用软件开发周期,节约开发时间和成本。
Claims (10)
1.一种在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法,其特征在于,包括以下步骤:
时钟节拍中断信号模拟步骤:在Window系统中模拟时钟节拍中断信号,所述时钟节拍中断信号告诉UCOS-II操作系统时钟节拍信息事件到达,形成UCOS-II需要的时钟节拍;
任务模拟步骤:将UCOS-II操作系统的任务启动、运行、调度和切换接口转接到Window的线程启动、运行、调度和切换接口;
任务调度模拟步骤:调用Windows的线程挂起函数实现运行态的任务挂起,调用Windows的线程恢复函数实现任务投入运行。
2.如权利要求1所述的在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法,其特征在于,所述时钟节拍中断信号模拟步骤具体包括:
定时器每隔预定时间调用UCOS-II的时间中断处理函数,所述定时器为通过Windows的应用程序编程接口的时钟函数设计的线程分离的定时器;
所述时间中断处理函数触发UCOS-II操作系统的节拍服务函数,告诉UCOS-II操作系统时钟节拍信息事件到达。
3.如权利要求1或2所述的在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法,其特征在于,所述任务模拟步骤具体包括:
启动多任务线程接口,所述多任务线程接口接收对应的UCOS-II任务的堆栈指针的传入;
多任务线程接口根据传入的堆栈指针获取UCOS-II任务接口函数指针及参数,调用任务接口函数实现UCOS-II任务的执行。
4.如权利要求3所述的在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法,其特征在于,
所述任务模拟包括UCOS-II的任务创建模拟,所述任务创建模拟包括以下步骤:
调用UCOS-II系统的任务创建函数创建一个任务;
附加UCOS-II任务接口函数指针及要传给任务接口函数的参数到UCOS-II任务堆栈中;
调用Windows的建立新线程函数创建以多任务线程接口为入口函数的新线程,所述入口函数的参数为UCOS-II任务堆栈的windows线程;
记录建立新线程函数返回的windows线程句柄到UCOS-II任务堆栈中。
5.如权利要求1所述的在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法,其特征在于,所述调用windows的线程挂起函数实现运行态的任务挂起的步骤包括以下步骤:
调用Windows的线程挂起函数实现运行态的任务挂起,所述线程挂起函数需要的参数为对应线程的句柄;
根据UCOS-II的任务调度函数的仲裁结果,调用线程挂起函数实现先前运行态的任务挂起;
所述任务调度的任务恢复包括以下步骤:
调用线程恢复函数实现任务投入运行,所述线程恢复函数需要的参数为对应线程的句柄;
根据UCOS-II的任务调度函数的仲裁结果,调用线程恢复函数让要投入运行的任务分配CPU执行时间权实现任务投入运行。
6.一种在Windows系统中模拟虚拟硬件环境运行UCOS-II的系统,其特征在于,包括以下模块:
时钟节拍中断信号模拟模块:用于在Windows系统中模拟时钟节拍中断信号,所述时钟节拍中断信号告诉UCOS-II操作系统时钟节拍信息事件到达,形成UCOS-II需要的时钟节拍;
任务模拟模块:用于将UCOS-II操作系统的任务启动、运行、调度和切换接口转接到Window的线程启动、运行、调度和切换接口;
任务调度模块:用于调用windows的线程挂起函数实现运行态的任务挂起和用于调用windows的线程恢复函数实现任务投入运行。
7.如权利要求6所述的在Windows系统中模拟虚拟硬件环境运行UCOS-II的系统,其特征在于,所述时钟节拍中断信号模拟模块具体包括:
定时器单元,所述定时器每隔预定时间调用UCOS-II的时间中断处理函数;所述定时器单元为通过Windows的应用程序编程接口的时钟函数设计的线程分离的定时器;
节拍服务单元,用于所述时间中断处理函数触发UCOS-II操作系统的节拍服务函数,告诉UCOS-II操作系统时钟节拍信息事件到达。
8.如权利要求6或7所述的在Windows系统中模拟虚拟硬件环境运行UCOS-II的系统,其特征在于,所述任务模拟模块包括:
启动单元,用于启动多任务线程接口,所述多任务线程接口接收对应的UCOS-II任务的堆栈指针的传入;
多任务线程接口单元,用于所述多任务线程接口根据传入的堆栈指针获取UCOS-II任务接口函数指针及参数,调用任务接口函数实现UCOS-II任务的执行。
9.如权利要求8所述的在Windows系统中模拟虚拟硬件环境运行UCOS-II的系统,其特征在于,所述任务模拟模包括UCOS-II的任务创建模拟,所述任务模拟模块还包括:
任务创建模拟单元,用于模拟任务创建,所述任务创建模拟单元调用UCOS-II系统的任务创建函数创建一个任务,所述任务创建模拟单元在UCOS-II任务堆栈中附加UCOS-II任务接口函数指针及要传给任务接口函数的参数,所述多任务线程接口单元调用Windows的创建新线程函数在主线程上创建以多任务线程接口为入口函数的新线程,所述入口函数的参数为UCOS-II任务堆栈的windows线程,所述任务创建模拟单元将创建新线程函数返回的windows线程句柄记录在UCOS-II任务堆栈中。
10.如权利要求6所述的在Windows系统中模拟虚拟硬件环境运行UCOS-II的系统,其特征在于,所述任务调度模块包括:
任务挂起单元,用于调用Windows的线程挂起函数实现运行态的任务挂起,所述线程挂起函数需要的参数为对应线程的句柄;
任务恢复单元,用于调用Windows的线程恢复函数实现任务投入运行,所述线程恢复函数需要的参数为对应线程的句柄;
仲裁执行单元,用于根据UCOS-II的任务调度函数的仲裁结果,调用线程挂起函数实现先前运行态的任务挂起,调用线程恢复函数让要投入运行的任务分配CPU执行时间权实现任务投入运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410510742.9A CN104317632A (zh) | 2014-09-28 | 2014-09-28 | 在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410510742.9A CN104317632A (zh) | 2014-09-28 | 2014-09-28 | 在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104317632A true CN104317632A (zh) | 2015-01-28 |
Family
ID=52372867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410510742.9A Pending CN104317632A (zh) | 2014-09-28 | 2014-09-28 | 在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104317632A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116204A (zh) * | 2021-11-02 | 2022-03-01 | 郑州市中心医院 | 一种基于传感器的磨牙症监测方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040237062A1 (en) * | 2003-05-20 | 2004-11-25 | Zeidman Technologies | Method and apparatus for emulating a hardware/software system using a computer |
CN101950167A (zh) * | 2010-10-20 | 2011-01-19 | 广州数控设备有限公司 | 一种基于Windows操作系统的仿真嵌入式数控系统及其实现方法 |
-
2014
- 2014-09-28 CN CN201410510742.9A patent/CN104317632A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040237062A1 (en) * | 2003-05-20 | 2004-11-25 | Zeidman Technologies | Method and apparatus for emulating a hardware/software system using a computer |
CN101950167A (zh) * | 2010-10-20 | 2011-01-19 | 广州数控设备有限公司 | 一种基于Windows操作系统的仿真嵌入式数控系统及其实现方法 |
Non-Patent Citations (2)
Title |
---|
李尧: "基于Win2000的ITRON模拟开发环境及嵌入式软件的组件框架研究", 《中国优秀硕士学位论文全文数据库》 * |
江浩: "基于uCOS-II的虚拟化技术研究与实现", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116204A (zh) * | 2021-11-02 | 2022-03-01 | 郑州市中心医院 | 一种基于传感器的磨牙症监测方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102147749B (zh) | 仿真os隔离定序器上的用户级多线程处理的机制 | |
CN105446795B (zh) | 虚拟机操作中的并行化 | |
CN102968311B (zh) | 机载嵌入式软件开发平台 | |
EP3103014B1 (en) | Removal of idle time in virtual machine operation | |
CN107678752B (zh) | 一种面向异构集群的任务处理方法及装置 | |
CN109814990A (zh) | 一种分布式并行协同仿真架构 | |
CN104750603A (zh) | 一种多核dsp软件仿真器及其物理层软件测试方法 | |
CN102279766A (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
Franke et al. | Reverse engineering of mobile application lifecycles | |
CN103744716A (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
CN102609324B (zh) | 一种虚拟机死锁后的恢复方法、装置及系统 | |
Bi et al. | Research of key technologies for embedded Linux based on ARM | |
Posadas et al. | POSIX modeling in SystemC | |
Carnevali et al. | A formal approach to design and verification of two-level hierarchical scheduling systems | |
Zhang et al. | Yes! you can use your model checker to verify OSEK/VDX applications | |
Tan et al. | Real-time operating system (RTOS) for small (16-bit) microcontroller | |
CN104317632A (zh) | 在Windows系统中模拟虚拟硬件环境运行UCOS-II的方法和系统 | |
CN102331961A (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
JP5510258B2 (ja) | シミュレーション装置 | |
Nahas et al. | Ways for implementing highly-predictable embedded systems using time-triggered co-operative (TTC) architectures | |
CN116339911A (zh) | 一种基于K8S的弹性仿真Modelica模型的方法、系统、设备及介质 | |
JP6120657B2 (ja) | 統合シミュレータ装置、シミュレーション方法、及びプログラム | |
Qaralleh et al. | HcM-FreeRTOS: hardware-centric FreeRTOS for ARM multicore | |
CN113326098B (zh) | 支持kvm虚拟化与容器虚拟化的云管平台 | |
CN109426556A (zh) | 一种进程调度方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150128 |