设备代理装置及其控制方法与流程

文档序号:12811181阅读:204来源:国知局
设备代理装置及其控制方法与流程

本发明涉及对在操作系统(os)的内核中注册的任意设备进行中继的硬件(设备代理装置)。



背景技术:

为了将外围设备(以下称作“设备”。)与个人电脑或智能手机等计算机连接而使用该外围设备,不仅需要计算机和设备之间的物理性连接,还需要使得计算机通过设备驱动器而识别设备并形成为双方能够进行通信的状态的、“逻辑性连接”。

一般来讲,由设备制造商方针对设备和os的每种组合作为专用程序而生成设备驱动器,并将设备驱动器与设备一起提供给用户方。成为这种提供方式的主要原因在于设备是分别根据固有的标准和规格而制造的,进一步讲,是因为设备驱动器不仅依赖于设备,而且还依赖于os。

现有技术文献

专利文献

专利文献1:日本特开平10-11384号公报

专利文献2:日本特开2004-70964号公报



技术实现要素:

发明要解决的问题

设备驱动器是针对每个设备根据固有的标准和规格而设计的程序,明确而言,是用于将设备的结构(配置)、设定所需的参数以及连接形式等与硬件有关的信息注册至内核(kernel)的程序。即,大部分是与硬件有关的信息,且由几乎不依赖于os的部分构成。但是,同时,os和设备驱动器的接口功能(在本说明书中将其称为“驱动器接口”。)嵌入于os的内核,内核不同于在os上执行的各种程序,其通过驱动器接口而执行命令、数据的通信、中断处理等。

因此,当将设备驱动器注册至内核时,为了控制作为连接目标的设备而夺取计算机的资源,根据情况,os的动作有时还会变得不稳定。

本发明是鉴于上述情况而完成的,其主要目的在于减轻对操作系统进行驱动的cpu的处理负担。

用于解决问题的方法

本发明所涉及的第一设备代理装置的特征在于,具备:多核微处理器单元(21),其能够进行处理器间通信;存储单元(22),其对记述有设备设定信息的场景序列文件(scenario-sequence-file)进行存储;以及设备接口(23),在所述微处理器单元的线程分离的状态下,利用第一处理器核对第一操作系统进行驱动,另一方面,利用第二处理器核对用于控制所述设备接口的设备驱动器进行驱动,通过所述处理器间通信而共享所述设备设定信息,并且,基于所述设备设定信息而将用于通知所述设定信息的通知用驱动器接口加载至所述第一操作系统的内核,将所述场景序列文件度读入至所述通知用驱动器,从而,利用所述第二处理器核对与所述设备接口连接的设备进行控制。

如上所述,通过分配多核处理器中的一个微处理器单元作为用于对设备进行控制的专用处理器,能够将设备的控制置于os的管理之外,能够减轻对操作系统进行驱动的cpu的处理负担。

本发明所涉及的第二设备代理装置的特征在于,具备:第一处理器(21);第二处理器(31);存储单元(22),其对记述有设备设定信息的场景序列文件进行存储;以及设备接口(23),利用第一处理器对第一操作系统进行驱动,另一方面,利用第二处理器对用于控制所述设备接口的设备驱动器进行驱动,通过总线连接而在处理器之间共享所述设备设定信息,并且,基于所述设备设定信息而将用于通知所述设定信息的通知用驱动器接口加载至所述操作系统的内核,将所述场景序列文件度读入至所述通知用驱动器,从而,利用所述第二处理器对与所述设备接口连接的设备进行控制。

本发明所涉及的第三设备代理装置的特征在于,经由设备接口而与计算机连接,该计算机具备:第一处理器(21);存储单元(22),其对记述有设备设定信息的场景序列文件进行存储;以及所述设备接口(23),所述设备代理装置具备第三处理器(61)和设备接口(63),利用第三处理器对用于控制所述设备接口的设备驱动器进行驱动,经由所述设备接口而共享所述设备设定信息,并且,基于所述设备设定信息而将用于通知所述设定信息的通知用驱动器接口加载至由所述第一处理器驱动的操作系统的内核,将所述场景序列文件读入至所述通知用驱动器,从而,利用所述第三处理器对与所述设备接口连接的设备进行控制。

根据如上结构,从os侧来看,设备被抽象化,从而使得cpu的负荷分散。并且,由于在设备代理装置未残留任何信息,因此,在设备含有信息内容(contents)的情况下还能够提高防篡改性。

