CN1912835A - 用于在操作系统初始化期间执行代码的系统 - Google Patents

用于在操作系统初始化期间执行代码的系统 Download PDF

Info

Publication number
CN1912835A
CN1912835A CNA2006100924471A CN200610092447A CN1912835A CN 1912835 A CN1912835 A CN 1912835A CN A2006100924471 A CNA2006100924471 A CN A2006100924471A CN 200610092447 A CN200610092447 A CN 200610092447A CN 1912835 A CN1912835 A CN 1912835A
Authority
CN
China
Prior art keywords
device driver
peripherals
driver
operating system
initialization
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
Application number
CNA2006100924471A
Other languages
English (en)
Inventor
P·范·德·费恩
S·埃斯尔
B·斯特克
B·埃德蒙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
QNX Software Systems GmbH
Original Assignee
QNX Software Systems GmbH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by QNX Software Systems GmbH filed Critical QNX Software Systems GmbH
Publication of CN1912835A publication Critical patent/CN1912835A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种用于满足苛刻的引导时间要求(诸如由车辆远程信息处理系统要求的时序要求)的系统。当前的计算机系统使用类似协处理器的昂贵硬件来服务具有低于将操作系统加载到存储器中的时间的时间要求的请求,诸如输入/输出请求。作为替代,在引导过程中,可在加载操作系统前先初始化迷你驱动程序,来服务这些请求。例如,迷你驱动程序可缓存到来的数据,并且/或者对到来的消息给予回复。在操作系统加载以后,可初始化第二设备驱动程序,并且可从迷你驱动程序转移到第二驱动程序。

Description

