CN107391251A - 基于Forth虚拟机的任务调度方法及装置 - Google Patents
基于Forth虚拟机的任务调度方法及装置 Download PDFInfo
- Publication number
- CN107391251A CN107391251A CN201710810188.XA CN201710810188A CN107391251A CN 107391251 A CN107391251 A CN 107391251A CN 201710810188 A CN201710810188 A CN 201710810188A CN 107391251 A CN107391251 A CN 107391251A
- Authority
- CN
- China
- Prior art keywords
- task
- forth
- wake
- tcb
- scheduling
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种基于Forth虚拟机的任务调度方法及装置,将任务划分为终端、后台、中断三种任务类型,把任务控制表TCB中任务状态设置为Forth向量定义,通过创建与Forth虚拟机指令周期同步的任务调度循环机制,在无需状态判定只需保存或恢复当前数据栈指针的情况就能在预定时刻精确调度切换每一个任务。现场保护需要将当前返回栈指针压入数据栈,将此数据栈指针保存到该任务的用户变量区中;恢复现场需要从该任务的用户变量区里恢复SP,将栈顶值存入返回栈指针。采用本发明提供的调度方法及装置能够在确保良好的重构、扩展、移植、交互等Forth***固有特性的前提实现精简高效,满足特定嵌入式应用的实时性要求。
Description
技术领域
本发明涉及一种基于Forth虚拟机的任务调度及装置,属计算机操作***技术领域。
背景技术
Forth语言本身就是一种过程控制语言和一种快速开发环境,而不仅仅是一个单纯的编程工具,具有很强的交互性、重构性、移植性和自扩展能力,以及高效的生成代码,甚至可以快速构造出一个实时多任务操作***。
一直以来,基于Forth虚拟机(FVM)的嵌入式多任务操作***(FVMOS)究竟采用何种多任务调度策略始终是Forth界长期争论的焦点,以至于在先后形成的FIG-Forth、Forth-79、Forth-83、ANSI X3.215-1994、ISO/IEC 15145:1997、Forth-2012等标准中均未出现相关的内容。与直接基于CPU处理器架构的多任务操作***不同,FVMOS的实现有其独特性,若引入抢占式调度,势必会破坏虚拟机的硬件抽象,从而散失固有的重构、扩展、移植等特性。按照以往的方式,若采用抢占式调度,同时具备并发(终端和后台)、定时和中断三种任务类型,则实时性的保证是以数十项复杂的CPU现场保护与恢复以及丢失重构、扩展、移植等特性为代价的。此外,如果存在终端任务,这种中断驱动的强制调度还会严重干扰和打乱Forth***特有的在线交互过程。
发明内容
本发明的目的是克服现有技术的不足,提供一种精简高效的基于Forth虚拟机架构的嵌入式任务调度方法及装置。
本发明提供一种基于Forth虚拟机任务调度方法,包括:
将当前返回栈指针,即指向PAUSE模快后的断点,压入数据栈;
将当前数据栈指针保存到当前任务的tcb[sp];
得到下一个任务status里pass或wake对应过程的pfa,并压入返回栈;
FVM虚拟机开始跳转去执行PASS或WAKE过程;
若是pass,rp0和tcbn仍在数据栈里。PASS模快将沿着多任务循环链表不断循环,跳过处于pass状态的任务,直到遇到wake为止;
若是wake,rp0和tcbm仍在数据栈里。WAKE模快将恢复处于wake状态任务的数据栈和返回栈,并由FVM实现跳转;
当退出PAUSE模块时,FVM又开始返回到PAUSE后面的断点处开始执行。
本发明提供一种基于Forth虚拟机的任务调度装置,包括:
Flash中存放在FVM上运行可重入的Forth代码以及在其之上由高级定义组成的任务创建、任务初始化、任务激活、任务调度、任务控制等模块;
RAM中有若干与用户任务相对应的由任务控制块TCB、返回栈RS、数据栈DS等组成的用户变量区,以及文本输入缓冲区TIB、其他用户变量区和普通变量区等存储项;
在Flash的Forth字典里创建一个特殊的任务定义,初始化任务用户变量区里的TCB和堆栈区,链接任务体,启动任务调度,并可以按需要随时随停止、休眠、唤醒某个任务。
与现有技术相比,本发明提供的一种基于Forth虚拟机的任务调度方法及装置在无需状态判定的情况下,就能在预定的时刻精确调度切换每一个任务。通常,轮询调度是在TCB的status单元里保存任务的状态,每次任务调度时都去循环搜索处于wake状态的任务,而在本发明中,通过引入Forth向量字pass和wake,可以使调度过程进一步优化到省去状态比较和循环跳转。这时,TCB里的status存储的就不再是任务状态,而是可随时置换的pass或wake向量字。
与现有技术相比,本发明提供的一种基于Forth虚拟机的任务调度方法及装置任务切换定位在Forth定义之间,把调度时刻精确控制在FVM每次跳转执行下一条Forth指令时,与FVM指令周期保持同步,因此只需在保存或恢复当前数据栈指针的情况下,快速完成任务调度切换。现场保护仅需要将当前返回栈指针压入数据栈,并将当前数据栈指针保存到该任务的用户变量区里;而恢复现场仅需要从该任务的用户变量区里恢复SP,并将栈顶值存入返回栈指针。
本发明的有益效果在于能够在确保良好的重构、扩展、移植、交互等Forth***固有特性的前提下,实现精简高效,并满足特定嵌入式应用的实时性要求。
附图说明
图1为一个实施例中基于Forth虚拟机任务调度的结构示意图。
图2为一个实施例中任务调度方法的流程图。
图3为一个实施例中PASS和WAKE模块执行过程示意图。
图4为一个实施例中任务调度装置的结构示意图。
图5为一个实施例中中断任务调度过程示意图。
具体实施方式
以下参照附图并结合实施例,对本发明作进一步详细说明。
在一个实施例中,一种基于Forth虚拟机的任务调度方法的结构,如图1所示:
Flash中存放在FVM上运行的Forth代码,FBS底层是Code定义,上层是高级定义,在其之上是由高级定义组成的FVMOS。由FVMOS可以创建隶属Stask的若干用户任务。RAM中有若干与用户任务相对应的由任务控制块TCB、返回栈RS、数据栈DS等组成的用户变量区,以及文本输入缓冲区TIB、其他用户变量区和普通变量区等存储项。逻辑上,FBS、FVMOS都可以进行RAM操作,但物理上,***的存取操作被封装在FBS的底层Code定义中,实际操作是透过这些分类存取指令完成的。与抢占式***不同,本发明的调度方法及装置支持终端任务、后台任务和中断任务等三种任务类型,虽然三种任务的TCB内容有差异,但都可以连接到多任务循环链表中。
FVMOS架构应当在Forth核心词典和主控循环Quit之上,与直接在寄存器处理器上架构操作***有着明显的差异。若仅考虑单核Forth虚拟机,其可选的实时多任务操作***实现方式为:利用Forth自身的特点,直接用汇编、C语言或Forth自生成器(可异构)生成一个包含Forth虚拟机的基本***FBS(Forth Basic system),也就是Stask(System Task,第一个终端任务),之后在其上定义封装:内存管理、任务管理、设备管理、错误陷井等FVMOS原语构件。若存储在Flash中的FBS和FVMOS是可重入的,那么新创建的任务Utask(User Task)只在RAM用户变量区中建立任务数据空间(运行在一个Forth虚拟机之上,适合于多核SMP模式)。同时,初始Utask的任务控制块TCB,并将新的TCB***到***的TCB链表中,进入多任务调度。
在一个实施例中,一种基于Forth虚拟机的任务调度方法的TCB结构,如下表所示:
FVMOS的任务控制块TCB,就是用户变量区里与多任务调度有关的一块特殊区域。TCB表中每一项都是通过用户变量USER定义的,其中基本表项(前六项)是每个任务的必备项,而附加表项是专门针对终端任务而设置的。附加表项(I/O驱动)存放的是该终端任务的I/O驱动向量,与该任务具体连接的终端设备有关,附加表项(解释器操作)存放的是该终端任务文本解释器与状态有关的操作向量。需要特别指出的是,TCB没有保留返回栈指针,而是将当前返回栈指针放在数据栈栈顶。
在上述内存管理方式下,现场保护仅需要将当前返回栈指针RP压入数据栈,并将当前数据栈指针SP保存到该任务的用户变量区里。而恢复现场仅需要从该任务的用户变量区里恢复SP,并将栈顶值存入RP指针。
在一个实施例中,如图2所示,一种基于Forth虚拟机的任务调度方法的
PAUSE模块,包含如下步骤:
S101:将当前返回栈指针(指向PAUSE后的断点)压入数据栈;
S102:获取当前数据栈指针;
S103:获取tcb0[sp]地址;
S104:将当前数据栈指针保存到当前任务的tcb0[sp];
S105:获取tcb0[follower]地址;
S106:获取下一个任务的tcb1;
S107:获取下一个任务的status1(xts);
S108:获取下一个任务status1中pass或wake对应过程的pfa;
S109:将下一任务pass或对应过程的pfa压入返回栈。
FVM弹出返回栈,开始跳转去执行PASS或WAKE模块,当退出PAUSE模块时,FVM又开始返回到PAUSE后面的断点处开始执行。
在一个实施例中,如图2所示,一种基于Forth虚拟机的任务调度方法的PASS模快,包含如下步骤:
此时,rp0和tcbn仍在数据栈里(n:扫描多任务循环链表时处于pass状态的任务数)。PASS模快将沿着多任务循环链表不断循环,跳过处于pass状态的任务,直到遇到wake为止。
S201:获取第n个任务的tcbn[follower]地址;
S202:获取第n+1个任务的tcbn+1;
S203:获取第n+1个任务的status(xts);
S204:获取第n+1个任务status中pass或wake对应过程的pfa;
S205:将第n+1个任务pass或wake对应过程的pfa压入返回栈。
将上述定义的xts存在pass常数里,PASS模快执行上述Forth无名定义。
在一个实施例中,如图2所示,一种任务调度方法的WAKE模快,包含如下步骤:
此时,rp0和tcbm仍在数据栈里(m:扫描多任务循环链表时处于wake状态的第一个任务)。WAKE模快将恢复处于wake状态任务的数据栈和返回栈,并由FVM实现跳转。
S301:将用户变量区指针指向第m个任务(wake状态)的tcbm;
S302:获取第m个任务的tcbm[sp]地址;
S303:获取第m个任务数据栈指针,激活第m个任务的数据栈,此时数据栈已切换到第m个任务的数据栈,对于每个任务,其数据栈的栈顶都存有该任务的rp;
S304:取第m个任务返回栈指针,激活第m个任务的返回栈。
将上述定义的xts存在WAKE常数里,WAKE模快执行上述Forth无名定义。
PASS和WAKE模块的执行过程如图3所示。
在一个实施例中,如图4所示,一种基于Forth虚拟机的任务调度装置,除了以上任务PAUSE模块103、PASS模快104、WAKE模快105等调度模块之外,还包括紧密关联的任务创建100、任务初始化101、任务激活102、任务控制106等关联模块。
模块100:在Flash的Forth字典里创建一个特殊的任务定义,将分配给该任务的用户变量区首址保存到cfa代码场里,返回栈、数据栈栈底指针保存到pfa参数场里,定义的cfa和pfa共同组成了任务信息块TIB。终端任务的创建与后台任务基本相同,所不同的是申请追加分配的用户变量区可以包含附加的I/O驱动向量、解释器输入流操作向量,以及输入流缓冲区。终端任务的初始化除完成TASK-INIT过程外,还需要针对不同的终端类型,填写或置换字符、回车、光标等公共操作的执行向量。
模块101:任务创建后,该模块负责初始化该任务用户变量区里的TCB和堆栈区,设置缺省十进制,在尚未链接任务体前,将该任务设置为pass休眠状态。
模块102:在多任务***启动之前,在任务创建和初始化之后,需要对每个任务进行定义,激活该任务。该模块把紧随其后的Forth命令设置为当前tcb所指向任务的任务体,具体包含如下步骤:
S401:定位tcb[sp],获取指定任务的数据栈指针;
S402:定位tcb[rp],获取指定任务的返回栈指针;
S403:将该模块后的断点压入指定任务的返回栈;
S404:将返回栈指针压入数据栈,为WAKE过程做准备;
S405:将数据栈指针保存到指定任务的tcb[sp]。
需要说明的是在含有该模块的语句中,该模块出现的前后就是主从任务执行点的分界线。
模块106:调度模块可以由SINGLE和MULTI定义来开关,SINGLE将任务调度设为空操作,关闭多任务调度,仅保留一个终端任务;MULTI将任务调度指向PAUSE,启动多任务调度。此外,可以通过置换TCB中的status向量,停止(停止当前任务)、休眠(在下一次任务循环中休眠)、唤醒(在下一次任务循环中唤醒)某个任务。
在一个实施例中,一种基于Forth虚拟机的任务调度方法及装置能够支持终端在线交互。终端任务为支持串口和解释器工作,可以在每个任务的用户变量区里附加更多的操作信息,如果目标***里有一个解释器,那么其对应的终端任务就需要依据不同的串口硬件,在用户变量区里建立终端任务的I/O驱动和与文本解释器输入缓冲区有关的操作向量。需要说明的是,***上电缺省时,核心***就已经包含了一个终端任务,此时多任务循环链表里只有一个指向自身的TCB。
在一个实施例中,如图5所示,一种基于Forth虚拟机的任务调度方法及装置所述的中断任务调度不直接使用中断进行任务切换,而是将任务切换控制在Forth定义之间。中断发生时,如果有对应的中断任务,待处理完中断事务后,中断服务程序将执行与TASK-WAKE类似的操作,使该任务在下一次PAUSE调度中启动运行。不论中断何时发生,启动中断任务的时刻是可以预知的,只能发生在有PAUSE语句的地方。在这种方式下,中断任务的创建和初始化与后台任务相同。
最后所应说明的是,以上实施例仅用以说明而非限制本发明的技术方案,对于不脱离本发明的精神和范围的修改或局部替换,均应涵盖在本发明的权利要求保护范围中。
Claims (7)
1.一种基于FORTH虚拟机的任务调度方法,其步骤包括:
(1)将当前返回栈指针,即指向PAUSE模快后的断点,压入数据栈;
(2)将当前数据栈指针保存到当前任务的tcb[sp];
(3)得到下一个任务status里pass或wake对应过程的pfa,并压入返回栈;
(4)FVM虚拟机开始跳转去执行PASS或WAKE过程;
(5)若pass,rp0和tcbn仍在数据栈里,PASS模快将沿着多任务循环链表不断循环,(6)跳过处于pass状态的任务,直到遇到wake为止;
(7)若wake,rp0和tcbm仍在数据栈里,WAKE模快将恢复处于wake状态任务的数据栈和返回栈,并由FVM实现跳转;
(8)当退出PAUSE模块时,FVM又开始返回到PAUSE后面的断点处开始执行。
2.根据权利要求1 所述的方法,其特征在于:基于Forth虚拟机的任务调度架构应当在Forth 核心词典和主控循环QUIT 之上,包含终端任务、后台任务和中断任务三种任务类型。
3.根据权利要求1所述的方法,其特征在于:现场保护需要将当前返回栈指针RP压入数据栈,将当前数据栈指针SP保存到该任务的用户变量区中;而恢复现场仅需要从该任务的用户变量区中恢复SP,并将栈顶值存入RP指针。
4.根据权利要求1所述的方法,其特征在于:TCB没有保留返回栈指针,而是将当前返回栈指针放在数据栈栈顶,TCB的status存储的是可随时置换的pass或wake向量字。
5.一种基于FORTH虚拟机的任务调度装置,包括:
Flash中存放在FVM上运行可重入的Forth代码以及在其之上由高级定义组成的任务创建、任务初始化、任务激活、任务调度、任务控制模块;
RAM中有若干与用户任务相对应的由任务控制块TCB、返回栈RS、数据栈DS组成的用户变量区,以及文本输入缓冲区TIB、其他用户变量区和普通变量区存储项;
在Flash的 Forth字典里创建一个特殊的任务定义,初始化任务用户变量区里的TCB和堆栈区,链接任务体,启动任务调度,并可以按需要随时随停止、休眠、唤醒某个任务。
6.根据权利要求5所述的基于FORTH虚拟机的任务调度装置 ,其特征在于:任务切换发生在Forth定义之间,该装置能把调度时刻精确控制在FVM每次跳转执行下一条Forth指令时,即与FVM指令周期同步。
7.根据权利要求5所述的基于FORTH虚拟机的任务调度装置,其特征在于:任务的停止、休眠、唤醒只需要置换TCB的status向量;对中断任务而言,可在中断服务程序中将该任务的status置换为wake,即可在下一次调度时启动中断任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710810188.XA CN107391251A (zh) | 2017-09-11 | 2017-09-11 | 基于Forth虚拟机的任务调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710810188.XA CN107391251A (zh) | 2017-09-11 | 2017-09-11 | 基于Forth虚拟机的任务调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107391251A true CN107391251A (zh) | 2017-11-24 |
Family
ID=60349620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710810188.XA Pending CN107391251A (zh) | 2017-09-11 | 2017-09-11 | 基于Forth虚拟机的任务调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391251A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098258A (zh) * | 2022-06-23 | 2022-09-23 | 云南大学 | 基于多核堆栈处理器的Forth多任务调度方法及装置 |
CN115237475A (zh) * | 2022-06-23 | 2022-10-25 | 云南大学 | 一种Forth多核堆栈处理器及指令集 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050097514A1 (en) * | 2003-05-06 | 2005-05-05 | Andrew Nuss | Polymorphic regular expressions |
CN104166590A (zh) * | 2013-05-20 | 2014-11-26 | 阿里巴巴集团控股有限公司 | 一种实现任务调度的方法及*** |
CN106980546A (zh) * | 2016-01-18 | 2017-07-25 | 阿里巴巴集团控股有限公司 | 一种任务异步执行方法、装置及*** |
-
2017
- 2017-09-11 CN CN201710810188.XA patent/CN107391251A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050097514A1 (en) * | 2003-05-06 | 2005-05-05 | Andrew Nuss | Polymorphic regular expressions |
CN104166590A (zh) * | 2013-05-20 | 2014-11-26 | 阿里巴巴集团控股有限公司 | 一种实现任务调度的方法及*** |
CN106980546A (zh) * | 2016-01-18 | 2017-07-25 | 阿里巴巴集团控股有限公司 | 一种任务异步执行方法、装置及*** |
Non-Patent Citations (4)
Title |
---|
与非网: "嵌入式FORTH虚拟计算机的实现-嵌入式***", 《与非网》 * |
张怀宁: "FORTH83语言中的多任务", 《微计算机应用》 * |
杨为民: "一种新的嵌入式Forth实时操作***的研究", 《云南大学学报(自然科学版)》 * |
自由布鲁斯: "Forth 语言概要-Forth: Anunderview", 《博客园》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098258A (zh) * | 2022-06-23 | 2022-09-23 | 云南大学 | 基于多核堆栈处理器的Forth多任务调度方法及装置 |
CN115237475A (zh) * | 2022-06-23 | 2022-10-25 | 云南大学 | 一种Forth多核堆栈处理器及指令集 |
CN115098258B (zh) * | 2022-06-23 | 2022-12-23 | 云南大学 | 基于多核堆栈处理器的Forth多任务调度方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Vaishnav et al. | Resource elastic virtualization for FPGAs using OpenCL | |
US6421808B1 (en) | Hardware design language for the design of integrated circuits | |
Busi et al. | A process algebraic view of Linda coordination primitives | |
Reusing | Comparison of operating systems tinyos and contiki | |
CN103729235A (zh) | Java虚拟机的编译方法和Java虚拟机 | |
CN109445886A (zh) | 一种界面显示方法、***及终端设备 | |
CN103348323A (zh) | 动态二进制优化 | |
CN103064690A (zh) | 一种基于Android操作***的开发框架及其执行方法 | |
CN101446918A (zh) | 一种实现用户态调试器调试单个函数的方法及*** | |
CN103678135A (zh) | 大数据环境下实现跨进程与跨线程调试的***与方法 | |
CN101110055A (zh) | 在单元测试中实现通用桩函数的装置及其实现方法 | |
CN101819539A (zh) | 一种μCOS-Ⅱ移植到ARM7的中断嵌套方法 | |
CN107391251A (zh) | 基于Forth虚拟机的任务调度方法及装置 | |
CN106062716A (zh) | 在单任务***中实现多任务的方法、装置及单任务*** | |
CN108415740A (zh) | 一种应用于数据分析任务的工作流调度方法 | |
CN102981885A (zh) | C语言程序设计中基于对象编程的方法及*** | |
CN102541566A (zh) | 半导体软件界面框架生成方法 | |
CN102375759B (zh) | 利用有限状态机防止代码重入的方法 | |
CN107820605A (zh) | 用于动态低延迟优化的***和方法 | |
CN103631645A (zh) | 一种基于数字医疗的数字家庭中间件*** | |
CN110442410A (zh) | 嵌入式界面设计方法、装置、电子设备及存储介质 | |
CN106527335A (zh) | 一种支持协程功能的plc控制器 | |
US20220291958A1 (en) | Mobile phone operating system for minors and its architecture and ecological development method | |
CN102929708A (zh) | 一种实现智能卡多任务处理的方法 | |
CN102799434B (zh) | 一种利用软件保护装置实现自动代码移植的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171124 |
|
WD01 | Invention patent application deemed withdrawn after publication |