发明的效果

根据本发明所涉及的设备代理装置,能够减轻对操作系统进行驱动的cpu的处理负担。

附图说明

图1是表示设备驱动器的基本结构的概念图。

图2是表示内核-设备之间以及设备-设备之间的物理性或逻辑性连接方式的图。

图3是表示设备驱动器的注册方法的流程图。

图4(a)是表示包括多核处理器单元的同一壳体的计算机的基本结构的概念图,图4(b)是表示包括两部处理器的同一壳体的计算机的基本结构的概念图。

图5是表示在计算机连接有设备代理装置的整体结构的概念图。

图6是对从os观察的作为独立的硬件而连接有设备代理装置的方式进行说明的概念图。

图7(a)及图7(b)均是表示计算机系统的硬件结构的概念图。

具体实施方式

下面参照附图对本发明的各实施方式进行说明。对于同一部件或同类部件,使用同一符号或者仅使下标不同而进行表示,并省略重复的说明,但对于各实施方式的记载,应为了理解本发明的技术思想而进行合乎目的的解释,不应对实施方式的记载进行限定性的解释。

本说明书中的“设备代理装置”是从对作为使应用程序执行动作的平台的第一操作系统(通常为具备人机接口的操作系统(os),例如,windows(注册商标)、linux(注册商标)或者搭载于各种智能手机等便携式信息终端的操作系统等。)进行控制的cpu分离出专用于设备的控制的cpu,由此构成专用于设备的控制的硬件。从os侧来看,设备被抽象化,并连接有称作“设备代理装置”的硬件,从设备来看,设备不与操作系统的内核连接而是与“设备代理装置”进行物理性连接,在逻辑方面,设备与设备代理装置之间收发数据,设备代理装置对该数据向操作系统的内核进行中继。

设备代理装置所要求的最低限度的处理功能是,使设备执行动作所需的最低限度的作为设备驱动器的功能、以及与os之间对设备的动作所需的信息进行交换的通信功能。因此,只要通过原始的机器语言对设备代理装置的动作直接进行记述即可,不需要具有操作系统,即便是处理能力较低的(例如20mhz的16位的个人电脑这样的)处理器也能够执行动作。

这样,在介于操作系统的内核与设备之间并对设备进行代理的意义上,将该硬件命名为“设备代理装置”。再有,如在后述的实施例中说明的那样,还能够从设备代理装置进一步与其他设备代理装置连接而构成为“多级代理装置”。这是因为设备代理装置本身是一个“设备”。在多级代理的情况下,能够利用廉价的个人电脑而构成设备代理装置。

作为用于实现设备代理装置的一个实施方式,存在利用多核处理器单元的方法。近年来通用的个人电脑、服务器大多搭载有多核处理器单元。为了使设备代理装置执行动作,可以分配该多核处理器单元中的至少一个微处理器单元。具体而言,在操作系统的启动进程的初始阶段,启动被称为启动加载器(bootloader)的程序,此时,可以将多核处理器的作用分别分配为用于使os执行动作的处理器(或处理器组)、以及用于使设备代理装置执行动作的处理器(或处理器组)。

如上所述,设备代理装置的动作所需的处理器不需要较高的处理能力,因此单核便足够。然而,在利用多核处理器中的一个微处理器单元的情况下,具有远远高于所需处理能力的处理能力,因此,根据环境构建的容易度,在实验阶段,使用一个嵌入式操作系统(所谓的实时操作系统)来实施。

设备代理装置独立于os而执行动作,通常不会由os的用户意识到其存在。但是,因为多核微处理器单元通常具有在多核的处理器之间进行通信的处理器间通信(ipc)的机制,因此能够相互交换数据。在对cpu进行物理性分割的情况下,能够经由设备接口而相互交换数据。

能够利用该机制而共享设备的动作所需的设定信息,将设备代理装置及与其连接的设备的设定信息等向os的内核侧发送,或者能够发送例如经由人机接口而受理的、针对设备的设定信息等。

在对设备代理装置进行多级连接的情况下,或者,出于提高防篡改性的目的,在连接的设备含有机密信息的情况下,选择特意未搭载os的设备代理装置也是一种选择。