用于在操作系统初始化期间执行代码的系统
技术领域
本发明主要涉及实时操作系统,更具体涉及需要在从系统引导开始的有限时间间隔内响应外部事件的实时操作系统。
背景技术
随着系统变得更加复杂,用在嵌入式系统中的实时操作系统(RTOS)需要的引导时间也持续增加。例如,车辆,诸如汽车,卡车,耕作装备,采矿装备,高尔夫车,移动机器人以及诸如此类,可使用远程信息处理系统,诸如提供多种有用特征的GPS导航系统,无线通信,自动驾驶辅助系统以及诸如此类。这些远程信息处理系统可由能在系统上电后很短的时间段内传输消息的控制器区域网络(CAN)和面向媒体系统传输(MOST)总线驱动。远程信息处理系统通常需要能在很短的时间内接收,并可能响应这些消息。这些时序要求可能会小于RTOS完全引导并开始运行标准设备驱动程序所需要的时间。
例如,CAN总线主设备能在系统上电后大约65ms发送“上电”消息给总线上的全部设备,且远程信息处理系统必须在100ms内响应这个消息。在该初始上电握手序列后,远程信息处理系统可能需要缓存(并且可能回复)CAN总线上以大约每10ms一条消息的速率接收的另外的消息。结合第一条CPU指令直到上电后10ms才可能被执行的事实,远程信息处理系统必须要能在大约55ms内响应这些消息。这些苛刻的引导时间要求使得RTOS不太可能在第一个“上电”CAN消息之前完全运行。这可能是因为引导过程(诸如将OS镜像拷贝到RAM中)的瓶颈。从上电复位(POR)到启动第一个用户应用程序的典型的OS引导时间可以数百毫秒来测量。
为了满足这些时序要求,辅助的通信处理器已被用于补充RTOS的功能。例如,当传送CAN消息时,辅助处理器能接收这些消息并捕获任何需要的数据。随后一旦加载了OS,就可将这些任务传递给设备驱动程序。虽然已将这些辅助处理器加入到嵌入式系统中以满足时序要求,但它们会在价格敏感市场中显得昂贵。此外,万一出现需求,硬件解决方案的更改会很困难和昂贵。因此,需要有一种用于满足启动时序要求的低成本、易更改的解决方案,其在操作系统运行之前能够运行并提供有限的功能。
发明内容
本文描述了用于满足苛刻的引导时间要求(诸如车辆远程信息处理系统要求的那些时序要求)的健壮系统。当前的计算机系统使用类似协处理器的昂贵硬件来服务具有低于将操作系统加载到存储器中的时间的时间要求的请求,诸如输入/输出请求。作为替代,在引导过程中,可在加载操作系统前先初始化迷你驱动程序,来服务这些请求。例如,迷你驱动程序可缓存到来的数据,并且/或者回复到来的消息。在整个引导过程中可被调用的迷你驱动程序,可以多种方式触发,诸如通过轮询和中断。在操作系统加载以后,可初始化第二设备驱动程序,并且可将迷你驱动程序的功能转移给第二驱动程序。第二设备驱动程序可以是操作系统的内核模块利用已知的方法初始化的典型的驱动程序。
对于本领域的专业技术人员,通过研究下面的附图和详细描述,本发明的其它系统、方法、特征和优点将是或将变得显而易见。希望所有这些附加的系统、方法、特征和优点都包括在本描述内,都在本发明的范围内,并且由下面所述的权利要求所保护。
附图说明
通过参照下面的附图和描述,可以更好地理解本发明。图中的部件并不必要依比例,而是将重点放在说明本发明的原理上。此外,在附图中,相似的附图标记在不同的视图中将始终表示相应的部件。
图1示出了使用CAN总线主设备的系统的示例性的引导时序序列。
图2示出了使用实时操作系统的示例性的装置。
图3示出了在引导操作期间使用一个或多个设备迷你驱动程序的示例性的实时操作系统。
图4示出了另一个在引导操作期间使用一个或多个设备迷你驱动程序的示例性的实时操作系统。
图5示出了用于迷你驱动程序的示例性逻辑体系结构。
图6示出了在引导过程的各阶段和迷你驱动程序之间可能存在的示例性关系。
图7是流程图,示出了用于实现引导过程的初始程序加载阶段的示例性过程。
图8是流程图,示出了用于实现使用迷你驱动程序的引导过程的初始程序加载阶段的示例性过程。
图9是流程图,示出了用于实现引导过程的启动程序阶段的示例性的过程。
图10是流程图,示出了系统从迷你驱动程序操作到功能完备的设备驱动程序的示例性的转移过程。
具体实施方式
现在参考附图并先参考图1,其示出了使用CAN总线主设备的车辆系统的示例性引导时序图。如图所示,CPU可在系统上电110后大约10ms,执行它的第一条指令120。在大约55ms后,或者在系统上电110后65ms,CAN总线主设备可发送“上电”消息130给总线上的所有设备。总线上的任何设备,诸如远程信息处理系统,必须在100ms内对该消息做出响应140。在该初始上电握手序列后,另外的消息150a和150n可以每10ms一条消息的速率在CAN总线上广播。如上所述,这些苛刻的引导时间要求使得RTOS在第一条“上电”消息前完全运行变得有疑问,因为从上电复位(POR)到启动第一个用户应用程序的典型的OS引导时间160可以数百毫秒来测量。
在图2中,示出了实现满足这些引导时间要求的示例性系统200。如图所示,该系统可包括用于执行存储在存储器210中的指令的中央处理单元(CPU)202,以及可生成和传输消息的外围设备240。存储器210可包括用于向各种应用程序提供对系统硬件的访问的操作系统212。在操作系统212中可包括提供基本服务的内核模块214,和描述系统的硬件资源的系统页216。操作系统212还可包括例外表218。除操作系统外,存储器210还可包括用于引导系统200的引导模块220。存储器还可包括用于在加载操作系统212之前服务请求的迷你驱动程序230。还可包括临时例外表232以允许迷你驱动程序的基于中断的触发,下面会更详细地讨论。
图3示出了用于满足车辆远程信息处理系统中苛刻的引导时间要求的系统中的示例性RTOS引导过程时间线图300。一开始,RTOS可在上电310开始引导。在这点上,CPU被复位并且初始上电代码被执行。该代码可包括初始程序加载程序(IPL)310,其可位于系统复位向量312上,可使计算机能够启动操作系统,并可提供代码以和系统中的各种设备(诸如磁盘驱动器、键盘、监视器、打印机、通信端口和类似设备)通信。例如,复位向量312包括个人计算机上的基本输入输出系统(BIOS)。这些指令还可包括用于初始化引导加载程序的指令,例如启动程序320。一旦引导加载程序运行,它就可以执行各种引导相关的任务,诸如拷贝OS镜像,引导OS,和处理输入/输出(I/O)请求。初始上电代码还可包括用于初始化迷你驱动程序230的指令。
迷你驱动程序230可提供典型设备驱动程序功能的任何一种和/或全部。如图所示,迷你驱动程序230提供初始化外围设备的函数,使之在整个引导过程300中可使用。一旦初始化,就可将迷你驱动程序230用于满足加在系统上的时序约束,例如,通过读并且在有必要的情况下回复在外围总线340上接收的消息342。当引导过程300完成时,系统从IPL 310转移到可负责另外的引导过程(诸如初始化硬件和建立系统页)的启动程序320,然后转移到初始化操作系统内核的内核初始化阶段350。在该过程中,迷你驱动程序230始终可按要求轮询332或者响应中断334。下面将更详细地描述轮询332和中断334。任选地,迷你驱动程序230可通过消息缓存336传送收集的数据给完备的设备驱动程序370,一旦该完备的设备驱动程序370运行,就可从迷你驱动程序接管控制。在这点上,可使用完备的驱动程序中断372。迷你驱动程序230还可在后面的引导过程300中初始化,诸如到图4中所示的启动程序320为止。应注意的是,术语迷你驱动程序230仅用于和在RTOS加载后由RTOS加载的典型设备驱动程序370区分。术语迷你驱动程序程序不打算以任何方式进行限制。另外,尽管迷你驱动程序230被示为引导过程300中早先的轮询332和后来的驱动的中断334,但附图仅是示例性的,因为迷你驱动程序230可在初始化后在任何时刻使用任何已知的方式(不仅包括直接相关的中断,还包括基于周期时间的中断)来触发。
图5示出了示例性迷你驱动程序230的示例性逻辑体系结构。在逻辑上,迷你驱动程序230可包括两个组件:句柄510和数据处理特征520。句柄510充当到引导过程300的外部接口,并可包括用于执行任何一种类型的设备特定的功能的代码段。句柄510可在引导过程300的任何一个阶段被调用。句柄510可以是设计成满足特定应用程序时序要求的定制功能。可选地,或者附加地,可实现标准的或者普通的句柄510。
作为接口,句柄510提供对多种函数(诸如数据处理特征520)的访问。例如,示例性的句柄510适合于允许对外围设备(诸如表1.0中所示的CAN或MOST总线控制器)的读和写访问。在这种情况下,数据处理特征520可用于将消息数据存储到可由句柄510访问的存储器的区块中。例如,可存储数据以缓存设备接收的消息,诸如来自CAN总线主设备的消息。可选地,还可提供其它数据处理函数520,诸如转换消息,提取消息数据,发送消息给另外的设备/软件,等等。这些函数可由时序要求、应用程序要求等等来要求。
                                  表1.0-示例性的句柄伪码
  Void minidriver_handler(void*data,int*count,int flag){...//Check if device has data to be readIf(receive_function(data,count)){//Transmit“Canned”reponsetransmit_function(CAN_MSG_REPLY);}...//Determine if we have timed out waiting for our initial CAN bus messageIf(*count==0&&timer_difference(mdrvr_start_time)>MAX_TIME){//Abort boot process and power down the CPU to minimize power draw cpu_power_down();Cpu_power_down();...}...}
为了实现这些函数,句柄程序510可使用多种所提供的数据处理函数520。这些函数520可以是设备特有的并且可以是迷你驱动程序230内在的。可选地,可提供可用于服务多个设备的标准的或普通的函数520。另外,数据处理特征可由迷你驱动程序230外在的函数520提供。例如,可提供三个函数520以允许设备在总线上传送和接收消息:设备初始化函数522、传输函数524和接收函数526。
如有必要,设备初始化函数522可初始化特定的设备。典型的硬件或设备初始化函数可包括:配置硬件寄存器,设备特定的时钟,和/或队列,以及启用设备中断等等。设备初始化函数可被调用一次,可在第一次调用迷你驱动程序230时,或者在整个迷你驱动程序工作期限内被调用。如在这里使用的,迷你驱动程序230的工作期限被定义为从初始化迷你驱动程序230到禁用迷你驱动程序230的时间段。
传输函数524可传输来自和迷你驱动程序230相关联的设备的数据。函数524可传输可根据正被服务的特定设备而变化的任意尺寸的数据。例如,用于典型串行设备的一块数据的传输可包括单个字节,而可为CAN主设备驱动程序传输多字节消息。
接收函数526可检查是否可从设备读取到数据。如果可读取到数据,则接收函数526可将接收到的数据存储到迷你驱动程序230的数据区域中。接收函数526还可维持接收到的数据的总字节计数。例如,接收函数526可被给定,存储器中迷你驱动程序数据将被存储的位置和当前迷你驱动程序数据缓存中的字节数,并且如果没有新数据可获得则可返回零,或者可返回新存储的字节数。存储器中的位置可以是可被选择以便不干扰其它系统资源的硬编码的、预定义的物理存储器地址。
除建立和提供数据处理特征520以外,迷你驱动程序230还可包括另外的逻辑以提供其它功能。例如,句柄510在引导过程300中始终可被调用,并确保不丢失消息。可提供轮询超时的功能和诸如此类的功能,以实现迷你驱动程序230行为的用户定制。可有三种触发机制来驱动迷你驱动程序句柄230:1)轮询机制532;2)基于定时器中断的轮询534;和3)设备中断机制536。可选地,句柄510可使用任何已知的方式来触发,诸如,每种触发机制可独立实现,或者在引导过程300中始终可使用触发机制的组合。可将表示用于在特定情况下调用句柄的机制的标签传递到句柄510中。例如,标签值MINIDRVR_FLAG_POLLED可指示出句柄是直接调用的,值MINIDRVR_FLAG_TIMER_IRQ可指示出句柄510是通过定时器中断调用的,并且值MINIDRVR_FLAG_DEVICE_IRQ可指示出句柄510是通过设备中断调用的。通过使用标签,可为引导过程300的各个阶段优化迷你驱动程序230的行为。
轮询机制532可不断地询问外围设备以看其是否有数据或消息。例如,系统可在整个引导序列300中在各种情况下调用句柄410,以确定是否已从设备接收到数据。在战略上,引导代码在引导过程300中始终可以安排函数调用给句柄520。可选地,或者另外地,可使用系统定时器来生成时间感(sense of time)以确定设备应何时被轮询532。
基于定时器中断的轮询机制534可以是轮询机制532和基于中断的系统536的组合。例如,迷你驱动程序句柄510可被附加作为基于系统定时器的准中断句柄。在这种情况下,迷你驱动程序可处于轮询模式,但具有句柄510不必在引导过程300中始终被明确调用的优点。更合适地,可将定时器机制配置成以系统要求指定的最高速率产生中断。可选地,或者另外地,可以任何速率生成中断。
最后,设备中断触发机制536可直接将迷你驱动程序句柄510附在设备中断536源上。这种情况下,系统可完全避免轮询。基于中断的触发机制536可消除向引导过程300添加轮询或定时器代码的需要,但是基于中断的触发可能不是在所有系统中或者在整个引导过程300中都可行。可选地,或者另外地,迷你驱动程序句柄510可在整个引导过程300中或在迷你驱动程序230的工作期限中使用触发机制的任何组合。
这些触发机制可以多种方式提供。例如,可提供函数来初始化中断,附加中断句柄,初始化定时器,获得当前定时器值,和确定经过的时间。这些函数对于正在使用的特定设备和系统可以是特有的,或者可以是平台无关的。为了初始化中断,迷你驱动程序230可能需要执行CPU和板特定(board-specific)的任务。这些任务可包括配置CPU以接受中断,以及配置中断控制器以产生用于与迷你驱动程序230相关联的设备的中断。为了附加中断句柄410,可生成和配置例外表232,以在迷你驱动程序中断产生时调用句柄510。如在本领域所已知的,例外表可能必须根据基础平台而被存储在存储器中的特定位置。为了初始化定时器,可建立预期的定时器分辨率。定时器可通常由迷你驱动程序230使用,或可被配置为中断定时器。任选地,可使用标签来启用和/或禁用定时器中断。例如,标签值MDRVR_TMR_INTR_ENABLE可启用定时器中断,而值MDRVR_TMR_INTR_DISABLE可禁用定时器中断。
如上所述,迷你驱动程序230可包括可被要求缓存接收的数据的数据存储功能。一旦加载了完备的驱动程序370,然后就可将缓存的数据传送给完备的驱动程序370。缓存的数据量,和应为缓存分配的存储量,可根据硬件和/或软件需求而变化。用户可指定任意的存储器位置(诸如RAM中的任意位置,或者可被保留以用于迷你驱动程序230缓存的存储器的安全或受保护的区域)用于数据缓存。该位置应该让内核214知道,以便存储器不会被重写或分配给系统或用户应用程序。如果RAM的某区域被分配用于迷你驱动程序数据存储,则该分配过程应在RAM已初始化之后进行。分配给迷你驱动程序230的存储器可以不由系统内部管理。更适合地,迷你驱动程序230自己可负责确保存储器的完整性,并确保系统存储器不被重写。可选地,分配给迷你驱动程序230的存储器随系统存储器一同被管理。在迷你驱动程序230转移到完备的驱动程序370后,可释放分配给迷你驱动程序230的存储器。
现在参照图6,其示出了描述示例性引导过程200的各阶段和迷你驱动程序转移过程512、522和552之间的关系的示意图600。如图所示,示例性的引导过程200可以是加拿大安大略省卡纳市的QNX软件系统有限公司提供的分布式操作系统QNX Neutrino RTOS的引导过程。引导过程200可包括各种阶段。例如,QNX Neutrino的引导过程被分为三个阶段:初始程序加载程序(IPL)阶段610,启动阶段620,和内核初始化阶段630。这些阶段,以及在这些阶段中执行的引导过程200函数,仅是示例性的而不打算限制权利要求的范围。
可在引导过程200的任何阶段期间初始化迷你驱动程序230,这可由引导时间需求所要求。例如,可以为了具有更多苛刻时序要求的系统,在IPL阶段610期间初始化迷你驱动程序230。对于具有较低时序要求的系统,可在启动620或内核初始化630阶段期间初始化迷你驱动程序230。可选地,迷你驱动程序可仅在特定的引导阶段初始化。例如,可将迷你驱动程序230的初始化限制在引导过程300的特定阶段,诸如启动阶段620。取决于迷你驱动程序230在引导过程300的哪个阶段被初始化,还可要求各种转移操作以确保迷你驱动程序230在整个引导过程300中可被调用。
最初,引导过程300可包括位于系统复位向量602中的执行指令。引导过程300的这个阶段可被称为IPL阶段610,并包括用于初始化硬件时钟和存储器以及用于将OS镜像拷贝到RAM中的指令。图7中示出了描述典型IPL阶段610的过程流的示例性流程图。如图所示,IPL阶段610可包括在步骤710执行位于系统复位向量中的指令。这些指令可包括汇编码以配置系统时钟,配置存储器控制器,等等。接着,在步骤720,主函数可开始执行。主函数可负责管理IPL阶段610的剩余部分。这些函数可包括在步骤730扫描系统以寻找OS镜像,在步骤740将OS镜像拷贝到RAM中,以及在步骤750转移到启动引导阶段。
为了在IPL阶段610期间初始化迷你驱动程序,可采取另外的步骤。图8是描述初始化迷你驱动程序230的IPL阶段的示例性流程图。如图所示,IPL 610通过在步骤810执行复位向量指令而再次启动,在此之后IPL主函数可在步骤820启动。在这点上,迷你驱动程序可在步骤830被初始化。在IPL阶段610的这点上初始化迷你驱动程序230可满足大部分极端的时序要求。在那些要求迷你驱动程序必须在IPL阶段610之前初始化的极端情况下,迷你驱动程序230可在引导过程中更早地被初始化。IPL阶段610然后可继续执行标准过程,诸如在步骤840扫描寻找OS镜像,在步骤850将OS镜像拷贝到RAM中,以及在步骤860将控制转移到启动程序。应注意的是,如果迷你驱动程序230不是中断驱动的(未示出),则句柄510也可必须在整个IPL阶段610剩余部分的各阶段被调用。
为了初始化迷你驱动程序230,可执行各种操作。这些操作可包括初始化设备硬件以考虑数据传输和接收,初始化系统资源,等等。如图所示,设备可在步骤832初始化,在步骤834可初始化定时器机制,在836可生成设备例外,并且在步骤838可对中断进行初始化。可选地,或者另外地,可执行其它操作来进行初始化。这些操作可取决于被初始化的特定设备,被使用的硬件平台,和/或其它系统信息。可使用上述的设备初始化、定时器初始化、例外产生和中断初始化函数,来执行步骤832、834、836和838。可选地,或另外地,可使用其它函数来初始化迷你驱动程序230。
一旦完成IPL阶段610,就可发生转移(512)以将引导过程的控制转交给启动程序620。启动程序620可负责另外的引导过程,诸如初始化硬件和创建系统页(描述系统的硬件资源的内核所需要的数据结构)。图9中示出了示例性的启动程序620过程的流程图900。如图所示,当启动阶段的主函数在步骤910被IPL调用时,启动阶段可以开始。接着,如有必要,在步骤920,OS镜像被解压缩。可在步骤930执行板特定的初始化任务,并在步骤940可生成系统页。可选地,或者另外地,启动程序620可执行其它任务。
如果在IPL阶段610期间初始化迷你驱动程序230,则该转移过程612可包括将来自IPL 610的信息传送给启动程序620。该信息可取决于触发方法。例如,如果迷你驱动程序230是中断驱动的,则启动程序620可能需要周期性地调用句柄510以对设备进行轮询,因此可能需要关于句柄510的信息。迷你驱动程序启动信息结构可用于将来自IPL 610的信息传送给启动程序520。表1.0中示出了示例性的迷你驱动程序启动信息结构。如表所示,启动信息结构可包括定义句柄510的地址的数据元素,句柄510的尺寸,被分配的RAM的位置,迷你驱动程序数据的尺寸,用于表示由迷你驱动程序230存储的字节总数的整数的地址,最小轮询时间,中断信息,例外句柄的位置,关于当前句柄函数触发模式的信息,等等。可选地或者另外地,其它数据可包括在启动信息结构中。可定义IPL函数调用,以在将控制转交612给启动程序620之前,很容易地提供(populate)启动信息结构。
                  表2.0-示例性的启动信息结构数据元素
  uint32_t handler   句柄的地址
  uint32_t handlersize   句柄的尺寸
  uint32_t data   RAM中的迷你驱动程序数据地址
  uint32_t datasize   迷你驱动程序数据的尺寸
  uint32_t handlerdatacnt   用于表示由迷你驱动程序存储的字节总数的整数的地址
  uint32_t msec   最小轮询时间
  uint32_t irq   中断信息
  uint32_t exceptptr   例外句柄的位置
  uint32_t flags   关于当前句柄触发模式的信息
