电子装置、控制装置以及控制方法

文档序号:10488807阅读:237来源:国知局
电子装置、控制装置以及控制方法
【专利摘要】本发明公开了一种电子装置、控制装置以及控制方法,该电子装置包括第一控制器、第二控制器以及多个装置,所述第一控制器执行第一操作系统,所述第二控制器执行第二操作系统,所述多个装置由所述第二控制器控制,所述第一控制器包括第一转换单元、命令写入单元、状态读取单元、第二转换单元、状态废弃单元、以及重置单元。
【专利说明】
电子装置、控制装置以及控制方法
技术领域
[0001 ] 本发明涉及一种电子装置、控制装置以及控制方法。
【背景技术】
[0002]在日本专利文献特开2015-5097号公报中描述了一种多处理器系统的第一处理器,该第一处理器将由在第一操作系统上运行的处理I调用的函数转换成将由所述第一操作系统和第二操作系统共同解释的命令,并且将所述转换的命令写入第二处理器的命令缓冲区51中。另外,所述第一处理器从所述命令缓冲区中读取表示由所述第二处理器对与所述写入的命令相对应的所述第二操作系统的系统调用的执行的结果的状态,将所述状态转换成可以由所述处理I解释的返回值,并且将所述返回值返回所述处理I。在所述命令写入所述命令缓冲区之后重新启动所述处理I的情况下,所述第一处理器废弃所述读取的状态,使得可以防止所述命令和所述状态之间的对应性差异。

【发明内容】