如上所述,作为用于对设备进行控制的专用处理器而分配多核处理器中的一个微处理器单元,由此能够将设备的控制置于os的管理之外。例如,与1gbit/s的以太网(注册商标)连接的网卡设备在1秒钟内将10亿次的中断处理信号发送至操作系统的内核,但是如果经由设备代理装置进行连接,则该动作全部由设备代理装置来处理,因此能够减轻对操作系统进行驱动的cpu的处理负担。

再有,多核处理器启动多个线程,在设为双核处理器的情况下,与单核相比,动作速度达到其两倍,即便如此,四核处理器的动作速度也为单核的动作速度的4倍以下,即使核数进一步增加,处理速度也不会成比例地增加。因此,从os来看,即使减少一个左右的处理器,通过将其一项任务(task)专设为对设备的管理,从os来看,设备也被抽象化为“用于经由以太网(注册商标)而对tcp/ip协议数据包进行通信的一个设备”而并非“千兆工作卡”,从整体来看,减轻了cpu的处理负担。

如上所述,从os侧来看,设备代理装置本身是设备,在一个以上的设备代理装置连接有作为最终的控制对象的原本的设备。设备的控制基本上通过如下程序而进行:利用称作“设备驱动器”的程序而与操作系统的内核之间对设备的设定信息和连接路径等信息进行通信,因此,还必须将设备的设定信息的一部分或全部通知给设备代理装置。这些信息能够经由处理器间通信、总线连接或者设备接口而彼此共享。

接着,对作为用于使本发明的设备执行动作的程序的“设备驱动器”进行说明。其中,下述说明中的设备的设定信息包括经由设备代理装置而连接的作为最终的控制对象的设备的设定信息。

(第一实施方式)-设备驱动器的基本结构-

图1是表示设备驱动器的基本结构的概念图。设备驱动器10是位于os的内核11与设备12之间的程序,基本构造由(a)驱动器接口10a、(b)设备驱动器主体10b、(c)设备接口10c这3个构造构成。

实际上存在多种设备,但是无论何种设备,基本上所有的设备驱动器均具有如图1所示的构造。从设备12侧观察,比驱动器接口10a靠对面侧的区域是以用户权限进行操作的区域(用户区13),近前侧是以管理者权限进行操作的区域(管理者区14)。

但是,现有的设备驱动器将(a)~(c)全部都作为一个程序而由设备制造商方生成并发布给用户,但本实施方式的设备驱动器则采用分离为实现(a)的功能的程序、以及对(b)和(c)的动作所需的设备设定信息进行记述的文件的结构。

(a)驱动器接口

驱动器接口是位于os和设备驱动器的边界的接口,基本上根据每种os而不同,但是,其功能相同而不依赖于os。以下示出驱动器接口的主要功能(function)的例子。

1.初始化(对设备进行初始化)

2.打开(打开设备)

3.关闭(关闭设备)

4.读(从设备读出命令、数据)

5.写(向设备写入命令、数据)

6.i/o控制(非标准化的设备的控制)

设备和内核的接口功能通过使用设备处置器(devicehandler)(以下称作“处置器”。)而实现。处置器是在由内核管理的内存上展开的程序中的一种。通常处于待机状态,但是,与通常的程序不同,是在产生了特定的处理请求(事件、中断)时被调用的子例程(subroutine)程序。当将驱动器设定信息向内核注册时,使用该处置器将设备驱动器的主体10b所保有的各种设备设定信息通知给内核。

驱动器接口10a是依赖于os的部分,基本上若在安装针对某os的设备驱动器时一旦生成,只要os和使内核工作的处理器不改变,以后就不会改变。与此相对,以下说明的设备驱动器主体10b和设备接口10c均是依赖于设备的结构的部分,因此,只要设备及其连接方法(与设备的接口)相同,则不依赖于os而共通。从设备驱动器10的整体来看,驱动器接口10a不过是极小的部分而已。

(b)设备接口

设备接口是从os的内核侧观察的与设备之间的接口,存在物理性接口和逻辑性接口(逻辑数据包接口)这两种接口。设备接口是应对与硬件之间的物理性连接形式(接线方面的问题)的部分。在物理性接口中,使所注册的设备的寄存器在内核的内存映射上展开。这是主要应对内存共享和中断处理的物理性总线连接,根据设备的连接形式的不同,例如存在内存映射寄存器(pci总线连接)、i2c(inter-integratedcircuit:内部集成电路)总线接口、spi(serialperipheralinterface:串行外设接口)等通信型寄存器等。