可选地,迷你驱动程序230可在引导过程的启动阶段620初始化。迷你驱动程序初始化过程可包括类似的步骤而不管初始化何时发生,不管是否在IPL 610或启动阶段620。如上所述,迷你驱动程序初始化过程可包括初始化设备,提供接收和传输函数以及句柄,可能初始化定时器和中断,以及诸如此类。取决于时序要求,迷你驱动程序230可在启动阶段620的任一点上初始化。
再次参照图6,启动程序620一旦完成,就可将控制转交622给将要初始化内核214和启动诸如标准设备驱动程序370的用户应用程序632的内核初始化阶段630。如果迷你驱动程序230已在IPL 610或者启动620阶段被初始化,则可能需要将关于迷你驱动程序230的信息传送给内核初始化阶段630。该信息可例如通过在系统页216中创建新入口而被传送。为了简化该过程,可创建可由启动程序620调用以向内核214指示关于任何初始化的迷你驱动程序的信息的函数。可为每一个活动的迷你驱动程序230调用该函数,或者可为所有迷你驱动程序230调用一次该函数。每次调用可以例如在系统页216的迷你驱动程序部分动态地创建入口,将必要的信息存储到句柄结构410中,并保留和迷你驱动程序数据相关联的存储器。应注意的是,该存储器的内容不应被清除,因为它可能已经包含了有效的迷你驱动程序数据(诸如接收到的消息,以及诸如此类)。表3.0和表4.0中分别示出了示例性的迷你驱动程序系统页216和句柄结构。
     表3.0-示例性的系统页入口信息
  struct syspagea_entry{...syspage_entry_info smp;syspage_entry_info pminfo;syspage_entry_info mdrvinfo;...}
                    表4.0-示例性的句柄结构数据元素
  uint32_t handler   句柄地址
  uint32_t handlersize   句柄的尺寸
  uint32_t data   RAM中的迷你驱动程序数据地址
  uint32_t datasize   迷你驱动程序数据的尺寸
  uint32_t datacnt   用于表示由迷你驱动程序存储的字节总数的整数的地址
  uint32_t msec   最小轮询时间
  uint32_t irq   中断信息
  uint32_t exceptptr   例外句柄的位置
  uint32_t spare[3]   为另外的数据元素保留的空间
