CN102725735B - 多线程协同仿真方法及*** - Google Patents
多线程协同仿真方法及*** Download PDFInfo
- Publication number
- CN102725735B CN102725735B CN201180002703.2A CN201180002703A CN102725735B CN 102725735 B CN102725735 B CN 102725735B CN 201180002703 A CN201180002703 A CN 201180002703A CN 102725735 B CN102725735 B CN 102725735B
- Authority
- CN
- China
- Prior art keywords
- module
- hardware module
- software module
- thread
- pipeline
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3652—Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种多线程协同仿真方法及***,多线程协同仿真方法,其特征在于,包括:启动后的软件模块获取硬件模块的进程号,并根据所述进程号创建与所述硬件模块通信的管道通信方式;所述软件模块通过所述管道通信方式与所述硬件模块交互,以使所述软件模块与所述硬件模块协同仿真。上述方法用以实现芯片上软件模块和硬件模块在同一环境下的协同仿真。
Description
技术领域
本发明实施例涉及一种多线程协同仿真方法及***。
背景技术
目前,芯片设计过程一般是:芯片的预研、划分各功能模块(如软件模块、硬件模块)、具体模块的实现,然后是各个模块的调试。
现有技术中,多线程的软件模块和硬件模块的调试不在同一仿真平台中,例如,多线程的软件模块通过相对应的第一仿真平台进行调试,并依据设计需求修改软件模块;硬件模块通过相对应的第二仿真平台进行调试,以及依据需要对硬件模块进行重新设计和调试。
然而,通过上述方法调试的软件模块和硬件模块在并行开发后整合于芯片时,出现不可预期的错误,如芯片中软件模块和硬件模块无法协同通信等,导致整个芯片设计的周期延长。
发明内容
本发明实施例提供一种多线程协同仿真方法及***,用以实现芯片上软件模块和硬件模块在同一环境下的协同仿真。
本发明一方面提供了一种多线程协同仿真方法,包括:
启动后的软件模块获取硬件模块的进程号,并根据所述进程号创建与所述硬件模块通信的管道通信方式;
所述软件模块通过所述管道通信方式与所述硬件模块交互,以使所述软件模块与所述硬件模块协同仿真。
本发明另一方面还提供了一种多线程协同仿真方法,包括:
启动后的硬件模块向软件模块发送进程号,以使所述软件模块根据所述进程号创建与硬件模块通信的管道通信方式;
所述硬件模块在所述软件模块的触发下,通过所述管道通信方式与所述软件模块交互,以使所述软件模块与所述硬件模块协同仿真。
本发明另一方面还提供了一种多线程协同仿真方法,包括:
启动后的软件模块在确定与硬件模块通信的通信线程未建立时,创建通信线程,以及创建所述通信线程中的软件侧套接字,用以使所述硬件模块根据所述软件侧套接字的地址信息进行连接,形成通信套接字;
所述软件模块通过所述通信套接字与所述硬件模块交互,以使所述软件模块与所述硬件模块协同仿真。
本发明另一方面还提供了一种多线程协同仿真方法,包括:
启动后的硬件模块根据预设的软件侧套接字的地址信息连接软件模块的所述软件侧套接字,以形成与所述软件模块通信的通信套接字;
在所述软件模块的触发下,所述硬件模块通过所述通信套接字与所述软件模块交互,以使所述软件模块与所述硬件模块协同仿真。
本发明的另一方面还提供了一种多线程协同仿真***,包括硬件模块和软件模块;
所述硬件模块用于
向软件模块发送进程号,以使所述软件模块根据所述进程号创建与硬件模块通信的管道通信方式;
所述软件模块用于
获取硬件模块的进程号,并根据所述进程号创建与所述硬件模块通信的管道通信方式,并通过所述管道通信方式与所述硬件模块交互,以使所述软件模块与所述硬件模块协同仿真。
本发明的另一方面还提供了一种多线程协同仿真***,包括硬件模块和软件模块;
所述硬件模块用于
根据预设的软件侧套接字的地址信息连接软件模块的所述软件侧套接字,以形成与所述软件模块通信的通信套接字;
所述软件模块具体用于
在确定与硬件模块通信的通信线程未建立时,创建通信线程,以及创建所述通信线程中的软件侧套接字,用以使所述硬件模块根据所述软件侧套接字的地址信息进行连接,形成通信套接字,并通过所述通信套接字与所述硬件模块交互,以使所述软件模块与所述硬件模块协同仿真。
由上述技术方案可知,本发明实施例的多线程协同仿真方法及***,通过创建进程中多个线程的管道通信方式,使得软件模块和硬件模块可以通过管道通信方式进行交互,进而实现芯片上软件模块和硬件模块在同一环境下的协同仿真,节省了成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的多线程协同仿真方法的流程示意图;
图2为本发明另一实施例提供的多线程协同仿真方法的流程示意图;
图3为本发明另一实施例提供的多线程协同仿真方法的流程示意图;
图4为本发明另一实施例提供的多线程协同仿真方法的流程示意图;
图5为本发明另一实施例提供的多线程协同仿真方法的流程示意图;
图6为本发明另一实施例提供的多线程协同仿真***的结构示意图;
图7为本发明另一实施例提供的多线程协同仿真***的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本文中“和/或”,仅仅是一种描述关联对象的关联关系,其可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在本发明实施例,正在计算机中执行的程序叫做进程,一个进程可以支持多个线程即一个进程中同时运行多个线程完成不同的工作,称为多线程。
一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。同属一个进程的多个线程之间可以同时执行,但相互之间并不同步。另,一个进程中的多个线程可共享进程所拥有的全部资源。
此外,由于硬件模块大多通过代码模拟化实现,在协同仿真过程中软件模块运行的速度远大于硬件模块的运行速度,进而软件模块在发送某一操作指令之后,需等待硬件模块返回的与操作指令对应的响应信息,以便实现对软件模块和硬件模块的协同仿真。
图1为本发明一实施例提供的多线程协同仿真方法的流程示意图,如图1所示,本实施例的多线程协同仿真方法如下文所述。
101、启动后的软件模块获取硬件模块的进程号,并根据进程号创建与硬件模块通信的管道通信方式。
在本实施例中,软件模块启动后,可通过预设的主线程第三管道获取启动后的硬件模块的进程号。另,在根据进程号创建与硬件模块通信的管道通信方式之后,可以将预设的主线程第三管道释放。通常预设的主线程第三管道相对于软件模块一侧可称为主线程读管道,相对于硬件模块一侧可称为主线程写管道。
本实施例中的管道通信方式可包括:与进程号对应的主线程第一管道、与进程号对应的主线程第二管道、与进程号对应的中断线程管道等等。
102、软件模块通过管道通信方式与硬件模块交互,以使软件模块与硬件模块协同仿真。
举例来说,在互斥锁保护模式下,软件模块执行与进程号对应的进程中的第一操作指令,得到第一操作信息,并通过与第一操作指令对应的管道通信方式将第一操作信息发送至硬件模块,以获得硬件模块返回的与第一操作信息对应的响应信息。通常,软件模块发送第一操作信息之后,通过另一管道等待硬件模块返回的响应信息。
在实际的仿真过程中,可将硬件模块的功能细化为一块一块的功能模块,通过软件模块与硬件模块的交互,以获知每一个功能模块是否符合芯片的设计需求,由上可知,需要操作员预先设置各种测试指令,以实现软件模块和硬件模块的测试。
应说明的是,本实施例中提及的第一操作指令可为,操作员测试软件模块或硬件模块的功能所设定的指令和/或程序,例如,可以设定程序以对硬件模块中某项功能的开启、关闭等进行测试。
当然,为方便对软件模块进行多个线程之间的并行化管理,在同时执行多个线程期间,保证任意线程之间的操作不发生冲突,本实施例中采用互斥锁保护当前线程执行的操作指令,其用以实现在一个时刻内,只允许一个线程执行,而其他线程等待。
上述实施例中的多线程协同仿真方法,通过创建至少一个进程的多个线程的管道通信方式,使得软件模块和硬件模块可以交互,进而实现芯片上软件模块和硬件模块在同一环境下的协同仿真,节省了芯片的仿真成本。
在上述实施例的基础上,图2示出了本发明另一实施例提供的多线程协同仿真方法的流程示意图,如图2所示,本实施例的多线程协同仿真方法如下文所述。
201、在软件模块启动之后,通过预设的主线程第三管道获取启动后的硬件模块的进程号,并根据进程号创建与硬件模块通信的管道通信方式。
在本实施例中,软件模块在获取进程号之后,创建与硬件模块通信的主线程第一管道和主线程第二管道,在主线程第一管道和主线程第二管道创建完毕之后,设置主线程信号量为等待信号量,以便主线程创建中断线程。在在中断线程创建完毕后,中断线程创建内部的中断线程管道,在中断线程管道创建完毕之后,中断线程发送激活信号量至主线程,以便激活主线程,进而与进程号对应的管道通信方式创建完毕。
应了解的是,信号量是用在多线程同步过程中传送的,一个线程完成了某一个动作就通过信号量告诉同属一个进程的其它线程,以便激活同一进程中正在等待该信号量的线程。
其中,主线程第一管道相对于软件模块侧可称为软件侧写管道,主线程第一管道相对于硬件模块侧可称为硬件侧读管道;
主线程第二管道相对于软件模块侧可称为软件侧读管道,主线程第二管道相对于硬件模块侧可称为硬件侧写管道;
中断线程管道相对于软件模块侧可称为中断线程读管道,中断线程管道相对于硬件模块侧可称为中断线程写管道。
202、在互斥锁保护模式下,软件模块执行与进程号对应的进程中的写操作指令,得到写操作信息,并通过软件侧写管道将写操作信息发送至硬件模块。
本实施例中的第一操作指令可为读操作指令、写操作指令等。具体地,软件模块在主线程的写操作指令的操作入口处锁定,以执行写操作指令,并通过软件侧写管道将与写操作指令对应的写操作信息发送至硬件侧读管道。
203、硬件模块通过硬件侧读管道接收并读取写操作信息,根据读取的写操作信息通过硬件侧写管道向软件模块发送响应信息。
204、软件模块通过软件侧读管道接收到响应信息后,解除写操作指令的互斥锁。
205、在步骤204之后,主线程查看多线程之间的共享变量中的中断标识是否为有效,若是,则执行步骤206,否则执行步骤207。
206、若主线程查看到多线程之间的共享变量中的中断标识为有效状态,则主线程将其对应的信号量设为等待,并激活中断线程以使软件模块通过中断线程执行中断。此时,主线程将中断标识置为无效状态。
需要说明的是,在步骤201中的中断线程创建完毕之后,该中断线程一直处于监测硬件模块是否有中断请求信息,若监测到硬件模块通过中断线程写管道发送有中断请求信息,则中断线程将共享变量中的中断标识设为有效状态,否则,中断标识处于无效状态。
本实施例中,软件模块执行中断也是在互斥锁保护模式下进行,中断处理完毕后,解除互斥锁。此时中断线程通过对应的激活主线程,并将中断线程对应的信号量设为等待。
特别地,软件模块执行中断可具体为执行中断处理函数。
207、若主线程查看到多线程之间的共享变量中的中断标识为共享变量中的中断标识为无效状态,则软件模块执行进程中的下一个操作指令。
相应地,下一个操作指令也是在互斥锁保护模式下进行。
本实施例中软件模块和硬件模块的其他交互流程可为重复步骤205、步骤206或步骤207。
另外,本实施例中提及的互斥锁,用于在每一线程的操作指令的入口处锁定,其具体程序可如下所示:
也就是说,互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程解除锁定,其他的线程才开始可以利用上述资源。
本实施例中采用管道通信方式的仿真方法可使软件模块和硬件模块在同一计算机控制下进行。
上述实施例中的多线程协同仿真方法,通过软件模块创建包括主线程和中断线程的管道通信方式,使得软件模块和硬件模块可以交互,进而实现软件模块和硬件模块在同一环境下的协同仿真,节省了软件模块和硬件模块的仿真成本。
在上述实施例的基础上,图3示出了本发明另一实施例提供的多线程协同仿真方法的流程示意图,如图3所示,本实施例的多线程协同仿真方法如下文所述。
301、启动后的硬件模块向软件模块发送进程号,以使软件模块根据进程号创建与硬件模块通信的管道通信方式。
管道通信方式包括:与进程号对应的主线程第一管道、与进程号对应的主线程第二管道、与进程号对应的中断线程管道等等。
应说明的是,硬件模块通过预设的主线程第三管道向软件模块发送至少一个进程号。
本实施例中的进程号可理解为程序启动后,控制***对进程进行管理时给予每一进程分配的用于区别其他进程的标识号。
302、硬件模块在软件模块的触发下,通过管道通信方式与软件模块交互,以使软件模块与硬件模块协同仿真。
举例来说,硬件模块接收第一操作信息,并返回与第一操作信息对应的响应信息,第一操作信息为在互斥锁保护模式下,软件模块执行与进程号对应的进程中的第一操作指令,得到第一操作信息,并通过与第一操作指令对应的管道通信方式将第一操作信息发送的。
上述实施例中的多线程协同仿真方法,通过软件模块创建包括主线程和中断线程的管道通信方式,使得软件模块和硬件模块可以交互,进而实现软件模块和硬件模块在同一环境下的协同仿真,节省了软件模块和硬件模块的仿真成本。
图4示出了本发明另一实施例提供的多线程协同仿真方法的流程示意图,如图4所示,本实施例的多线程协同仿真方法如下文所述。
401、启动后的软件模块在确定与硬件模块通信的通信线程未建立时,创建通信线程,以及创建通信线程中的软件侧套接字,用以使硬件模块根据软件侧套接字的地址信息进行连接,形成通信套接字。
举例来说,软件模块在软件侧套接字时,预先分配一个端口号,并等待硬件模块的连接。硬件模块可通过预设的软件侧套接字的地址信息(如IP地址和端口号)连接软件侧套接字,进而软件模块可通过预设的主线程监测硬件模块发送于线程共享数据区的访问请求。
402、软件模块通过通信套接字与硬件模块交互,以使软件模块与硬件模块协同仿真。
具体地,在互斥锁保护模式下,软件模块通过预设的主线程执行进程的第一操作指令,得到第一操作信息,并将第一操作信息存储于线程共享数据区中,以使硬件模块通过包含通信套接字的通信线程访问;以及软件模块通过主线程访问线程共享数据区以获取硬件模块返回的与第一操作信息对应的响应信息。
举例来说,软件模块通过主线程将第一操作信息存储于线程共享数据区,主线程发送激活信号量激活通信线程,以及主线程将其信号量设为等待,通信线程获取存储于线程共享数据区的第一操作信息,并传递通信套接字以发送至硬件模块。当硬件模块将第一操作信息的响应信息通过通信套接字传递至通信线程,以使通信线程将响应信息存储于线程共享数据区,此时,通信线程发送激活信号量激活主线程,并使通信线程的信号量为等待。应了解的是,信号量是用在多线程同步过程中传送的,一个线程完成了某一个动作就通过信号量告诉同属一个共享数据区的其它线程,以便激活同一进程中正在等待该信号量的线程。
进一步地,多线程协同仿真方法还可包括如下图4中未示出的步骤403。
403、软件模块在硬件模块的触发下创建中断线程,用于根据硬件模块通过通信套接字发送的中断请求消息执行中断。
也就是说,硬件模块通过通信套接字发送中断请求消息,以便通信线程将中断请求消息存储于线程共享数据区,以及通信线程创建中断线程,进而在中断线程创建完毕之后,该中断线程访问线程共享数据区以根据中断请求消息执行中断。
上述步骤403可以在步骤402之前执行,也可以在步骤402之后执行。
本实施例中与线程共享数据区交互的线程可包括主线程、中断线程、通信线程等。
上述实施例中的多线程协同仿真方法,可使软件模块和硬件模块可以在不同计算机中进行网络交互,进而实现软件模块和硬件模块在同一环境下的协同仿真,节省了软件模块和硬件模块的仿真成本。
图5示出了本发明另一实施例提供的多线程协同仿真方法的流程示意图,如图5所示,本实施例的多线程协同仿真方法如下文所述。
501、启动后的硬件模块根据预设的软件侧套接字的地址信息连接软件模块的软件侧套接字,以形成与软件模块通信的通信套接字。
该处的地址信息可为网络之间互连的协议(Internet Protocol,简称IP)和端口号。
502、在软件模块的触发下,硬件模块通过通信套接字与软件模块交互,以使软件模块与硬件模块协同仿真。
具体地,硬件模块通过包含通信套接字的通信线程获取存储于线程共享数据区中的第一操作信息,并返回与第一操作信息对应的响应信息,以使软件模块通过预设的主线程访问线程共享数据区获得响应信息;
第一操作信息为软件模块通过主线程执行进程的第一操作指令,得到存储于线程共享数据区中的第一操作信息。
本实施例中的线程共享数据区为各线程之间的线程共享数据区。
需要说明的是,硬件模块通过通信套接字与软件模块交互时,需要通信套接字将相关信息传递通信线程,以便通信线程访问线程共享数据区。举例来说,软件模块存储于线程共享数据区中信息/指令等,需要通信线程访问并将其传递至通信套接字,进而通信套接字将信息/指令等发送硬件模块。
进一步地,多线程协同仿真方法还可包括如下图5中未示出的步骤503。
503、硬件模块通过通信套接字向软件模块发送中断请求消息,以使软件模块创建用于执行中断的中断线程。
具体地,硬件模块通过通信套接字将中断请求信息传递至通信线程,以便通信线程将中断请求信息存储于线程共享数据区,并根据中断请求信息创建中断线程,在中断线程创建完毕之后,该中断线程访问线程共享数据区以根据中断请求消息执行中断。
上述步骤503可以在步骤502之前执行,也可以在步骤502之后执行。
上述实施例中的多线程协同仿真方法,可使软件模块和硬件模块在不同计算机中进行网络交互,进而实现软件模块和硬件模块在同一环境下的协同仿真,节省了软件模块和硬件模块的仿真成本。
根据本发明的另一方面,本发明实施例还提供一种多线程协同仿真***,如图6所示,图6示出了本发明另一实施例提供的多线程协同仿真***的结构示意图。本实施例中的多线程协同仿真***,包括软件模块61和硬件模块62;硬件模块62用于向软件模块发送进程号,以使软件模块根据进程号创建与硬件模块通信的管道通信方式63;
软件模块61用于获取硬件模块的进程号,并根据进程号创建与硬件模块通信的管道通信方式63,以及通过管道通信方式63与硬件模块交互,以使软件模块与硬件模块协同仿真。
本实施例中的管道通信方式63包括:与进程号对应的主线程第一管道、与进程号对应的主线程第二管道、与进程号对应的中断线程管道。
进一步地,软件模块61可具体用于,在互斥锁保护模式下,软件模块执行与进程号对应的进程中的第一操作指令,得到第一操作信息,并通过与第一操作指令对应的管道通信方式将第一操作信息发送至硬件模块,以获得硬件模块返回的与第一操作信息对应的响应信息。
硬件模块62可具体用于,接收第一操作信息,并返回与第一操作信息对应的响应信息。
应说明的是,本实施例中的启动后的软件模块61通过预设的主线程第三管道获取硬件模块62的进程号。
在实际的仿真***中,软件模块61和硬件模块62之间还设置有接口模块,用于将软件模块61发送的操作信息/操作指令转换为硬件模块62可识别的程序语言,以及用于将硬件模块62返回的响应信息转换为软件模块61可识别的程序语言等。本实施例中的接口模块可为可编程语言接口(Programmable Language Interface,简称:PLI)或直接可编程接口(DirectProgrammable Interface,简称DPI)。
上述实施例中的多线程协同仿真***,通过软件模块创建的多个线程的管道通信方式,使得软件模块和硬件模块可以交互,进而实现芯片上软件模块和硬件模块在同一环境下的协同仿真,节省了芯片的仿真成本
根据本发明的另一方面,本发明实施例还提供一种多线程协同仿真***,如图7所示,图7示出了本发明另一实施例提供的多线程协同仿真***的结构示意图。本实施例中的多线程协同仿真***,包括软件模块71和硬件模块72。本实施例中的硬件模块72用于根据预设的软件侧套接字的地址信息连接软件模块的软件侧套接字,以形成与软件模块通信的通信套接字73;
软件模块71具体用于在确定与硬件模块通信的通信线程未建立时,创建通信线程,以及创建通信线程中的软件侧套接字,用以使硬件模块根据软件侧套接字的地址信息进行连接,形成通信套接字;以及通过通信套接字与硬件模块交互,以使软件模块与硬件模块协同仿真。
进一步地,软件模块71还用于在硬件模块72的触发下创建中断线程,用于根据硬件模块通过通信套接字发送的中断请求消息执行中断。
上述实施例中的多线程协同仿真***,可使软件模块和硬件模块在多台计算机中进行网络交互,进而实现软件模块和硬件模块在同一环境下的协同仿真,节省了软件模块和硬件模块的仿真成本。
在实际的仿真***中,软件模块和硬件模块之间设置有接口模块,用于将软件模块发送的操作信息/操作指令转换为硬件模块可识别的程序语言,以及用于将硬件模块发送的响应信息转换为软件模块可识别的程序语言等。本实施例中的接口模块可为PLI或DPI。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (14)
1.一种多线程协同仿真方法,其特征在于,包括:
启动后的软件模块获取硬件模块的进程号,并根据所述进程号创建与所述硬件模块通信的管道通信方式;
所述软件模块通过所述管道通信方式与所述硬件模块交互,以使所述软件模块与所述硬件模块协同仿真;
其中,所述软件模块通过所述管道通信方式与所述硬件模块交互,以使所述软件模块与所述硬件模块协同仿真,包括:
在互斥锁保护模式下,所述软件模块执行与所述进程号对应的进程中的第一操作指令,得到第一操作信息,并通过与所述第一操作指令对应的管道通信方式将所述第一操作信息发送至所述硬件模块,以获得所述硬件模块返回的与所述第一操作信息对应的响应信息。
2.根据权利要求1所述的多线程协同仿真方法,其特征在于,所述管道通信方式包括:
与所述进程号对应的主线程第一管道,所述主线程第一管道相对于软件模块侧为软件侧写管道,相对于硬件模块侧为硬件侧读管道;
与所述进程号对应的主线程第二管道,所述主线程第二管道相对于软件模块侧为软件侧读管道,相对于硬件模块侧为硬件侧写管道;
与所述进程号对应的中断线程管道,所述中断线程管道相对于软件模块侧为中断线程读管道,相对于硬件模块侧为中断线程写管道。
3.根据权利要求1所述的多线程协同仿真方法,其特征在于,所述启动后的软件模块获取硬件模块的进程号,包括:
所述启动后的软件模块通过预设的主线程第三管道获取硬件模块的进程号。
4.一种多线程协同仿真方法,其特征在于,包括:
启动后的硬件模块向软件模块发送进程号,以使所述软件模块根据所述进程号创建与硬件模块通信的管道通信方式;
所述硬件模块在所述软件模块的触发下,通过所述管道通信方式与所述软件模块交互,以使所述软件模块与所述硬件模块协同仿真;
其中,所述通过所述管道通信方式与所述软件模块交互,以使所述软件模块与所述硬件模块协同仿真,包括:
所述硬件模块接收第一操作信息,并返回与所述第一操作信息对应的响应信息,所述第一操作信息为在互斥锁保护模式下,所述软件模块执行与所述进程号对应的进程中的第一操作指令,得到第一操作信息,并通过与所述第一操作指令对应的管道通信方式将所述第一操作信息发送的。
5.根据权利要求4所述的多线程协同仿真方法,其特征在于,所述管道通信方式包括:
与所述进程号对应的主线程第一管道,所述主线程第一管道相对于软件模块侧为软件侧写管道,相对于硬件模块侧为硬件侧读管道;
与所述进程号对应的主线程第二管道,所述主线程第二管道相对于软件模块侧为软件侧读管道,相对于硬件模块侧为硬件侧写管道;
与所述进程号对应的中断线程管道,所述中断线程管道相对于软件模块侧为中断线程读管道,相对于硬件模块侧为中断线程写管道。
6.根据权利要求4所述的多线程协同仿真方法,其特征在于,所述启动后的硬件模块向软件模块发送进程号,包括:
所述启动后的硬件模块通过预设的主线程第三管道向软件模块发送进程号。
7.一种多线程协同仿真方法,其特征在于,包括:
启动后的软件模块在确定与硬件模块通信的通信线程未建立时,创建通信线程,以及创建所述通信线程中的软件侧套接字,用以使所述硬件模块根据所述软件侧套接字的地址信息进行连接,形成通信套接字;
所述软件模块通过所述通信套接字与所述硬件模块交互,以使所述软件模块与所述硬件模块协同仿真;
其中,所述软件模块通过所述通信套接字与所述硬件模块交互,以使所述软件模块与所述硬件模块协同仿真,包括:
在互斥锁保护模式下,所述软件模块通过预设的主线程执行进程的第一操作指令,得到第一操作信息,并将所述第一操作信息存储于线程共享数据区中,以使所述硬件模块通过包含所述通信套接字的通信线程访问;以及
所述软件模块通过所述主线程访问所述线程共享数据区以获取所述硬件模块返回的与所述第一操作信息对应的响应信息。
8.根据权利要求7所述的多线程协同仿真方法,其特征在于,还包括:
所述软件模块在所述硬件模块的触发下创建中断线程,用于根据所述硬件模块通过所述通信套接字发送的中断请求消息执行中断。
9.一种多线程协同仿真方法,其特征在于,包括:
启动后的硬件模块根据预设的软件侧套接字的地址信息连接软件模块的所述软件侧套接字,以形成与所述软件模块通信的通信套接字;
在所述软件模块的触发下,所述硬件模块通过所述通信套接字与所述软件模块交互,以使所述软件模块与所述硬件模块协同仿真;
其中,所述硬件模块通过所述通信套接字与所述软件模块交互,以使所述软件模块与所述硬件模块协同仿真,包括:
所述硬件模块通过包含所述通信套接字的通信线程获取存储于线程共享数据区中的第一操作信息,并返回与所述第一操作信息对应的响应信息,以使所述软件模块通过预设的主线程访问所述线程共享数据区获得所述响应信息;
所述第一操作信息为所述软件模块通过所述主线程执行进程的第一操作指令,得到存储于所述线程共享数据区中的第一操作信息。
10.根据权利要求9所述的多线程协同仿真方法,其特征在于,还包括:
所述硬件模块通过所述通信套接字向所述软件模块发送中断请求消息,以使所述软件模块创建用于执行中断的中断线程。
11.一种多线程协同仿真***,其特征在于,包括:硬件模块和软件模块;
所述硬件模块用于
向软件模块发送进程号,以使所述软件模块根据所述进程号创建与硬件模块通信的管道通信方式;
所述软件模块用于
获取硬件模块的进程号,并根据所述进程号创建与所述硬件模块通信的管道通信方式,并通过所述管道通信方式与所述硬件模块交互,以使所述软件模块与所述硬件模块协同仿真;
其中,所述软件模块具体用于在互斥锁保护模式下,执行与所述进程号对应的进程中的第一操作指令,得到第一操作信息,并通过与所述第一操作指令对应的管道通信方式将所述第一操作信息发送至所述硬件模块,以获得所述硬件模块返回的与所述第一操作信息对应的响应信息。
12.根据权利要求11所述的多线程协同仿真***,其特征在于,
所述管道通信方式包括:
与所述进程号对应的主线程第一管道,所述主线程第一管道相对于软件模块侧为软件侧写管道,相对于硬件模块侧为硬件侧读管道;
与所述进程号对应的主线程第二管道,所述主线程第二管道相对于软件模块侧为软件侧读管道,相对于硬件模块侧为硬件侧写管道;
与所述进程号对应的中断线程管道,所述中断线程管道相对于软件模块侧为中断线程读管道,相对于硬件模块侧为中断线程写管道。
13.一种多线程协同仿真***,其特征在于,包括:硬件模块和软件模块;
所述硬件模块用于
根据预设的软件侧套接字的地址信息连接软件模块的所述软件侧套接字,以形成与所述软件模块通信的通信套接字;
所述软件模块具体用于
在确定与硬件模块通信的通信线程未建立时,创建通信线程,以及创建所述通信线程中的软件侧套接字,用以使所述硬件模块根据所述软件侧套接字的地址信息进行连接,形成通信套接字,并通过所述通信套接字与所述硬件模块交互,以使所述软件模块与所述硬件模块协同仿真;
其中,所述软件模块具体用于在互斥锁保护模式下,通过预设的主线程执行进程的第一操作指令,得到第一操作信息,并将所述第一操作信息存储于线程共享数据区中,以使所述硬件模块通过包含所述通信套接字的通信线程访问;以及
所述软件模块还具体用于通过所述主线程访问所述线程共享数据区以获取所述硬件模块返回的与所述第一操作信息对应的响应信息。
14.根据权利要求13所述的多线程协同仿真***,其特征在于,
所述软件模块还用于
在所述硬件模块的触发下创建中断线程,用于根据所述硬件模块通过所述通信套接字发送的中断请求消息执行中断。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/081679 WO2012167536A1 (zh) | 2011-11-02 | 2011-11-02 | 多线程协同仿真方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102725735A CN102725735A (zh) | 2012-10-10 |
CN102725735B true CN102725735B (zh) | 2014-04-02 |
Family
ID=46950461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180002703.2A Expired - Fee Related CN102725735B (zh) | 2011-11-02 | 2011-11-02 | 多线程协同仿真方法及*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102725735B (zh) |
WO (1) | WO2012167536A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107395452A (zh) * | 2017-06-22 | 2017-11-24 | 重庆大学 | 一种利用软硬件协同技术提高WebServer的HTTPS应用性能的方法 |
CN113109643B (zh) * | 2021-03-10 | 2022-09-30 | 青岛海信智慧生活科技股份有限公司 | 一种智能门锁的自动测试方法及装置 |
CN113110928A (zh) * | 2021-04-21 | 2021-07-13 | 合肥宏晶微电子科技股份有限公司 | 多线程启动方法及多线程启动*** |
CN113868029A (zh) * | 2021-08-12 | 2021-12-31 | 北京航天长征飞行器研究所 | 一种多任务并发测试方法及测试*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100535868C (zh) * | 2005-12-28 | 2009-09-02 | 中国科学院微电子研究所 | 一种实时位真仿真开发***及其方法 |
US8370806B2 (en) * | 2006-11-15 | 2013-02-05 | Qualcomm Incorporated | Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor |
-
2011
- 2011-11-02 WO PCT/CN2011/081679 patent/WO2012167536A1/zh active Application Filing
- 2011-11-02 CN CN201180002703.2A patent/CN102725735B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2012167536A1 (zh) | 2012-12-13 |
CN102725735A (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3352083B1 (en) | Debugging method, multi-core processor, and debugging equipment | |
US9806959B2 (en) | Baseboard management controller (BMC) to host communication through device independent universal serial bus (USB) interface | |
US6591358B2 (en) | Computer system with operating system functions distributed among plural microcontrollers for managing device resources and CPU | |
KR101035832B1 (ko) | 집적 종단점 장치와, 집적 pci 익스프레스 종단점 장치및 pci 익스프레스 통신 시스템 | |
CN104170323A (zh) | 基于网络功能虚拟化的故障处理方法及装置、*** | |
EP3382536A1 (en) | Emulation of hardware components | |
US9779047B2 (en) | Universal intelligent platform management interface (IPMI) host to baseboard management controller (BMC) communication for non-x86 and legacy free systems | |
CN103942178A (zh) | 多核处理器上实时操作***与非实时操作***之间的通信方法 | |
CN102725735B (zh) | 多线程协同仿真方法及*** | |
CN105074671A (zh) | 用于在内核模块和设备驱动程序中检测并发编程错误的方法和*** | |
CN104486234A (zh) | 一种将业务交换机卸载到物理网卡的方法及服务器 | |
CN103927305B (zh) | 一种对内存溢出进行控制的方法和设备 | |
US20170024353A1 (en) | Dedicated lan interface per ipmi instance on a multiple baseboard management controller (bmc) system with single physical network interface | |
CN110968352B (zh) | 一种pcie设备的复位***及服务器*** | |
CN109426613A (zh) | 在uefi中检索调试数据的方法及其电脑*** | |
CN103544105A (zh) | 多核处理器中基于vcpu的调试方法和装置 | |
WO2015062217A1 (zh) | 虚拟桌面***中外设的接入处理方法及装置 | |
CN103649923A (zh) | 一种numa***内存镜像配置方法、解除方法、***和主节点 | |
CN102799465A (zh) | 分布式虚拟化***的虚拟中断管理方法及装置 | |
CN105740139A (zh) | 一种基于虚拟环境的嵌入式软件调试方法 | |
CN112650676A (zh) | 软件测试方法、装置、设备及存储介质 | |
CN103530254A (zh) | 多节点***的外部设备互联枚举方法和装置 | |
CN105607874B (zh) | Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器 | |
CN102884515A (zh) | 串口重定向处理方法、设备和*** | |
CN112764981A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140402 Termination date: 20181102 |