另一方面,逻辑性接口例如是利用字符串或二进制流等的、符合规定的协议的一组数据(protocolpacketdate:协议分组数据)来描述并控制设备的动作的接口。当简称作设备接口时,根据上下文逻辑关系,表示物理性接口和逻辑性接口中的任一者或两者。

另外,设备接口具有用于收发中断信号的中断线路(line)。中断处理承担通过注册型的处置器来控制设备侧的状态变化的作用。例如,以设备是照相机模块的情况为例,“按下快门”之类的事件的处理通过中断处理而进行。当按下快门时,从内核读出中断处置器,作为其结果,读入对应的函数(子例程)。

(c)设备驱动器主体

本实施方式的设备驱动器主体10b主要对以下设定信息进行记述。

1.与设备的控制有关的设定信息

2.针对设备而设定的设定信息(赋予给设备的参数)

本说明书中的“设备设定信息”包括上述的1.(与设备的控制有关的设定信息)和2.(针对设备而设定的设定信息)这两者。另外,设定信息中不仅包括数据,还包括命令。例如,包括能够利用脚本(script)进行记述的命令(指令)例如中断等待、向寄存器的代入、dma传输指示、经由i2c/spi总线的通信、相对于内存映射寄存器的写入和读出等。

设备的控制是指与设备的本质性的动作相关的控制,包括以管理者权限而执行的控制例如设备的重置、设定变更等。另一方面,针对设备而设定的参数是指,以用户权限而设定的、用于进行与设备的使用目的及使用状况等相应的控制的参数。包括例如以相同的连接形式且利用相同的打印机但对打印机的用纸进行变更、对照相机的模式(虽然传感器和透镜相同,但根据场景而在全景、动态图像、静态图像的模式之间切换等)进行设定之类的、从设备来看(除了特殊情况以外)完全无法以电气的方式检测到的设备的设定信息。设备驱动器主体本来就是依赖于设备的部分,因此,基于由设备制造商方提供的信息而确定。

如上所述,构成设备驱动器的核心的设备驱动器主体保有设备的各种参数、针对驱动器接口10a和设备接口10c的命令等与设备相应的各种设定信息。该部分相对于设备(硬件)的依赖性较高,但几乎不依赖于os。但是,在现有的设备驱动器中,虽然结构的大部分是取决于设备、连接方法的共通部分,但是由于结构的一部分依赖于os,因此设备驱动器整体依赖于os。

与此相对,本实施方式的设备驱动器以如下方式构成:针对每种os而准备一个仅承担依赖于os的“(a)驱动器接口”这部分的功能的“通知用驱动器”,从将其向内核注册时开始,在设备的初始化时经由“通知用驱动器”而将不依赖于os(但依赖于设备)的设备设定信息读入至内核,由此能够由用户于事后以用户权限而自由地改写设备设定信息。

这样,在初始化时读入设备设定信息并在主线程之前确定功能的排序(寄存器的排序)。这是因为,如果在运行过程中确定则会耗费时间。多数情况下,向寄存器写入时的动作根据设备制造商的不同而不同,但是用户的需求是确定的,多数情况下,即使寄存器的排序不同,所实现的功能也大致相同。例如,以照相机模块为例,

·照相机a

寄存器#1.变焦

寄存器#2.对焦

·照相机b

寄存器#1.对焦

寄存器#2.变焦

即使在像这样寄存器的排序不同的情况下,仅通过变更在设备设定信息中规定的参数来改变寄存器的排序,就能够应对照相机a、b这两者。

这样,本发明的设备驱动器将不特定设备的“设备设定信息的通知用驱动器”加载至内核中,在对设备进行初始化时将设备设定信息读入至通知用驱动器,并将设备设定信息通知给内核,由此,能够确定自身的设备的动作。再有,通知用驱动器由c语言等生成(编程),一旦生成,只要os和处理器不变,就能够反复利用相同的通知用驱动器。

在本实施方式中,将设备设定信息记述在被称作“场景序列文件”的脚本(script)形式的文件中。在加载通知用驱动器并对设备进行初始化时,例如,通过读入记述有“是经由i2c接口对语音信息进行通信的麦克风设备”这样的设备设定信息的场景序列文件,从os的用户的角度来看,能够将其识别为麦克风设备。该场景序列文件依赖于设备而不依赖于os。