内核初始化阶段630可主要负责初始化内核214,该内核214然后可启动用户应用程序632,诸如标准设备驱动程序370。然而,在引导过程300的该阶段,仍然应该始终满足迷你驱动程序时序要求。迷你驱动程序暗期是在系统初始化的任何阶段期间在禁用中断的情况下,迷你驱动程序句柄510的轮询之间的时间。在暗期期间,迷你驱动程序不能响应外围设备上的硬件事件。暗期的长度必须足够短以保证不丢失以预期的外围设备的间隔速率产生的硬件事件。通过内核初始化阶段530的最长的迷你驱动程序230暗期,可定义迷你驱动程序230能支持的最大数据速率。可选地,可使用任何已知的方法来选择最大数据速率。可维持涉及迷你驱动程序句柄510的信息,诸如句柄510的当前中断(如果有的话),以及最大暗期。例如,如果迷你驱动程序230不是中断驱动的,或者如果内核初始化630试图在任一点上禁用中断,则内核214应保证仍能满足迷你驱动程序时序要求,这可能需要处理已经启用的中断的能力。例如,在IPL 610或启动程序620期间,可为迷你驱动程序230创建临时例外表。然后可将该信息从临时表转移到在内核初始化阶段630期间创建的真正的例外表。内核初始化阶段630在该过程中的各种时刻始终可调用迷你驱动程序句柄630,以满足迷你驱动程序230的时序要求。这假定创建新例外表的时间将小于最大暗期。一旦已创建了真正的例外表,内核214就可允许迷你驱动程序230中断(不管定时器或驱动程序中断驱动)继续操作。例如,迷你驱动程序句柄510可转移到真正的例外表218。内核初始化阶段630然后可在转移到真正的例外表218后,启用所有中断。可选地,或者另外地,可使用任何已知的方法来处理中断。另外,在内核初始化阶段630期间,可能有其它时间段,在这些时间段中,中断可被禁用。
取决于CPU怎样被配置成处理例外,IPL 610可以诸如通过对CPU的向量基地址寄存器(VBR)编程,来将临时例外表的位置设置在RAM中任意选择的位置处(不在真正的例外表的位置处),象在SH平台上那样。SH平台是使用Renesas生产的32位SH微处理器的任何计算机系统。启动程序620然后可在将控制转交到内核初始化阶段630之前,将VBR设置为真正的例外表的位置。例如,迷你驱动程序230临时例外表可在转移622到内核初始化阶段630之前被禁用。
一旦已引导了内核214并且真正的设备驱动程序370可运行,迷你驱动程序230就将控制转交652给真正的设备驱动程序370。例如,驱动程序370可包括向该驱动程序370通知迷你驱动程序230并触发转移控制652所需的各种操作的命令行选项。示例性转移活动可包括更改硬件的初始化(其应该至少部分地被启用),从硬件的FIFO或缓存恢复有效数据,以及将来自迷你驱动程序存储器(其地址从系统页216中检索)的数据,添加到其内部数据缓存中以使该数据可由客户应用程序获得。真正的设备驱动程序370还可要求在迷你驱动程序中断句柄410和自己的中断句柄之间的平滑转移。例如,可使用标签以使内核214用新的中断句柄替换现有的中断句柄。一旦真正的设备驱动程序370替代了中断句柄并读取了迷你驱动程序数据,就可以释放或者重新分配迷你驱动程序数据存储器。
图10示出了从迷你驱动程序230到真正的设备驱动程序370的示例性转移652。如图所示,可在步骤1010通过初始化硬件,完全或者部分地开始转移652。接着,驱动程序370可在步骤1020在系统页中定位迷你驱动程序入口,并在步骤1030附在其中断上。迷你驱动程序330接着可在步骤1040执行任何必要的清除并禁用设备中断。如果完备的驱动程序370能成功地附在中断上,则可在步骤1050重新启用中断。在步骤1060可将迷你驱动程序230数据转移到真正的驱动程序370接收缓存。任选地,可在步骤1070重新分配迷你驱动程序230数据存储器。最后,在步骤1080,在真正的驱动程序370开始正常工作前,可使迷你驱动程序数据与真正的驱动程序270接收的任何新数据同步。真正的驱动程序370可将存储在迷你驱动程序存储器缓存中的迷你驱动程序数据,存储到真正的驱动程序370的数据缓存中。可无缝地实现迷你驱动程序数据和新数据的同步,以便使数据按照从系统中的其它应用程序被接收正确顺序出现。例如,在存储缓存320中的迷你驱动程序数据被拷贝到真正的驱动程序370的数据缓存中的同时,真正的驱动程序370可从硬件接收到指示出已接收到新数据的中断。真正的驱动程序370必须能在从硬件接收新数据的同时,管理迷你驱动程序存储器缓存320的拷贝。真正的驱动程序370还可保持数据同步。真正的驱动程序370可通过将迷你驱动程序数据拷贝到开始真正的驱动程序370数据缓存的开头部分,并将接收到的新数据添加到真正的驱动程序370数据缓存的末端部分,来保持数据同步并创建无缝转移。这将允许其它应用程序在访问真正的驱动程序370接收的新数据之前首先访问迷你驱动程序230接收的数据。
虽然已描述了本发明的各种实施例,但对于本领域的普通技术人员来说显而易见的是,在本发明的范围内还可能有许多实施例和实现方案。因此,本发明除了受所附权利要求及其等价物的限制外,并不受其它限制。