[0003]因此,本发明的目的在于,提供一种电子装置、控制装置以及控制方法,其抑制在多处理器系统的处理器之间传送命令之后在任何处理器上启动程序的情况下的误操作。
[0004]根据本发明的第一方面,提供一种电子装置,其包括第一控制器、第二控制器以及多个装置。所述第一控制器执行第一操作系统。所述第二控制器执行第二操作系统。所述多个装置由所述第二控制器控制。所述第一控制器包括:第一转换单元,其将由在所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和所述第二操作系统共同解释的命令;命令写入单元,其将通过在所述第一转换单元的所述转换获得的所述命令写入所述第二控制器的存储区域中;状态读取单元,其从所述存储区域中读取表示由所述第二控制器对所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与由所述命令写入单元写入的所述命令相对应;第二转换单元,其将由所述状态读取单元读取的所述状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理;状态废弃单元,其在由所述命令写入单元进行的所述命令的写入之后重新启动所述处理的情况下,为每个通信信道废弃由所述状态读取单元读取的所述状态;以及重置单元,其在由所述命令写入单元进行的所述命令的写入之后重新启动所述处理的情况下,为每个通信信道重置在执行所述系统调用的所述第二控制器上运行的软件以及由所述系统调用调用的驱动程序控制的装置。
[0005]根据本发明的第二方面,在所述第二控制器执行所述第二操作系统的系统调用的情况下,所述重置单元可以中断所述第二操作系统的系统调用,接着为每个通信信道重置在执行所述系统调用的所述第二控制器上运行的所述软件以及由所述系统调用调用的所述驱动程序控制的所述装置。
[0006]根据本发明的第三方面,所述重置单元可以是在所述第一控制器上运行的所述第一操作系统的软件,可以为每个通信信道设置,并且可以通过发布重置命令而重置在执行所述系统调用的所述第二控制器上运行的所述软件以及由所述系统调用调用的所述驱动程序控制的所述装置。
[0007]根据本发明的第四方面,提供一种电子装置,其包括第一控制器、第二控制器以及多个装置。所述第一控制器执行第一操作系统。所述第一控制器执行第一操作系统。所述第二控制器执行第二操作系统。所述多个装置由所述第二控制器控制。所述第一控制器包括:第一转换单元,其将由在所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和所述第二操作系统共同解释的命令;命令写入单元,其将通过在所述第一转换单元的所述转换获得的所述命令写入所述第二控制器的存储区域中;状态读取单元,其从所述存储区域中读取表示由所述第二控制器对所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与由所述命令写入单元写入的所述命令相对应;第二转换单元,其将由所述状态读取单元读取的所述状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理;重置单元,为每个通信信道重置在执行所述系统调用的所述第二控制器上运行的软件以及由所述系统调用调用的驱动程序控制的装置;以及命令重写单元,其为被进行重置的所述通信信道将与已经由所述第二控制器执行的所述第二操作系统的系统调用相对应的所述命令重写到所述第二控制器的存储区域中。
[0008]根据本发明的第五方面,提供一种控制装置,其包括第一转换单元、命令写入单元、状态读取单元、第二转换单元、状态废弃单元以及重置单元。所述第一转换单元将由在所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和由第二控制器执行的第二操作系统共同解释的命令。所述命令写入单元将通过在所述第一转换单元的所述转换获得的所述命令写入所述第二控制器的存储区域中。所述状态读取单元从所述存储区域中读取表示由所述第二控制器对所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与由所述命令写入单元写入的所述命令相对应。所述第二转换单元将由所述状态读取单元读取的所述状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理。所述状态废弃单元在由所述命令写入单元进行的所述命令的写入之后重新启动所述处理的情况下,为每个通信信道废弃由所述状态读取单元读取的所述状态。所述重置单元,在由所述命令写入单元进行的所述命令的写入之后重新启动所述处理的情况下,为每个通信信道重置在执行所述系统调用的所述第二控制器上运行的软件以及由所述系统调用调用的驱动程序控制的装置。
[0009]根据本发明的第六方面,提供一种控制装置,其包括第一转换单元、命令写入单元、状态读取单元、第二转换单元、重置单元以及命令重写单元。所述第一转换单元将由在所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和由第二控制器执行的第二操作系统共同解释的命令。所述命令写入单元将通过在所述第一转换单元的所述转换获得的所述命令写入所述第二控制器的存储区域中。所述状态读取单元从所述存储区域中读取表示由所述第二控制器对所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与由所述命令写入单元写入的所述命令相对应。所述第二转换单元将由所述状态读取单元读取的所述状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理。所述重置单元为每个通信信道重置在执行所述系统调用的所述第二控制器上运行的软件以及由所述系统调用调用的驱动程序控制的装置。所述命令重写单元为被进行重置的所述通信信道将与已经由所述第二控制器执行的所述第二操作系统的系统调用相对应的所述命令重写到所述第二控制器的存储区域中。
[0010]根据本发明的第七方面,提供一种控制方法,其包括:将由所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和第二操作系统共同解释的命令;将通过所述转换获得的所述命令写入存储区域中;从所述存储区域中读取表示由所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与所述写入的命令相对应;将所述读取的状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理;在进行所述命令的写入之后重新启动所述处理的情况下,为每个通信信道废弃所述读取的状态;以及在进行所述命令的写入之后重新启动所述处理的情况下,为每个通信信道重置软件和装置。
[0011]根据本发明的第七方面,提供一种控制方法,其包括:将由在所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和第二操作系统共同解释的命令;将通过所述转换获得的所述命令写入存储区域中;从所述存储区域中读取表示由所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与所述写入的命令相对应;将所述读取的状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理;为每个通信信道重置软件和装置;以及为被进行重置的所述通信信道将与所述第二操作系统的系统调用相对应的所述命令重写到所述存储区域中。
[0012]根据本发明的第一、第五和第七方面,可以在多处理器系统的处理器之间传送命令之后在任意处理器上启动程序的情况下抑制误操作。
[0013]根据本发明的第二方面,可以在中断正在执行的所述第二操作系统的系统调用之后重置执行与命令相对应的操作系统的系统调用的软件和装置。
[0014]根据本发明的第三方面,在所述第一控制器上运行的所述第一操作系统的软件可以通过发布每个通信信道的重置命令而重置所述软件以及执行与所述命令相对应的所述操作系统的系统调用的装置。
[0015]根据本发明的第四、第六和第八方面,在进行重置之前执行的命令可以在进行所述重置之后重写并再次执行。
【附图说明】
[0016]将基于下列附图详细说明本发明的示例性实施例,其中:
[0017]图1是示出单处理器系统的基本软件配置的图表;
[0018]图2是示出多处理器系统的基本软件配置的图表;
[0019]图3是示出根据示例性实施例的硬件配置的图表;
[0020]图4是示出根据示例性实施例的多处理器系统的软件配置的图表;
[0021]图5是示出命令的格式的图表;
[0022]图6是示出状态的格式的图表;
[0023]图7是不出表格的图表;
[0024]图8是状态废弃功能的初始化处理的流程图;
[0025]图9是open方法中的所述状态废弃功能的处理的流程图;
[0026]图10是write方法中的所述状态废弃功能的处理的流程图;
[0027]图11是read方法中的所述状态废弃功能的处理的流程图;以及
[0028]图12是示出重置操作的流程图。
【具体实施方式】
[0029]在示例性实施例中,提供基本配置,例如包括两个中央处理器(CPU)的所谓的多处理器系统。然而,在下文中,将说明单处理器系统的基本软件配置和多处理器系统的基本软件配置。在下文提供的说明中,为方便起见,将软件组件定义成操作对象。
[0030]图1是示出单处理器系统的基本软件配置的图表。操作系统(OS) 10包括用于控制多个装置(图1中未示出)的驱动程序7、8和9。处理1、2和3形成多个应用程序。处理1、2和3分别通过应用程序接口(API)4、5和6由系统调用11调用驱动程序7、8和9。调用的驱动程序7、8和9执行与系统调用11的内容相对应的处理,并且通过API 4、5和6将表示对应的处理执行结果的返回值12返回处理1、2和3。
[0031]图2是示出多处理器系统的基本软件配置的图表。处理1、2和3在第一控制器100的一侧运行,而驱动程序7、8和9在第二控制器200的一侧运行。因此,处理1、2和3通过第一 OS 20的公用程序库执行系统调用11。具体地,通过API 13、14和15调用的系统调用11可以事先与由程序库16、17和18解释的函数27相关联。或者,处理1、2和3可以配置成直接调用函数27。当调用函数27时,为将函数27的内容传送给第二 OS 23,程序库16、17和18将函数27转换成将由第一 OS 20和第二 OS 23共同解释的命令29,并且将命令29传送给OS间通信驱动器19。OS间通信驱动器19通过OS间通信向OS间通信驱动器22传输命令29。任一类型的接口均可以用于OS间通信。在示例性实施例中,将描述其中使用外围部件互联Express (PCI Express (注册商标))(下文缩写为“PCIe”)的示例。
[0032]OS间通信驱动器22将接收到的命令29传送给任务24、25和26。在接收到命令29之后,任务24、25和26将命令29转换成将分别由驱动程序7、8和9解释的系统调用11,并且分别通过API 4、5和6由系统调用11调用驱动程序7、8和9。调用的驱动程序7、8和9执行与系统调用11对应的处理,并且通过API 4、5和6将表示对应的处理执行结果的返回值12返回任务24、25和26。
[0033]当接收到返回值12之后,为将返回值12的内容传送给第一 OS 20,任务24、25和26将返回值12转换成将由第一 OS 20和第二 OS 23共同解释的状态30,并且将状态30传送给OS间通信驱动器22。OS间通信驱动器22通过OS间通信向OS间通信驱动器19传输状态30。OS间通信驱动器19将接收到的状态30传送给程序库16、17和18。在接收到状态30之后,程序库16、17和18分别将状态30转换成将由处理1、2和3解释的返回值28,并且分别通过API 13、14和15将返回值28分别返回处理1、2和3。因此,可以通过多处理器系统获得与当处理1、2和3直接调用单处理器系统中的驱动程序7、8和9时获得的处理结果相同的处理结果。
[0034]接着,将描述根据示例性实施例的配置。图3是示出根据示例性实施例的硬件配置的图表。图4是示出根据示例性实施例的软件配置的图表。图像形成装置1000是根据本发明的示例性实施例的电子装置的示例。图像形成装置1000的外围部件是第一控制器100、第二控制器200以及装置300。第一控制器100控制第二控制器200。第二控制器200控制装置300。
[0035]第一控制器100包括诸如CPU 101的运算单元、诸如随机存取存储器(RAM) 102和只读存储器(ROM) 103的存储单元、通信接口(I/F) 104、诸如硬盘驱动器(HDD) 105的外部存储单元,以及局域网(LAN)终端106。这些部件连接到总线110上。CPU 101使用RAM 102作为工作区并且执行程序。引导装载程序等存储在ROM 103中。例如,通信I/F 104是PCIe插槽,并且通过信号线连接到通信I/F 204上,该通信I/F 204是配置在第二控制器200上的PCIe插槽。第一 OS 20、应用程序等存储在HDD 105中。当向图像形成装置1000供应电源时,CPU 101从ROM 103中读取引导装载程序,从HDD 105中读取第一 OS 20,并且根据引导装载程序中描述的程序执行第一 OS 20。例如,第一 OS 20是Linux(注册商标)。信号线连接到LAN终端106上,并且CPU 101通过LAN与外部信息处理装置等进行通信。
[0036]第二控制器200包括诸如CPU 201的运算单元、诸如RAM 202和ROM 203的存储单元,以及通信I/F 204。这些部件连接到总线210上。CPU 201使用RAM 202作为工作区并且执行程序。第二 OS 23存储在ROM 203中。CPU 201从ROM 203中读取第二 OS 23,并且根据来自第一控制器100的指示执行第二 OS 23。例如,第二 OS 23是实时OS(RTOS),并且具备控制装置300的驱动程序的功能。
[0037]图像形成装置1000包括一个或多个装置300。例如,装置300是图像扫描器301、打印机302以及用户界面(UI)303等。未特别限制装置的数量。例如,图像扫描器301包括光源、光学系统、成像元件等(图3中未示出)。光源利用光照射原稿,并且在原稿上反射的反射光通过光学系统进入成像元件。接着,成像元件生成表示原稿的图像的信号,并且输出该信号。例如,打印机302包括基于图像数据形成色调图像的打印引擎、容纳诸如纸张的记录介质的容纳单元、沿传送路径传送记录介质的传送机构等(图3中未示出)。打印机302利用电子照相法将基于通过第二控制器200从第一控制器100提供的图像数据的图像打印到记录介质上。例如,UI 303包括触控面板、键盘等(图3中未示出),并且接收用户的操作。在触控面板上,显示由用户操作的用于操作图像形成装置1000的虚拟操作器、表示图像形成装置1000的状态的信息等。键盘包括用于发布启动和停止图像形成装置1000的操作的指示的按键、数字键用于输入数字等。
[0038]在示例性实施例中,OS间通信驱动器19和OS间通信驱动器22通过命令缓冲区51和状态缓冲区52交换命令29和状态30。RAM 202的存储区域可以作为命令缓冲区51和状态缓冲区52。或者,通过提供不同于第二控制器200中的RAM 202的存储器,可以将该存储器的存储区域作为命令缓冲区51和状态缓冲区52。例如,命令缓冲区51和状态缓冲区52是先进先出(FIFO)型缓冲区,并且具备通过中断50通知OS间通信驱动器19和OS间通信驱动器22表示各个存储区域的状态的FULL (满)/NOT FULL (非满)/EMPTY (空)/NOTEMPTY (非空)信息的功能。
[0039]例如,将描述处理I调用下文所示函数27的处理I的情况。在这种情况下,处理I配置成直接调用程序库16的函数27,并且省略各种函数的返回值28的错误检查。
[0040]int param[4] = [O, O, O, O];
[0041 ] fd = do_open (DRV_1, O, O) ;/* 调用第一种函数 */
[0042]状态=do_1ctl(fd, DRV_I_READ_PARAM, &param) ;/* 调用第二种函数 */
[0043]状态=do_close(fd) ;/*调用第三种函数*/
[0044]图5是示出命令29的格式的图表。命令29是将由第一 OS 20和第二 OS 23共同解释的信息,并且包括命令头31以及命令数据32。当处理I调用函数27时,与函数27相对应的程序库16的处理例程生成命令数据32。命令数据32是包括命令识别符(ID) 39以及参数40的可变长度数据。处理例程将表示命令29的类型的识别符设定为命令ID 39,并且将函数27的变元设定为参数40。处理例程将生成的命令数据32传送给OS间通信驱动器19。
[0045]这里,函数dojoctl O,其是以上函数调用示例中的第二调用函数的第三变元作为表示存储区域的逻辑地址的指示符。然而,在第一控制器100的逻辑地址不同于第二控制器200的逻辑地址的情况下,即使指示符直接传送给第二控制器200,第二控制器200也不能访问由指示符表示的存储区域。因此,在命令数据32的生成过程中,处理例程将由指示符表示的存储区域(4字节X4= 16字节)设定为参数40而不是指示符的值。在以上示例中,由指示符表示的区域被初始化为0,并且为参数40设定的存储区域也被初始化为O。
[0046]在接收到命令数据32之后,OS间通信驱动器19生成命令头31,该命令头31是与OS间通信驱动器22进行OS间通信必需的信息。命令头31包括任务ID 35、通信信道ID36、命令ID 37以及命令大小38。OS间通信驱动器19将解释命令数据32的第二 OS 23侧的任务24的识别符设定为任务ID 35,将OS间通信用通信信道47的识别符设定为通信信道ID 36,将命令数据32的命令ID 39的设定值设定为命令ID37,并且将命令数据32的大小设定为命令大小38。OS间通信驱动器19使按照上述描述生成的命令头31与命令数据32相结合以生成命令29,并且通过OS间通信将生成的命令29写入命令缓冲区51中。接着,OS间通信驱动器19通过中断50通知OS间通信驱动器22 “非空”。
[0047]在接收到“非空”的通知之后,OS间通信驱动器22从命令缓冲区51中读取命令29,并且基于命令头31的任务ID 35确定处理命令29的任务。在该不例中,任务24是处理命令29的任务,因此OS间通信驱动器22将命令29传送给任务24。OS间通信驱动器22重复任务24的命令29的传送直到命令缓冲区51变空。当命令缓冲区51变空时,OS间通信驱动器22等待由OS间通信驱动器19通知“非空”。
[0048]在接收到命令29之后,任务24将命令数据32转换成将由驱动程序7解释的系统调用11,并且通过API 4调用驱动程序7。这里,如上所述,与以上函数调用示例中的do_1ctl O相对应的参数40并非表示逻辑地址的指示符,而是由指示符表示的存储区域(4字节X4 = 16字节)。因此,任务24将存储区域固定到第二控制器200的存储器上,初始化固定的存储区域,并且将存储区域的指示符设定为系统调用11的第三变元。驱动程序7执行系统调用11,并且将表示执行结果的返回值12返回任务24。任务24基于返回值12生成状态30。
[0049]图6是示出状态30的格式的图表。状态30是将由第一 OS 20和第二 OS 23共同解释的信息,并且包括状态头33以及状态数据34。状态数据34是可变长度数据,其包括状态ID 45以及参数46。任务24将表示与系统调用11相对应的状态的类型的识别符设定为状态ID 45。这里,任务24以与状态ID 45相对应的命令ID 39可以通过将状态ID 45的最高有效位掩码为I而获得的方式设定状态ID 45。任务24为参数46设定从驱动程序7接收到的返回值12。这里,当返回值12表示顺利完成时,在由以上函数调用示例中为与第二函数dojoctl O相对应的系统调用11的第三变元设定的指示符表示的存储区域中写入数据。因此,任务24为参数46设定数据以及返回值12。
[0050]状态头33包括任务ID 41、通信信道ID 42、状态ID 43以及状态大小44。任务24将为命令29设定的任务ID 35的设定值设定为任务ID 41,并且将为命令29设定的通信信道ID 36的设定值设定为通信信道ID 42。任务24将状态数据34的状态ID45的设定值设定为状态ID 43,并且将状态数据34的大小设定为状态大小44。任务24将生成的状态30传送给OS间通信驱动器22。在接收到状态30之后,OS间通信驱动器22将状态30写入状态缓冲区52中。接着,OS间通信驱动器22通过中断50通知OS间通信驱动器19 “非空”。
[0051]在接收到“非空”的通知之后,OS间通信驱动器19基于状态头33的通信信道ID42通过OS间通信从状态缓冲区52中读取状态30,并且确定处理状态数据34的程序库。在该示例中,由于程序库16是处理状态数据34的程序库,因此OS间通信驱动器19将状态30传送给程序库16。OS间通信驱动器19重复状态30向程序库16的传送直到状态缓冲区52变空。当状态缓冲区52变空时,OS间通信驱动器19等待由OS间通信驱动器22通知“非空”。
[0052]在接收到状态30之后,程序库16将状态数据34转换成将由处理I解释的返回值28,并且将返回值28返回处理I。这里,为与以上函数调用示例中的第二函数dojoctl O相对应的状态数据34设定数据以及将转换成返回值28的信息。因此,程序库16将数据写入由do_1ctl()的第三变元规定的地址。
[0053]<状态废弃功能>
[0054]接着,将描述状态废弃功能。在将命令29写入命令缓冲区51之后发生任何处理的异常终止的情况下,可能发生以下描述的问题。例如,下面将说明发生处理I的异常终止的情况。由程序库16将异常终止之前由处理I调用的函数27转换成命令29。将命令29写入命令缓冲区51中,并且通知OS间通信驱动器22 “非空”。接着,即使在处理I的异常终止之后,第二控制器200也继续运行。因此,将从命令缓冲区51中读取的命令29转换成系统调用11,驱动程序7根据系统调用11进行处理,并且生成表示执行结果的状态30并将其写入状态缓冲区52中。然而,当发生处理I的异常终止时,由程序库16进行的处理也中断。因此,未针对通信信道47执行read方法,并且未从状态缓冲区52中读取状态30。
[0055]当已发生异常终止的处理I重新启动时,与处理I相对应的程序库16为通信信道47执行open方法,生成重新启动之后的第一个命令29,并且将生成的命令29写入命令缓冲区51中。接着,将表示命令29的执行结果的状态30写入状态缓冲区52中,并且通知OS间通信驱动器19 “非空”。然而,由于表示在处理I的异常终止之前写入命令缓冲区51中的命令29的执行结果的状态30保持在状态缓冲区52中,当由OS间通信驱动器19读取到状态30时,在命令29和状态30之间可能发生对应性差异。因此,多处理器系统可能进行错误操作。在示例性实施例中,在第一 OS 20上配置下面描述的状态废弃功能。在OS间通信驱动器19上为每个通信信道配置实现状态废弃功能的状态废弃单元53,并且为每个通信信道执行由状态废弃单元53进行的处理。
[0056]图7是示出表格54的图表。状态废弃单元53为每个通信信道生成表格54,并且将生成的表格54存储在RAM 102或者HDD 105中。表格54是其中命令ID 541、标志542和计数器543彼此关联的表格。命令ID 541是表示命令29的类型的识别符,并且与命令ID 39和命令ID 37相同。在该示例中,命令29包括η种类型。为命令ID 541分配I到η的序号。标志542是为每个命令ID 541表明表示与命令ID 541相对应的命令29的执行结果的状态30是否有效的标志。当标志542表明ON(开启)时,状态30有效。当标志542表明OFF (关闭)时,状态30无效。标志542的ON和OFF之间的切换将在后文描述。计数器543表示通过将与命令ID 541相对应的命令29写入命令缓冲区51的次数减去从状态缓冲区52中读取与命令ID 541相对应的状态30的次数而为每个命令ID 541获得的值。
[0057]图8是状态废弃功能的初始化过程的流程图。状态废弃单元53配置在OS间通信驱动器19上,因此状态废弃功能的初始化功能包括在OS间通信驱动器19的初始化过程中。由此,状态废弃功能的初始化功能在每次第一 OS 20重新启动时执行。
[0058]在步骤SlOl中,状态废弃单元53将循环计数器加I (初始值=O)。
[0059]在步骤S102中,状态废弃单元53将与循环计数器的值对应的命令ID 541相对应的标志542初始化为0FF,并且将与命令ID 541相对应的计数器543初始化为O。
[0060]在步骤S103中,状态废弃单元53确定循环计数器是否达到η。当循环计数器未达到η时,处理返回步骤SlOl。当循环计数器达到η时,处理结束。
[0061]图9是OS间通信驱动器19的open方法中的状态废弃功能的处理的流程图。对每个通信信道进行下面描述的处理。例如,下面将描述通信信道47的情况。
[0062]在步骤S201中,处理I调用程序库16,并且程序库16为通信信道47进行open方法处理。接着,作为open方法处理的返回值,将表示通信信道47的文件描述符返回程序库
16。接着,待处理的通信信道47由文件描述符进行识别。
[0063]在步骤S202中,状态废弃单元53将循环计数器加I (初始值=O)。
[0064]在步骤S203中,状态废弃单元53使与循环计数器的值对应的命令ID 541相对应的标志542变成OFF。
[0065]在步骤S204中,状态废弃单元53确定循环计数器是否达到η。当循环计数器未达到η时,处理返回步骤S201。当循环计数器达到η时,处理结束。
[0066]图9所示的处理可以在状态废弃功能(图8)的初始化处理之后进行或者可以在异常终止后处理I的重新启动之后进行。在前一种情况下,标志542在图8所示的处理中已经初始化为0FF,因此标志542即使在进行图9所示的处理之后也保持OFF。相反,在后一种情况下,在图9所示的处理中将异常终止之前变成ON的标志改写为OFF。
[0067]图10是OS间通信驱动器19的write方法中的状态废弃功能的处理的流程图。
[0068]在步骤S301中,程序库16和OS间通信驱动器19生成命令29。具体地,与函数27相对应的程序库16的处理例程生成命令数据32,并且将命令数据32传送给OS间通信驱动器19。在接收到命令数据32之后,OS间通信驱动器19生成命令头31,并且使生成的命令头31与命令数据32相结合以生成命令29。
[0069]在步骤S302中,OS间通信驱动器19通过OS间通信将生成的命令29写入命令缓冲区51中。
[0070]在步骤S303中,状态废弃单元53确定在步骤S302中的命令29的写入是否成功。当写入成功时(步骤S303 是”),状态废弃单元53的处理进行到步骤S304。当写入不成功时(步骤S303 否”),处理结束。
[0071]在步骤S304中,状态废弃单元53将与包括在步骤S302中写入命令缓冲区51的命令29中的命令ID 541相对应的标志542改写为0N,并且将与命令ID 541相对应的计数器543加I。然后,处理结束。
[0072]总之,当命令29在命令缓冲区51中的写入成功时,将与命令29的命令ID 541相对应的标志542改写为0N,并且将计数器543加I。相反,当命令29在命令缓冲区51中的写入不成功时,与命令29的命令ID 541相对应的标志542保持0FF,并且不对计数器543进行加算。另外,在成功完成命令29在命令缓冲区51中的写入之后,处理I发生异常终止然后被重新启动的情况下,将在异常终止之前变成ON的标志在图9所示的处理中改写为OFF。
[0073]图11是OS间通信驱动器19的read方法中的状态废弃功能的处理的流程图。
[0074]在步骤S401中,状态废弃单元53通过OS间通信从状态缓冲区52中读取状态30。具体地,OS间通信驱动器19等待由OS间通信驱动器22通知“非空”。在接收到“非空”通知之后,OS间通信驱动器19通过OS间通信从状态缓冲区52中读取状态30。
[0075]在步骤S402中,状态废弃单元53确定在步骤S401中的状态30的读取是否成功。当读取成功时(步骤S402 是”),状态废弃单元53的处理进行到步骤S403。当读取不成功时(步骤S402 否”),状态废弃单元53结束处理。
[0076]在步骤S403中,状态废弃单元53确定与在步骤S401中读取的状态30对应的命令29的命令ID 541相对应的标志542是否表示OFF。这里,与状态ID 45相对应的命令ID 541通过将包括在状态30中的状态ID 45的最高有效位掩膜为I而获得。当与命令ID541相对应的标志542不表示OFF时(步骤S403 否”),状态废弃单元53的处理进行到步骤S404。当标志542表示OFF时(步骤S403 是”),状态废弃单元53的处理进行到步骤 S409。
[0077]在步骤S404中,状态废弃单元53确定与在步骤S401中读取的状态30对应的命令29的命令ID 541相对应的计数器543是否表示O。当计数器543不表示O时(步骤S404:“否”),状态废弃单元53的处理进行到步骤S405。当计数器543表示O时(步骤S404:“是”),状态废弃单元53的处理进行到步骤S407。
[0078]在步骤S405中,状态废弃单元53将与步骤S401中读取的状态30对应的命令29的命令ID 541相对应的计数器543减I。
[0079]在步骤S406中,状态废弃单元53确定在步骤S405中通过减I获得的计数器543的值是否为O。当计数器543的值不为O时(步骤S406 否”),状态废弃单元53的处理进行到步骤S407。当状态废弃单元53的值为O时(步骤S406 是”),状态废弃单元53的处理进行到步骤S408。
[0080]在步骤S407中,状态废弃单元53废弃步骤S401中读取的状态30。
[0081]在步骤S408中,状态废弃单元53将与在步骤S401中读取的状态30对应的命令29的命令ID 541相对应的标志542改写为OFF。然后,处理结束。
[0082]在步骤S409中,状态废弃单元53确定与在步骤S401中读取的状态30对应的命令29的命令ID 541相对应的计数器543是否表示O。当计数器543不表示O时(步骤S409:“否”),状态废弃单元53的处理进行到步骤S410。当计数器543表示O时(步骤S409:“是”),状态废弃单元53的处理进行到步骤S411。
[0083]在步骤S410中,状态废弃单元53将与步骤S401中读取的状态30对应的命令29的命令ID 541相对应的计数器543减I。
[0084]在步骤S411中,状态废弃单元53废弃在步骤S401中读取的状态30。然后,处理结束。
[0085]步骤S403以及后续步骤的处理将描述如下:
[0086](I)标志表示ON而计数器表示I的情况(步骤S403 否”,步骤S404 否”,步骤S406:“是,,)
[0087]由于从状态缓冲区52中读取的状态30与写入命令缓冲区51的命令29的处理结果相对应,状态废弃单元53不废弃读取的状态30。状态30由程序库16转换成返回值28,并且被返回处理I。另外,由于状态30从状态缓冲区52中读取,状态废弃单元53将与状态30对应的命令29的命令ID 541相对应的计数器543减I (步骤S405)。另外,由于与状态30相对应的命令29已经被处理,状态废弃单元53将与命令ID 541相对应的标志542改写为 OFF (步骤 S408)。
[0088](2)标志表示ON而计数器不表示O或I的情况(步骤S403 否”,步骤S404 否”,步骤S405:“否,,)
[0089]由于从状态缓冲区52中读取的状态30不与写入命令缓冲区51的命令29的处理结果相对应,状态废弃单元53废弃读取的状态30(步骤S407)。另外,由于状态30从状态缓冲区52中读取,状态废弃单元53将与状态30对应的命令29的命令ID 541相对应的计数器543减I (步骤S405)。另外,由于与状态30相对应的命令29已经被处理,状态废弃单元53将与命令ID 541相对应的标志542改写为OFF (步骤S408)。计数器不表示O或I的状态表示多处理器系统中发生故障。
[0090](3)标志表示ON而计数器表示O的情况(步骤S403 否”,步骤S404 是”)
[0091]由于从状态缓冲区52中读取的状态30不与写入命令缓冲区51的命令29的处理结果相对应,状态废弃单元53废弃读取的状态30 (步骤S407)。由于与状态30对应的命令29的命令ID 541相对应的计数器543表示0,不对计数器543进行减法。另外,由于与状态30相对应的命令29已经被处理,状态废弃单元53将与命令ID 541相对应的标志542改写为OFF(步骤S408)。计数器表示O的状态表示多处理器系统中发生故障。
[0092](4)标志表示OFF而计数器不表示O的情况(步骤S403 是”,步骤S409 否”)
[0093]当已发生异常终止的处理I被重新启动时,与所有的命令ID相对应的标志在图9所示的处理中改写为OFF。也就是说,标志542在步骤S403中表示OFF的状态表示在与标志542的命令ID 541相对应的命令29被写入命令缓冲区51中之后,处理I发生异常终止然后重新启动。因此,状态废弃单元53将计数器543减I (步骤S410),并且废弃从状态缓冲区52中读取的状态30(步骤S411)。
[0094](5)标志表示OFF而计数器表示O的情况(步骤S403 是”,步骤S409 是”)
[0095]与情况(4)类似,由于处理I在异常终止之后重新启动,状态废弃单元53废弃读取的状态30(步骤S411)。然而,由于计数器543表示0,不对计数器543进行减算。计数器表示O的状态表示多处理器系统中发生故障。
[0096]在上述情况⑴和情况(5)下,情况⑴表示在从命令29在命令缓冲区51中的写入的完成到状态30的读取期间未发生处理I的异常终止、多处理器系统中的故障等的情况。相反,在情况⑵和情况⑶下,在多处理器系统中发生故障。另外,在情况⑷和情况(5)下,在命令29写入命令缓冲区51之后发生处理I的异常终止,然后处理I重新启动。在情况(I)下,状态30未被废弃,但被转换成返回值28并且返回处理I。在其他情况下,状态30被废弃。
[0097]在上述情况(4)和情况(5)下,任务24、驱动程序7或受驱动程序7控制的装置以及处理I的状态可能不匹配。因此,为第一控制器100的应用程序的每个通信信道准备的重置功能57进行图12所示的重置操作,使得任务24、驱动程序7或受驱动程序7控制的装置可以重新启动。重置功能57发布用于重新启动任务24、驱动程序7或受驱动程序7控制的装置的命令。
[0098]图12是示出重置操作的流程图。
[0099]在步骤S501中,重置功能57将循环计数器加I (初始值=O)。
[0100]在步骤S502中,重置功能57确定与在图11所示的步骤S401中由状态废弃单元53读取的状态30对应的命令29的命令ID 541相对应的计数器543是否表示I。当计数器543表示I时(步骤S502 是”),相应命令ID的命令被处理,由此重置功能57的处理进行到步骤S503。当计数器543不表示I时(步骤S502 否”),相应命令ID的命令未被处理,由此重置功能57的处理进行到步骤S504而不进行步骤S503的处理。
[0101]在步骤S503中,重置功能57向确定为正在被处理的命令发布中止命令。
[0102]在步骤S504中,重置功能57确定循环计数器是否达到η。当循环计数器未达到η时,处理返回步骤S501。当循环计数器达到η时,处理结束。
[0103]通过OS间通信将步骤S503中发布的中止命令写入命令缓冲区51中。接着,OS间通信驱动器19通过中断50通知OS间通信驱动器22 “非空”。
[0104]在收到“非空”的通知之后,OS间通信驱动器22从命令缓冲区51中读取作为中止命令的命令29,并且基于命令头31的任务ID 35将命令29传送给任务24。
[0105]在接收到作为中止命令的命令29之后,任务24停止正在被处理的命令。
[0106]接着,在步骤S505中,第二 OS 23从正在第二控制器200上执行的软件中为已经接收到中止命令的通信信道重置与任务24相对应的软件(应用程序)。
[0107]接着,在步骤S506中,第二 OS 23从正在第二控制器200上执行的驱动程序中为已经接收到中止命令的通信信道重置驱动程序7以及受驱动程序7控制的装置。
[0108]根据本示例性实施例,在命令29写入命令缓冲区51的情况下,处理I发生异常终止然后被重新启动,表示在异常终止之前写入命令缓冲区51的命令29的执行结果的状态30被废弃,并且正在处理命令29的任务24以及受驱动程序7控制的装置被重置。因此,不仅已发生异常终止的处理1,而且包括任务24和驱动程序7的通信信道以及受驱动程序7控制的装置也可以被重置。另外,其他通信信道以及受其他通信信道的驱动程序控制的装置可以在不重置的情况下进行操作。
[0109]在命令29写入命令缓冲区51之后处理I发生异常终止然后重新启动的情况下,表示在异常终止之前写入命令缓冲区51的命令29的执行结果的状态30被废弃。因此,在已发生异常终止的处理I被重新启动之后,未发生命令29和状态30之间的对应性的差异。另外,根据本示例性实施例,当多处理器中发生故障时,读取的状态30被废弃。因此,未发生命令29和状态30之间的对应性的差异。
[0110]即使未发生处理I的异常终止,上述重置功能也可以应用。例如,当任务24、驱动程序7或者受驱动程序7控制的装置中发生故障时,重置功能57可以按照以上描述执行,并且由于故障的发生而使得处理未完成的命令29可以再次写入命令缓冲区51中。
[0111]也就是说,如果当任务24、驱动程序7或者受驱动程序7控制的装置中发生故障时执行重置功能57,则丢失文件描述符到通信信道47的分配。因此,当执行重置功能57时,要求再次执行open命令。然而,由于处理I未意识到文件描述符到通信信道47的分配已丢失,处理I调用函数27而不执行open命令。另外,由于重置功能57的执行,准备由驱动程序7处理的系统调用11也丢失。因此,不仅要求执行open命令,还要求执行1ctl命令(异步命令)。由此,在第一 OS 20上配置命令改写功能。在OS间通信驱动器19上为每个通信信道配置实现命令改写功能的命令改写单元56。为每个通信信道执行命令改写单元56的处理。
[0112]具体地,在生成并写入命令缓冲区51中的命令29是open命令的情况下,命令29保存在与入open命令保存区域中。在命令29是异步命令的情况下,命令29保存在与入命令保存区域中。在命令29既不是open命令也不是异步命令的情况下,命令29即未保存在写入open命令保存区域也未保存在写入命令保存区域中。
[0113]下面将解释同步命令和异步命令之间的差异。在同步命令的情况下,处理I不调用下一个函数27直到被调用函数27的返回值28被返回为止。另外,直到返回值28被返回为止未执行正常模式到省电模式的切换。相反,在异步命令的情况下,允许处理I在被调用函数27的返回值28被返回之前调用另一个函数27。
[0114]在命令29写入命令缓冲区51之后执行重置功能57的情况下,将保存在写入open命令保存区域中的命令29改写到命令缓冲区51中。因此,通过重置功能57的执行而丢失的系统调用在被重置后再次执行。
[0115]〈变形例〉
[0116]在上述示例性实施例中,描述了本发明应用于作为装置300包括图像扫描器301、打印机302和UI 303的图像形成装置1000的示例。然而,装置300不限于以上。另外,不限制装置300的数量。
[0117]在上述示例性实施例中,描述了 Linux作为第一 OS 20而RTOS作为第二 OS 23的示例的情况。然而,第一 OS 20和第二 OS 23可以是其他类型的OS。
[0118]在上述示例性实施例中,描述了图像形成装置1000包括第一控制器100、第二控制器200以及装置300的示例。然而,通过将具备第一控制器100的功能的控制装置和具备第二控制器200和装置300的功能的图像形成装置经由通信单元进行连接,可以实现与上述示例性实施例中的功能类似的功能。另外,用于实施第一控制器100的功能的程序可以记录在诸如光学记录介质或半导体存储器的计算机可读记录介质上并提供。另外,程序可以通过电力通信线路提供。
[0119]为了进行图示和说明,以上对本发明的示例性实施例进行了描述。其目的并不在于全面详尽地描述本发明或将本发明限定于所公开的具体形式。很显然,对本技术领域的技术人员而言,可以做出许多修改以及变形。本实施例的选择和描述,其目的在于以最佳方式解释本发明的原理及其实际应用,从而使得本技术领域的其他熟练技术人员能够理解本发明的各种实施例,并做出适合特定用途的各种变形。本发明的范围由与本说明书一起提交的权利要求书及其等同物限定。
【主权项】
1.一种电子装置,其特征在于,包括: 第一控制器,其执行第一操作系统; 第二控制器,其执行第二操作系统;以及 由所述第二控制器控制的多个装置, 其中,所述第一控制器包括: 第一转换单元,其将由在所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和所述第二操作系统共同解释的命令; 命令写入单元,其将通过在所述第一转换单元的所述转换获得的所述命令写入所述第二控制器的存储区域中; 状态读取单元,其从所述存储区域中读取表示由所述第二控制器对所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与由所述命令写入单元写入的所述命令相对应; 第二转换单元,其将由所述状态读取单元读取的所述状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理; 状态废弃单元,其在由所述命令写入单元进行的所述命令的写入之后重新启动所述处理的情况下,为每个通信信道废弃由所述状态读取单元读取的所述状态;以及 重置单元,其在由所述命令写入单元进行的所述命令的写入之后重新启动所述处理的情况下,为每个通信信道重置在执行所述系统调用的所述第二控制器上运行的软件以及由所述系统调用调用的驱动程序控制的装置。2.根据权利要求1所述的电子装置,其中,在所述第二控制器执行所述第二操作系统的系统调用的情况下,所述重置单元中断所述第二操作系统的系统调用,接着为每个通信信道重置在执行所述系统调用的所述第二控制器上运行的所述软件以及由所述系统调用调用的所述驱动程序控制的所述装置。3.根据权利要求1或2所述的电子装置,其中,所述重置单元是在所述第一控制器上运行的所述第一操作系统的软件,为每个通信信道设置,并且通过发布重置命令而重置在执行所述系统调用的所述第二控制器上运行的所述软件以及由所述系统调用调用的所述驱动程序控制的所述装置。4.一种电子装置,其特征在于,包括: 第一控制器,其执行第一操作系统; 第二控制器,其执行第二操作系统;以及 由所述第二控制器控制的多个装置, 其中,所述第一控制器包括: 第一转换单元,其将由在所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和所述第二操作系统共同解释的命令; 命令写入单元,其将通过在所述第一转换单元的所述转换获得的所述命令写入所述第二控制器的存储区域中; 状态读取单元,其从所述存储区域中读取表示由所述第二控制器对所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与由所述命令写入单元写入的所述命令相对应; 第二转换单元,其将由所述状态读取单元读取的所述状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理; 重置单元,其为每个通信信道重置在执行所述系统调用的所述第二控制器上运行的软件以及由所述系统调用调用的驱动程序控制的装置;以及 命令重写单元,其为被进行重置的所述通信信道将与已经由所述第二控制器执行的所述第二操作系统的系统调用相对应的所述命令重写到所述第二控制器的存储区域中。5.一种控制装置,其特征在于,包括: 第一转换单元,其将由在所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和由第二控制器执行的第二操作系统共同解释的命令; 命令写入单元,其将通过在所述第一转换单元的所述转换获得的所述命令写入所述第二控制器的存储区域中; 状态读取单元,其从所述存储区域中读取表示由所述第二控制器对所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与由所述命令写入单元写入的所述命令相对应; 第二转换单元,其将由所述状态读取单元读取的所述状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理; 状态废弃单元,其在由所述命令写入单元进行的所述命令的写入之后重新启动所述处理的情况下,为每个通信信道废弃由所述状态读取单元读取的所述状态;以及 重置单元,其在由所述命令写入单元进行的所述命令的写入之后重新启动所述处理的情况下,为每个通信信道重置在执行所述系统调用的所述第二控制器上运行的软件以及由所述系统调用调用的驱动程序控制的装置。6.一种控制装置,其特征在于,包括: 第一转换单元,其将由在所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和由第二控制器执行的第二操作系统共同解释的命令; 命令写入单元,其将通过在所述第一转换单元的所述转换获得的所述命令写入所述第二控制器的存储区域中; 状态读取单元,其从所述存储区域中读取表示由所述第二控制器对所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与由所述命令写入单元写入的所述命令相对应; 第二转换单元,其将由所述状态读取单元读取的所述状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理; 重置单元,其为每个通信信道重置在执行所述系统调用的所述第二控制器上运行的软件以及由所述系统调用调用的驱动程序控制的装置;以及 命令重写单元,其为被进行重置的所述通信信道将与已经由所述第二控制器执行的所述第二操作系统的系统调用相对应的所述命令重写到所述第二控制器的存储区域中。7.一种控制方法,其特征在于,包括: 将由所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和第二操作系统共同解释的命令; 将通过所述转换获得的所述命令写入存储区域中; 从所述存储区域中读取表示由所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与所述写入的命令相对应; 将所述读取的状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理; 在进行所述命令的写入之后重新启动所述处理的情况下,为每个通信信道废弃所述读取的状态;以及 在进行所述命令的写入之后重新启动所述处理的情况下,为每个通信信道重置软件和 目.08.一种控制方法,其特征在于,包括: 将由在所述第一操作系统上运行的处理调用的函数转换成将由所述第一操作系统和第二操作系统共同解释的命令; 将通过所述转换获得的所述命令写入存储区域中; 从所述存储区域中读取表示由所述第二操作系统的系统调用的执行的结果的状态,所述系统调用与所述写入的命令相对应; 将所述读取的状态转换成将由所述处理解释的返回值,并且将所述返回值返回所述处理; 为每个通信信道重置软件和装置;以及 为被进行重置的所述通信信道将与所述第二操作系统的系统调用相对应的所述命令重写到所述存储区域中。
【文档编号】G06F11/07GK105843677SQ201510644192
【公开日】2016年8月10日
【申请日】2015年10月8日
【发明人】大久保宏
【申请人】富士施乐株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1