这样,虽然在每次初始化时都要对所需的功能进行调度(dispatch),但是实际上在向内核注册时所占用的内存量与现有的设备驱动器相比并未改变,在这一点上与现有的设备驱动器相比没有任何不利。

场景序列文件的读入处理可以说是现有的设备驱动器中不存在的多余的处理,但是,如近年来的个人电脑、智能手机等那样,在具有处理能力较高的处理器和足够的内存的情况下,即使调度的次数略微增加,处理(向内核的注册)也会在设备所请求的时间内结束,因此,不会引起什么问题。

进一步,场景序列文件中记述的命令由调用的功能的内容和顺序等构成,由于各功能实现了部件化,因此,如果预先将频繁使用的一系列功能定义为宏程序,则使用便利性较好。

关于场景序列文件的读入处理的速度,主要与从场景序列文件调用的功能的调度所需的时间有关。如果集中较多的命令则处理变快,但是会使通用性受损而变得难以使用。相反,如果应对例如“内存传输”之类的频繁使用的命令,则调度次数增加,在利用能力较弱的处理器进行读入时,还有可能在设备所请求的时间内未完成设备的识别而出现错误,需要加以注意。因此,应该考虑根据处理器的处理能力等而允许的调度次数和场景序列文件的通用性来适当地进行设计。

一般认为,容易对协议分组(protocolpacket)的处理等实施宏序列化,但在总线连接中中断处理较多的情况下实施宏序列化则效率欠佳。不管怎样,以容易使用的单位进行宏序列化则更容易使用场景序列文件。

图2是表示内核-设备之间以及设备-设备之间的物理性或逻辑性连接方式的图。图中的实线表示总线接口连接,虚线表示逻辑性接口连接。例如,内核和usb主机控制器通过总线连接而连接,与usb主机控制器连接的usb设备是指利用协议分组进行通信的逻辑性接口。例如,示出了如下情况:图中的sd主机设备通过pci总线等外部总线而与内核连接,在sd主机设备的前端,通过被称作“sd总线(或者其向上兼容的sdio总线)”的外部总线而能够连接wifi(无线局域网)模块等无线通信设备、存储卡等。

这样,无论设备具有何种设备接口,在将通知用驱动器读入内核之后,在设备的初始化时,都能够通过将相对于内核的设备的注册方法作为设备设定信息进行通知而实现与所有设备对应的设备驱动器。

而且,由于具有从os的内核侧将该“场景序列文件”,更准确而言是将至少与实际上连接的设备有关的信息通知给下级的设备代理装置的机制,从而在理论上无论多少级的设备代理装置都能够连接。在多处理器的情况下,将线程分离并通过处理器间通信而共享,能够经由逻辑性接口并使用通信路径、通信协议而向下级进行通知。

(第二实施方式)-设备驱动器的注册方法-

图3是表示第二实施方式的设备驱动器的注册方法的流程图。

-步骤s1-

在步骤s1中,将在第一实施方式中说明的通知用驱动器加载至内核。在os启动后加载设备驱动器的方法根据os而不同。例如,当os是linux(注册商标)时,使用“insmod”等命令。当os是windows(注册商标)时,如下方法较为简便:生成“.sys”之类的驱动器定义文件,以即插即用(plugandplay)的方式向os进行设备驱动器向的读入而将所需的设备设定信息注册至注册表。在其他os中也存在将设备驱动器加载至内核的命令的情况下则使用该命令。

-步骤s2-

接着,开始对设备进行初始化(步骤s2),并读入场景序列文件。在步骤s1中结束通知用驱动器的加载,使设备处于待机状态。此处,开始进行初始化,并开始读入场景序列文件。

具体而言,该初始化步骤例如包括以下处理:将设备的设定信息(参数)设定为初始值、对确定设备动作的执行脚本中所记述的执行命令进行初始化、或者,作为用于以场景序列文件为基础而生成设备驱动器的准备,在内存上确保操作区域等。

具体而言,从设备侧和内核侧分别观察该初始化步骤,其动作例如如下所示。

s2-1.设定寄存器的缺省值<外(out)侧(设备侧)>

将外侧的传感器部的寄存器(例如,当设备是照相机模块时,画面尺寸、从何处开始对焦(通常为无限大侧)、白平衡(图像色调)、曝光时间等各种设备参数)设定为初始值。再有,照相机模块仅是一个例子,意味着将所有的设备的设定值设定为初始值。