Claims (20)

1.一种用于满足计算机系统中的时序要求的方法,所述计算机系统包括操作系统、存储器和至少一个外围设备,所述方法包括:
在加载所述操作系统之前加载用于所述至少一个外围设备的设备驱动程序。
2.如权利要求1所述的方法,还包括:
在加载所述操作系统之后加载用于所述至少一个外围设备的第二设备驱动程序。
3.如权利要求2所述的方法,其特征在于所述设备驱动程序的加载包括初始化所述外围设备,和使用于所述至少一个外围设备的中断与所述设备驱动程序相关联。
4.如权利要求2所述的方法,还包括:
将所述外围设备的控制从所述设备驱动程序转交给所述第二设备驱动程序。
5.如权利要求4所述的方法,其特征在于所述设备驱动程序的加载包括初始化所述外围设备,和使用于所述至少一个外围设备的中断与所述设备驱动程序相关联。
6.如权利要求5所述的方法,其特征在于所述将所述外围设备的控制转交给所述第二设备驱动程序包括:
将所述第二设备驱动程序附在所述中断上;
禁用用于所述系统的中断;
如果所述第二设备驱动程序附加成功,则重新启用用于所述系统的中断;和
将数据从所述设备驱动程序转移到所述第二设备驱动程序。
7.如权利要求6所述的方法,其特征在于所述将所述外围设备的控制转交给所述第二设备驱动程序还包括使所述被转移的数据与所述第二设备驱动程序获得的数据同步。
8.如权利要求1所述的方法,其特征在于在将所述操作系统的镜像拷贝到存储器中之前加载所述设备驱动程序。
9.一种计算机系统,包括:
能够执行指令的中央处理单元(CPU);
存储器,其与所述CPU通信并能够存储用于由所述CPU执行的指令;
操作系统,其被存储在所述存储器中并能够管理所述计算机系统的资源,所述操作系统包括内核模块;
与所述CPU通信并能够产生输入/输出请求的至少一个外围设备;
引导模块,其与所述CPU和所述存储器通信并能够加载存储器中的所述操作系统;和
设备驱动程序,其被存储在所述存储器中并能够在所述引导模块将所述操作系统加载到所述存储器中之前服务所述产生的输入/输出请求。
10.如权利要求9所述的计算机系统,其特征在于所述引导模块还能够在所述引导模块将所述操作系统加载到所述存储器中之前部分地初始化所述至少一个外围设备。
11.如权利要求10所述的计算机系统,其特征在于所述引导模块包括:
能够执行初始上电代码的初始程序加载程序(IPL);
能够将所述操作系统加载到存储器中的启动程序;和
能够初始化所述内核模块的内核初始化模块。
12.如权利要求11所述的计算机系统,其特征在于所述IPL还能够初始化所述设备驱动程序。
13.如权利要求12所述的计算机系统,还包括:
第二设备驱动程序,其被存储在所述存储器中并能够在所述内核模块被初始化之后服务来自所述至少一个外围设备的输入/输出请求。
14.如权利要求11所述的计算机系统,其特征在于所述启动程序还能够初始化所述设备驱动程序。
15.如权利要求14所述的计算机系统,还包括:
第二设备驱动程序,其被存储在所述存储器中并能够在所述内核模块被初始化之后服务来自所述至少一个外围设备的输入/输出请求。
16.如权利要求9所述的计算机系统,其特征在于所述操作系统还能够初始化存储在所述存储器中并能够服务所述产生的输入/输出请求的第二设备驱动程序。
17.一种用于在计算机系统的引导过程期间服务至少一个输入/输出请求的方法,所述计算机系统包括操作系统,所述操作系统包括内核模块和至少一个外围设备,所述至少一个外围设备能够通过总线传输输入/输出请求,所述方法包括:
在加载所述内核模块之前,加载与所述至少一个外围设备相关联的设备驱动程序,所述设备驱动程序包括
用于服务所述至少一个输入/输出请求的句柄,所述句柄在整个所述引导过程中可调用,和
数据处理组件,其与所述句柄通信并能够处理与所述至少一个输入/输出请求相关联的数据。
18.如权利要求17所述的方法,还包括:
在加载所述内核模块之后加载第二设备驱动程序,所述第二设备驱动程序还与所述至少一个外围设备相关联。
19.如权利要求18所述的方法,还包括:
将所述数据处理组件处理的数据转移到所述第二设备驱动程序。
20.如权利要求19所述的方法,还包括:
创建用于由所述设备驱动程序服务所述输入/输出请求的临时例外表;
通过所述内核模块创建用于由所述第二设备驱动程序服务所述输入/输出请求的第二例外表;和
将例外信息从所述临时例外表转移到所述第二例外表。
CNA2006100924471A 2005-06-03 2006-06-01 用于在操作系统初始化期间执行代码的系统 Pending CN1912835A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/145,373 US7461247B2 (en) 2005-06-03 2005-06-03 Method for transitioning control of a peripheral device from a first device driver to a second device driver during operating system initialization
US11/145,373 2005-06-03