s2-2.将工作内存清空(用零填充工作内存)<内(in)侧>

通过以上的步骤,在将设备驱动器向内核注册时,始终确保相同的动作。

通过读入场景序列文件而完成初始化。

-步骤s3-

接着,执行以场景序列文件为基础而生成处置器的主线程(步骤s3)。该步骤s3特别是生成读、写、i/o控制的功能和序列的步骤,并能够以用户权限而实施。例如,还能够以用户权限使用i/o控制而改变文件的写入属性。设备驱动器在该时刻才确定自身的动作。

-步骤s4-

接着,将所生成的上述各处置器的内容作为设备驱动器而注册至内核(步骤s4)。该设备驱动器只要以能够在os上使用的状态进行注册即可,不论其方式和使用形态等如何,只要嵌入os的内核即可。

即,在通知用驱动器被读入至内核的时刻(步骤s1),作为设备驱动器的动作并未确定,从此时起对设备进行初始化并读入场景序列文件而生成处置器,在注册至内核的时刻(步骤s4)才作为设备驱动器而发挥功能。当然,从设备侧观察时,本实施方式的设备驱动器进行与现有的设备驱动器相比没有任何不同的动作。

根据以上的步骤s1~s4,计算机系统通过读入场景序列文件中记述的设备设定信息(设备参数和确定设备动作的执行脚本)而能够生成不依赖于os的设备驱动器10,通过使用该设备驱动器10而能够控制并使用与设备接口连接的设备。另外,设备驱动器10不需要以往那样的编译,因此,能够在计算机系统中容易地生成设备驱动器10。

-步骤s5-

在拆下设备时结束(terminate)。

(第三实施方式)

关于图4(a)、图4(b),图4(a)是表示包括多核处理器的同一壳体的计算机的基本结构的概念图,图4(b)是表示包括两部处理器的同一壳体的计算机的基本结构的概念图。计算机20具备多核处理器的微处理器单元(mpu)21、内存22以及设备接口23(图1中的10c)。微处理器单元21主要是cpu(centralprocessingunit:中央处理单元),也可以使用fpga(field-programmablegatearray:现场可编程门阵列)、个人电脑等各种逻辑ic。内存22是指ram(randomaccessmemory:随机存取存储器)等临时存储装置。

图4(a)为如下方式:将由多个处理器核(21a、21b、……)构成的多核微处理器单元的线程分离,对设备代理装置的动作分配一个处理器核21a,将其余的处理器核分配给os。计算机20具备多核微处理器单元21、内存22、设备接口23,并经由设备接口23而与设备12连接。此时,场景序列文件通过处理器间通信而共享。

图5是更详细地对图4(a)进行说明的结构图。示出了如下情况:在计算机20内管理用户接口的操作系统的内核能够利用处理器1a(图4(a)中的21b、21c、……)和管理设备代理装置的处理器1b将线程分离并通过处理器间通信而共享数据。设备代理装置接收场景序列文件,并经由设备驱动器10而与设备12连接。

图4(b)是cpu物理性地分离的情况。在该情况下,虽然无法使用处理器间通信,但是,当处于相同的壳体内(电路基板上)时,一般通过总线进行连接,通过该总线连接而能够共享场景序列文件。

图6是对从os观察时设备代理装置60作为独立的硬件经由设备接口23(特别是逻辑性接口)而连接的方式进行说明的概念图。设备代理装置60具备处理器61、内存62以及设备接口63,并与一个或多个设备62连接。处理器61的处理器核数只要为1个以上即可。

设备接口23、63只要是用于由微处理器单元21控制的外围设备的接口即可,具体而言,例如只要是与图2所示的各种设备连接的设备接口即可。即pci(peripheralcomponentinterconnect:外围组件互连)卡、网卡、麦克风、照相机、usb、sd卡、wifi(wirelessfidelity:无线保真)内置设备、adc(analogtodigitalconverter:模数转换器)、bluetooth(注册商标)内置设备、gps内置设备、打印机,传真机(fax)、扫描仪等。设备接口23可以是用于连接像内存22这样的临时存储装置或硬盘等存储装置的接口,也可以是用于连接键盘、鼠标或操纵杆的输入接口、用于连接显示器等其他显示装置的输出接口。再有,内存22也是外围设备,因此,例如,将内存22与未图示的作为设备接口的内存插槽连接,微处理器单元21通过内存22用的设备驱动器对内存22进行管理。

在计算机20安装有操作系统,进一步,在该os的内核注册有通过上述步骤s1~s5而生成的设备驱动器10。而且,在计算机20的设备接口23的前端连接有设备12。

图1所示的驱动器接口10a是os的上述各处置器。驱动器10发挥在驱动器接口10a(各处置器)与针对每个设备而确定的设备接口10c之间收发数据的作用。具体而言,驱动器10(10b)是用于实施通过上述步骤s3而确定的各处置器的处理的程序。

以场景序列文件为基础而生成如上所述的设备驱动器10,由此,计算机20能够与设备12之间收发与设备之间的通信数据。

(实施例)-场景序列文件的具体例-

以下举出记述有设备设定信息的场景序列文件的一个例子。

场景序列文件是对与设备接口连接的设备的设备参数以及用于生成处置器的执行脚本进行记述的文件,且是脚本形式的文件,因此,还可以由能够利用文本编辑器编辑的程度的文件大小非常小(例如两千字节以下)的文本数据构成。也可以通过安装而利用javascript(注册商标)或xml等不依赖于os、计算机硬件(mpu)的中间语言的形式进行记述。

为了将设备注册至内核所需的信息是:

(a)与设备接口有关的信息;

(b)与设备的动作内容有关的信息;

(c)与连接目标设备有关的信息。

只要将这些信息记述于场景序列文件中、且经由通知用驱动器而向内核注册即可。

无需如以往那样即使结构信息略微变更也要从源代码改写设备驱动器并再次进行编译,仅改写场景序列文件的一部分并重新对设备进行初始化即可。

例如,存在如打印机那样的即使是同一个设备也能够实现多种连接形式的设备。能够与网络连接的打印机在能够进行usb连接或串行连接的情况下,驱动器接口和设备驱动器主体的结构并没有不同,只是设备接口不同。若确定了连接方式此后就不会改变,因此,只要在安装前决定安装哪个设备接口即可。当欲从usb连接变更为网络连接(ethernet(注册商标)连接)时,在启动了os的状态下、且不将设备驱动器关闭地再次对设备进行初始化,仅通过通知用驱动器将修改了表示路径信息被变更的设备接口的部分的场景序列文件读入即可。

以下,对场景序列文件中定义的设备设定信息(命令和参数等)的例子进行说明。

[处理命令定义]

处理命令定义对执行命令进行记述,该执行命令对场景本身进行记述。再有,将依赖于设备(硬件)而确定的中断编号作为“int1”等保留字来处理。

处理命令:处理内容

waitintr(n):等待中断idn的中断

write$addr:将从os接收到的数据写入$addr

write$addr,size:从$addr写入从os接收到的数据

writedata,$addr:将data写入$addr

read$addr,size:从$addr将size大小的数据返还给os

copy$add1,$add2,size:从$add1向$add2传输size字节的数据

copy$add1,$add2,size:从$add1向$add2传输size字节的数据

copy#dataset(n):传输数据集idn

resdata:将data返还给os

andmask,$addr:对$addr的数据和mask实施逻辑与,并将结果反映到条件分支式

ormask,$addr:对$addr的数据和mask实施逻辑或,并将结果反映到条件分支式

ifelseendif:场景的条件分支

whileendwhile:对while~endwhile之间进行条件循环

fornendfor:对for~endfor之间进行n次循环

exit:结束接口

除此以外,在处理命令定义中,还对包括dma传输、mutex等的同步机制等处理命令进行记述。

[数据集定义]

数据集定义对将一个或多个数据作为一个集合的数据集的定义进行记述。数据集能够定义任意名称的数据串。在数据串中对寄存器和定义内容、写入后的定时等进行记述。数据集预先注册有多个样式,与目的、情况相应地区分使用。

数据集的定义:定义内容

b$addrandmaskn:将数据集b定义为“在$addr的内容中写入一个字节的mask的逻辑与并等待n毫秒”的数据串

w$addrormaskn:将数据集w定义为“在$addr的内容中写入两个字节的mask的逻辑或并等待n毫秒”的数据串

l$addrdatan:将数据集l定义为“在$addr的内容中写入四个字节的data并等待n毫秒”的数据串