Publications (1)

Publication Number Publication Date
CN1912835A true CN1912835A (zh) 2007-02-14

Family

ID=36997731

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006100924471A Pending CN1912835A (zh) 2005-06-03 2006-06-01 用于在操作系统初始化期间执行代码的系统

Country Status (6)

Country Link
US (1) US7461247B2 (zh)
EP (1) EP1736871B1 (zh)
JP (1) JP2006338664A (zh)
KR (1) KR101295447B1 (zh)
CN (1) CN1912835A (zh)
CA (1) CA2548509C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103077046A (zh) * 2012-12-21 2013-05-01 太仓市同维电子有限公司 一种计算机系统中利用网口替代串口的方法
CN103661132A (zh) * 2012-09-18 2014-03-26 鹦鹉股份有限公司 可安装在机动车内的诸如多媒体汽车收音机之类的音频/视频电子设备

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590839B2 (en) * 2005-03-22 2009-09-15 Qnx Software Systems Gmbh & Co. Kg System employing fast booting of application programs
US7461247B2 (en) * 2005-06-03 2008-12-02 Qnx Software Systems Gmbh & Co. Kg Method for transitioning control of a peripheral device from a first device driver to a second device driver during operating system initialization
US8667184B2 (en) 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US7840682B2 (en) * 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US20070011200A1 (en) * 2005-07-06 2007-01-11 Lg Electronics Inc. Operating auxiliary apparatus
US20070201059A1 (en) * 2006-02-28 2007-08-30 Radzykewycz Tim O Method and system for automatically configuring a device driver
US7624260B2 (en) * 2006-05-04 2009-11-24 Qnx Software Systems Gmbh & Co. Kg System executing a fast boot wake-up
JP5029076B2 (ja) * 2007-03-12 2012-09-19 日本電気株式会社 カーネル起動方法、カーネルソースコード最適化方法、カーネルソースコード最適化装置及びプログラム
JP5178282B2 (ja) * 2008-04-02 2013-04-10 キヤノン株式会社 情報処理装置、制御方法及びプログラム
US8302109B2 (en) * 2009-02-24 2012-10-30 International Business Machines Corporation Synchronization optimized queuing system
US8819321B2 (en) * 2010-06-03 2014-08-26 Dell Products L.P. Systems and methods for providing instant-on functionality on an embedded controller
US8868811B2 (en) * 2011-10-03 2014-10-21 Via Technologies, Inc. Systems and methods for hot-plug detection recovery
KR101863250B1 (ko) * 2012-02-17 2018-06-04 인포뱅크 주식회사 프로그램 실행 방법 및 장치와 이를 위한 기록매체
KR101869425B1 (ko) * 2012-02-26 2018-06-20 인포뱅크 주식회사 프로그램 운영 방법 및 장치와 이를 위한 기록매체
DE102013004178A1 (de) * 2012-03-16 2013-09-19 Marquardt Gmbh Schließsystem, insbesondere für ein Kraftfahrzeug
US9465621B2 (en) * 2012-12-17 2016-10-11 Itron, Inc. Priority activation of metrology driver in boot sequence
US9250922B2 (en) 2013-02-28 2016-02-02 Qualcomm Incorporated Method and apparatus for prefetching peripheral device drivers for smart phones and other connected devices prior to HLOS boot
US20150089102A1 (en) * 2013-09-23 2015-03-26 Lsi Corporation Solid state drives that cache boot data
CN103489301A (zh) * 2013-09-25 2014-01-01 东风汽车公司 一种双处理器架构的车辆运行信息采集系统和方法
WO2016007737A1 (en) * 2014-07-10 2016-01-14 Harman International Industries, Incorporated Operating system startup acceleration
US10776130B2 (en) * 2014-07-10 2020-09-15 Harman International Industries, Incorporated Operating system startup acceleration
KR102388836B1 (ko) * 2014-07-10 2022-04-20 하만인터내셔날인더스트리스인코포레이티드 운영 체제 스타트업 가속
DE102014016842A1 (de) * 2014-11-13 2016-05-19 Technisat Digital Gmbh Starten von Datendiensten einer Navigationseinrichtung eines Fahrzeugs
KR101663114B1 (ko) * 2015-01-21 2016-10-07 현대자동차주식회사 차량용 멀티미디어 단말기 및 그의 데이터 처리 방법
WO2017169449A1 (ja) * 2016-03-28 2017-10-05 村田機械株式会社 通信機器、通信機器の制御方法、及び記録媒体
US10162643B2 (en) * 2016-06-29 2018-12-25 Wipro Limited Method and system for booting automotive electronics in an electronic control unit of an automobile
US10452561B2 (en) 2016-08-08 2019-10-22 Raytheon Company Central processing unit architecture and methods for high availability systems
RU2649293C1 (ru) * 2017-04-28 2018-03-30 Акционерное общество "Лаборатория Касперского" Система и способ передачи перехваченных запросов от драйвера к драйверу в процессе инициализации драйверов
KR101984564B1 (ko) * 2018-03-21 2019-09-03 인포뱅크 주식회사 프로그램 운영 방법 및 장치와 이를 위한 기록매체
KR101984568B1 (ko) * 2018-03-21 2019-05-31 인포뱅크 주식회사 프로그램 운영 방법 및 장치와 이를 위한 기록매체
KR101984558B1 (ko) * 2018-03-21 2019-05-31 인포뱅크 주식회사 프로그램 운영 방법 및 장치와 이를 위한 기록매체
DE102019203130A1 (de) * 2019-03-07 2020-09-10 Continental Automotive Gmbh Nahtlose Audioübergabe in einem Mehrprozessor-Audiosystem
JP7180542B2 (ja) * 2019-06-03 2022-11-30 株式会社デンソー 情報処理装置および情報処理方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410709A (en) 1992-12-17 1995-04-25 Bull Hn Information System Inc. Mechanism for rerouting and dispatching interrupts in a hybrid system environment
JP3212007B2 (ja) * 1993-04-26 2001-09-25 インターナショナル・ビジネス・マシーンズ・コーポレーション オペレーティング・システム環境の起動方法およびシステム
US5694600A (en) * 1996-02-09 1997-12-02 Iomega Corporation Methods and apparatus for booting a computer having a removable media disk drive
US5978912A (en) * 1997-03-20 1999-11-02 Phoenix Technologies Limited Network enhanced BIOS enabling remote management of a computer without a functioning operating system
KR20000008628A (ko) * 1998-07-15 2000-02-07 구자홍 컴퓨터 시스템의 부팅음악 출력방법
US6272629B1 (en) * 1998-12-29 2001-08-07 Intel Corporation Method and apparatus for establishing network connection for a processor without an operating system boot
US6353885B1 (en) * 1999-01-26 2002-03-05 Dell Usa, L.P. System and method for providing bios-level user configuration of a computer system
KR100471055B1 (ko) * 2000-11-17 2005-03-07 삼성전자주식회사 컴퓨터 및 그 제어방법
US7051326B2 (en) * 2000-12-13 2006-05-23 International Business Machines Corporation Code image distribution in a multi-node network of processors
US6801994B2 (en) * 2000-12-20 2004-10-05 Microsoft Corporation Software management systems and methods for automotive computing devices
US6978018B2 (en) * 2001-09-28 2005-12-20 Intel Corporation Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment
TW588284B (en) * 2002-11-12 2004-05-21 Mitac Technology Corp Computer real-time power-on system and method
US7036040B2 (en) * 2002-11-26 2006-04-25 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
US20040143696A1 (en) * 2003-01-21 2004-07-22 Francis Hsieh Data storage system for fast booting of computer
JP3861828B2 (ja) * 2003-02-26 2006-12-27 カシオ計算機株式会社 カメラ装置、及びカメラ装置の起動方法、プログラム
US7475233B2 (en) 2003-05-20 2009-01-06 Intel Corporation Method and apparatus for displaying a language specific text string in a pre-boot environment
JP3906825B2 (ja) * 2003-06-17 2007-04-18 日本電気株式会社 計算機システム、計算機システム起動方法およびプログラム
US7174447B2 (en) * 2003-11-14 2007-02-06 Intel Corporation Providing a pre-boot driver for use during operating system runtime of a computer system
US7266727B2 (en) * 2004-03-18 2007-09-04 International Business Machines Corporation Computer boot operation utilizing targeted boot diagnostics
US7590839B2 (en) * 2005-03-22 2009-09-15 Qnx Software Systems Gmbh & Co. Kg System employing fast booting of application programs
US7461247B2 (en) * 2005-06-03 2008-12-02 Qnx Software Systems Gmbh & Co. Kg Method for transitioning control of a peripheral device from a first device driver to a second device driver during operating system initialization

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103661132A (zh) * 2012-09-18 2014-03-26 鹦鹉股份有限公司 可安装在机动车内的诸如多媒体汽车收音机之类的音频/视频电子设备
CN103661132B (zh) * 2012-09-18 2017-03-01 鹦鹉汽车股份有限公司 可安装在机动车内的诸如多媒体汽车收音机之类的音频/视频电子设备
CN103077046A (zh) * 2012-12-21 2013-05-01 太仓市同维电子有限公司 一种计算机系统中利用网口替代串口的方法