接着,以下举出设备驱动器的一个例子,该设备驱动器以场景序列文件为基础对os的各处置器([init]、[term]、[open]、[close]、[i/o-ctrl]、[read]、[write]、[main_thread])分配包括设备参数以及处理命令定义和数据集定义在内的执行脚本而构成各处置器的处理。通过使用该设备驱动器,能够针对在任意定时收发规定大小的数据包的设备、例如加速度传感器而控制相对于内存映射寄存器的读写。再有,在以下的一部分中追加了“//注释”。

如上所述,指令是比较简单的程序。为了确定作为设备驱动器的功能,利用文本编辑器在场景序列文件中对场景(指令的顺序)进行记述,针对由编译通过后的场景所记述的处理内容(例如具有查询表的处理内容),分配各接口(六种)作为回调处置器。读入场景序列文件的方法利用打开、读、写、关闭等功能。另外,当存在中断时进行中断等待。

再有,针对一系列的操作,在由并非设备制造商的用户等第三方从设备制造商得到设备设定所需的参数而生成场景序列文件时,如果对场景的脚本内容本身进行变更,则驱动器的动作有可能发生异常。因此,在这样的情况下,也可以设计成能够借助并非文本文件的其他应用工具等生成、修改场景序列文件,并且不对非必要的设定进行变更等。

(第四实施方式)

图7(a)和图7(b)均是表示计算机系统的硬件结构的概念图。计算机a驱动os,主要执行要求较高的计算处理能力的程序,由被抽象化的设备b进行设备的控制,因此,不会从设备侧直接接收到中断处理等的使计算中断的事件。设备代理装置b~e均是搭载有嵌入式操作系统的设备代理装置,在各设备代理装置分别连接有例如输入设备、音响设备、硬盘等存储设备、网络设备之类的各种设备a、b、c、d、e。在本实施方式中,关于设备代理装置的处理器,越是下级则使用越低速的处理器。例如,在设备代理装置b中使用廉价的100mhz的16位个人电脑,在设备代理装置c、d及e中使用更廉价的20mhz的16位个人电脑。或者,当计算机a具有多核微处理器单元时,可以将设备代理装置b的处理器作为其中的一个处理器核。

计算机a保有包括为了使设备a~e执行动作所需的所有设备设定信息的场景序列文件。当构成为一个场景序列文件保有一个设备设定信息时,如果存在五种设备,则需要五个场景序列文件。当然,根据设计的不同,可以将用于使多个设备执行动作的各个设备设定信息汇总到一个场景序列文件。

各设备代理装置b~e从输入侧(上级侧)经由设备接口而接收场景序列文件。例如,根据i2c、spi、wi-fi、uart之类的各种接口的信息,从记述有连接路径、通信协议的场景序列文件取入所需的数据并对设备进行设定。但是,可以不从上级接收场景序列文件,而是直接在自身的设备代理装置保有对设备设定信息进行记述的数据。

逻辑数据包是连续的流数据,因此,例如能够以八个字节的ascii字符的数据形式来描述表示控制对象的设备名的“符号(symbol)”,并将所需的信息记述于逻辑数据包的标题(header)中而发送数据。在实验中,可以以“大小、符号、可变长度数据”的数据串形式而构成逻辑数据包数据。

这样,在共享场景序列文件的同时从计算机的处理中分离出与设备有关的处理,在设备代理装置侧进行设备的控制,由此,能够减轻对操作系统进行驱动的cpu的处理负担。另外,即使在将设备的连接方式例如从图7(a)变更为图7(b)的情况下,从计算机来看,由于设备已经被抽象化,因此只要能够在应用程序所请求的时间内接收到所需的数据,无论下级的设备如何,场景序列文件都不会改变,而不会对动作产生影响。进一步,当对硬盘等包含信息内容的设备进行连接时,由于设备代理装置未保有任何信息,因此,只要预先在计算机和硬盘之间进行加密,则即使硬盘被盗也不用担心信息泄漏。这样的系统会在银行的现金自动存取机(atm)等处理高度机密的信息的终端中发挥效果。

符号说明

10:设备驱动器

10a:驱动器接口

10b:设备驱动器主体

10c:设备接口

11:内核

12:设备

21:多核的微处理器单元(mpu)

22:内存

23:设备接口(物理性接口和/或逻辑性接口)

31、61:处理器(单核或多核)

62:内存

63:设备接口

a:计算机

b、c、d、e:设备代理装置

a、b、c、d、e:设备

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1