Also Published As

Publication number Publication date
KR101295447B1 (ko) 2013-08-12
US7461247B2 (en) 2008-12-02
EP1736871A2 (en) 2006-12-27
KR20060126372A (ko) 2006-12-07
JP2006338664A (ja) 2006-12-14
EP1736871B1 (en) 2018-04-04
CA2548509A1 (en) 2006-12-03
CA2548509C (en) 2012-12-04
EP1736871A3 (en) 2009-01-21
US20060277400A1 (en) 2006-12-07

Similar Documents

Publication Publication Date Title
CN1912835A (zh) 用于在操作系统初始化期间执行代码的系统
US8972699B2 (en) Multicore interface with dynamic task management capability and task loading and offloading method thereof
US20010042210A1 (en) Cryptographic data processing systems, computer program products, and methods of operating same in which a system memory is used to transfer information between a host processor and an adjunct processor
KR101255382B1 (ko) 운영체제에 친숙한 부트로더
US20160026574A1 (en) General purpose digital data processor, systems and methods
US6938253B2 (en) Multiprocessor communication system and method
US7200695B2 (en) Method, system, and program for processing packets utilizing descriptors
JP2002501248A (ja) 埋込みシステム
US10402223B1 (en) Scheduling hardware resources for offloading functions in a heterogeneous computing system
US7493435B2 (en) Optimization of SMI handling and initialization
CN112491426B (zh) 面向多核dsp的服务组件通信架构及任务调度、数据交互方法
US6154832A (en) Processor employing multiple register sets to eliminate interrupts
CN101154202A (zh) 管理多处理器计算机系统中的系统管理中断的系统和方法
EP3770759A1 (en) Wake-up and scheduling of functions with context hints
CN101499020B (zh) 具有动态工作管理能力的多处理器界面及其程序加载或卸载方法
US8732441B2 (en) Multiprocessing system
JP2002287957A (ja) キャッシュのような構造を使用してcpu設計におけるオペランド・アクセス・ステージを高速化するための方法及び装置
WO2004088481A2 (en) Mechanism for simultaneously operating multiple applications on a personal digital assistant implementing a palm operating system
EP1524597A1 (en) Method for managing threads in a memory-constrained system
CN1719416A (zh) 嵌入式并行计算系统以及嵌入式并行计算方法
US20090172684A1 (en) Small low power embedded system and preemption avoidance method thereof
WO2001086430A2 (en) Cryptographic data processing systems, computer programs, and methods of operating same
US7426582B1 (en) Method, system, and apparatus for servicing PS/2 devices within an extensible firmware interface environment
EP4187374A1 (en) Kernel restarting method
US8706923B2 (en) Methods and systems for direct memory access (DMA) in-flight status

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication