CN107077435B - 设备驱动器注册装置以及使用该设备驱动器注册装置的设备驱动器的注册方法 - Google Patents
设备驱动器注册装置以及使用该设备驱动器注册装置的设备驱动器的注册方法 Download PDFInfo
- Publication number
- CN107077435B CN107077435B CN201580050456.1A CN201580050456A CN107077435B CN 107077435 B CN107077435 B CN 107077435B CN 201580050456 A CN201580050456 A CN 201580050456A CN 107077435 B CN107077435 B CN 107077435B
- Authority
- CN
- China
- Prior art keywords
- driver
- setting information
- interface
- kernel
- device driver
- 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.)
- Active
Links
Images
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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- 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/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
以比以往更简便的方法将设备驱动器注册至操作系统的内核。利用具备将设备设定信息通知给操作系统的内核的驱动器接口的通知用驱动器、以及记述有包括含有设备的结构信息的设备参数和用于确定设备动作的执行脚本的设备设定信息的场景序列文件,将所述场景序列文件读入至所述通知用驱动器,由此经由所述驱动器接口而将设备驱动器注册至所述内核。
Description
技术领域
本发明涉及设备驱动器注册装置以及使用该设备驱动器注册装置的设备驱动器的注册方法。
背景技术
为了将外围设备(以下称作“设备”。)与个人电脑或智能手机等计算机连接而使用该外围设备,不仅需要计算机和设备之间的物理性连接,还需要使得计算机通过设备驱动器而识别设备并形成为双方能够进行通信的状态的、“逻辑性连接”。
一般来讲,由设备制造商方针对设备和操作系统(OS)的每种组合作为专用程序而生成设备驱动器,并将该设备驱动器与设备一起提供给用户方。成为这种提供方式的主要原因在于设备是分别根据固有的标准和规格而制造的,进一步讲,是因为设备驱动器不仅依赖于设备,而且还依赖于OS。
现有技术文献
专利文献
专利文献1:日本特开平10-11384号公报
专利文献2:日本特开2004-70964号公报
发明内容
发明要解决的问题
设备驱动器是针对每个设备根据固有的标准和规格而设计的程序,明确而言,是用于将设备的结构(配置)、设定所需的参数以及连接形式等与硬件有关的信息注册至内核(kernel)的程序。即,大部分是与硬件有关的信息,且由几乎不依赖于OS的部分构成。但是,同时,对于OS和设备驱动器的接口功能(在本说明书中将其称为“驱动器接口”。)而言,调用该功能的方法、形式根据每种OS而不同。进一步,设备驱动器的安装本来就需要OS的管理者权限。
对于需要由设备驱动器保有的设备设定信息而言,有时其数量会根据设备而变得非常多,从而需要进行符合设备的特性的微调整。但是,即使是在为了该调整而仅是想略微地改变配置的情况下,也必需由设备制造方重新生成设备驱动器(编程),计算机的用户方还不能事后施加变更。
而且,一旦生成设备驱动器,便不能于事后对在设备驱动器的内部规定的各种设备设定信息进行变更。例如,当源代码由C语言等编制时,需要改写源代码,再次进行编译而生成执行形式的程序文件,并将其发布给用户。从开发设备驱动器的角度来看,该作业需要大量的劳力。
本发明是鉴于上述情况而完成的,其主要的技术问题在于,提供一种以比以往更简便的方法将设备驱动器注册至OS的内核的新机制。
用于解决问题的方法
本发明所涉及的设备驱动器的注册方法,利用具备将设备设定信息通知给操作系统的内核的驱动器接口的通知用驱动器、以及记述有设备设定信息的场景序列文件(scenario sequence file),将所述场景序列文件读入至所述通知用驱动器,由此经由所述驱动器接口而将设备驱动器注册至所述内核。
上述结构中的通知用驱动器仅具有将设备设定信息通知给操作系统的作为接口的功能。即,不包括任何依赖于设备的信息。因此,单独的通知用驱动器完全无法作为设备驱动器而发挥功能。通知用驱动器仅是依赖于OS的驱动器接口的部分,能够通用于所有设备。并且,当从设备侧接收到设备设定信息时,能够立刻通知给操作系统的内核。此处,设备设定信息包括与设备的控制有关的设定信息、针对设备而设定的设定信息(赋予给设备的参数等)、以及用于确定设备的动作的执行脚本等。
因此,在将该通知用驱动器读入至内核之后,在设备的初始化时将场景序列文件读入至该通知用驱动器,由此能够将设备的动作所需的所有设备设定信息随时且自由地注册至内核。
根据这种机制,在设备提供方,能够提高设备驱动器的开发效率,还能够大幅简化设定变更、设定值的调整(调谐)操作等。
发明效果
根据本发明所涉及的设备驱动器的注册方法,在将通知用驱动器加载至内核的状态下,在进行初始化时仅通过读入场景序列文件,就能够在计算机侧生成与所连接的设备相应的设备驱动器。因此,能够以比以往更简便的方法将设备驱动器注册至OS的内核。
附图说明
图1是表示设备驱动器的基本结构的概念图。
图2是表示内核-设备之间以及设备-设备之间的物理性或逻辑性连接方式的图。
图3是表示设备驱动器的注册方法的流程图。
图4是表示计算机的基本结构的概念图。
图5是表示照相机模块的框图。
具体实施方式
下面,参照附图对本发明的各实施方式进行说明。对于同一部件或同类部件,使用同一符号或者仅使下标不同而进行表示,并省略重复的说明,但对于各实施方式的记载,应为了理解本发明的技术思想而进行合乎目的的解释,不应对实施方式的记载进行限定性的解释。
(第一实施方式)-设备驱动器的基本结构-
图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控制(非标准化的设备的控制)
设备和内核的接口功能通过使用设备处置器(Device handler)(以下称作“处置器”。)而实现。处置器是在内核所管理的内存上展开的程序中的一种。通常处于待机状态,但是,与通常的程序不同,是在产生了特定的处理请求(事件、中断)时被调用的子例程(subroutine)程序。当将驱动器设定信息向内核注册时,使用该处置器将设备驱动器的主体10B所保有的各种设备设定信息通知给内核。
驱动器接口10A是依赖于OS的部分,基本上若在安装针对某OS的设备驱动器时一旦生成,只要OS和使内核工作的微处理器单元(MPU)不改变,则以后就不会改变。与此相对,以下说明的设备驱动器主体10B和设备接口10C均是依赖于设备的结构的部分,因此,只要设备及其连接方法(与设备的接口)相同,则不依赖于OS而共通。从设备驱动器10的整体来看,驱动器接口10A不过是极小的部分而已。
(b)设备接口
设备接口是从OS的内核侧观察的与设备之间的接口,存在物理性接口和逻辑性接口这两种接口。设备接口是应对与硬件之间的物理性连接形式(接线方面的问题)的部分。在物理性接口中,使所注册的设备的寄存器在内核的内存映射上展开。这是主要应对内存共享和中断处理的物理性总线连接,根据设备的连接形式的不同,例如存在内存映射寄存器(PCI总线连接)、I2C(Inter-Integrated Circuit:内部集成电路)总线接口、SPI(SerialPeripheral Interface:串行外设接口)等通信型寄存器等。
另一方面,逻辑性接口例如是利用字符串或二进制流等的、符合规定的协议的一组数据(Protocol Packet Date:协议分组数据)来描述并控制设备的动作的接口。当简称作设备接口时,根据上下文逻辑关系,表示物理性接口和逻辑性接口中的任一者或两者。
另外,设备接口具有用于收发中断信号的中断线路(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和微处理器单元不变,就能够反复使用相同的通知用驱动器。
在本实施方式中,将设备设定信息记述在被称作“场景序列文件”的脚本形式的文件中。在加载通知用驱动器并对设备进行初始化时,例如,通过读入记述有“是经由I2C接口对语音信息进行通信的麦克风设备”这样的设备设定信息的场景序列文件,从OS的用户的角度来看,能够将其识别为麦克风设备。该场景序列文件依赖于设备而不依赖于OS。
这样,虽然在每次初始化时都要对所需的功能进行调度(dispatch),但是实际上在向内核注册时所占用的内存量与现有的设备驱动器相比并未改变,在这一点上与现有的设备驱动器相比没有任何不利。
场景序列文件的读入处理可以说是现有的设备驱动器中不存在的处理,但是,如近年来的个人电脑、智能手机等那样,在具有处理能力较高的微处理器单元和足够的内存的情况下,即使调度的次数略微增加,处理(向内核的注册)也会在设备所请求的时间内结束,因此,不会引起什么问题。
进一步,场景序列文件中记述的命令由调用的功能的内容和顺序等构成,由于各功能实现了部件化,因此,如果预先将频繁使用的一系列功能定义为宏程序,则使用便利性较好。
关于场景序列文件的读入处理的速度,主要与从场景序列文件调用的功能的调度所需的时间有关。如果集中较多的命令则处理变快,但是会使通用性受损而变得难以使用。相反,如果应对例如“内存传输”之类的频繁使用的命令,则调度次数增加,在利用能力较弱的微处理器单元进行读入时,还有可能在设备所请求的时间内未完成设备的识别而出现错误,需要加以注意。因此,应该考虑根据微处理器单元的处理能力等而允许的调度次数和场景序列文件的通用性来适当地进行设计。
一般认为,容易对协议分组(Protocol Packet)的处理等实施宏序列化,但在总线连接中中断处理较多的情况下实施宏序列化则效率欠佳。不管怎样,以容易使用的单位进行宏序列化则更容易使用场景序列文件。
图2是表示内核-设备之间以及设备-设备之间的物理性或逻辑性连接方式的图。图中的实线表示总线接口连接,虚线表示逻辑性接口连接。例如,内核和USB主机控制器以总线连接的方式而连接,与USB主机控制器连接的USB设备是指利用协议分组进行通信的逻辑性接口。例如,示出了如下情况:图中的SD主机设备通过PCI总线等外部总线而与内核连接,在SD主机设备的前端,通过被称作“SD总线(或者其向上兼容的SDIO总线)”的外部总线而能够连接WiFi(无线局域网)模块等无线通信设备、存储卡等。
这样,无论设备具有何种设备接口,在将通知用驱动器读入至内核之后,在设备的初始化时,都能够通过将相对于内核的设备的注册方法作为设备设定信息进行通知而实现与所有设备对应的设备驱动器。
(第二实施方式)-设备驱动器的注册方法-
图3是表示第二实施方式的设备驱动器的注册方法的流程图。
-步骤S1-
在步骤S1中,将在第一实施方式中说明的通知用驱动器加载至内核。在OS启动后加载设备驱动器的方法根据OS而不同。例如,当OS是Linux(注册商标)时,使用“insmod”等命令。当OS是Windows(注册商标)时,如下方法较为简便:生成“.sys”之类的驱动器定义文件,以即插即用(Plug and Play)的方式向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,能够控制并使用与接口23连接的设备。另外,设备驱动器10无需以往那样的编译,因此,能够容易地生成设备驱动器10。
-步骤S5-
在拆下设备时结束(Terminate)。
(第三实施方式)
图4是表示计算机的基本结构的概念图。计算机20具备微处理器单元21、内存22以及设备接口23(图1中的10C)。微处理器单元21主要是CPU(Central Processing Unit:中央处理单元),也可以使用FPGA(field-programmable gate array:现场可编程门阵列)、个人电脑等各种逻辑IC。内存22是指RAM(Random Access Memory:随机存取存储器)等临时存储装置。
设备接口23只要是由微处理器单元21控制的外围设备的设备接口即可,具体而言,例如只要是与图2所示的各种设备连接的设备接口即可。即PCI(Peripheral ComponentInterconnect:外围组件互连)卡、网卡、麦克风、照相机、USB、SD卡、WiFi(WirelessFidelity:无线保真)内置设备、ADC(Analog to Digital Converter:模数转换器)、Bluetooth(注册商标)内置设备、GPS内置设备、打印机、传真机(FAX)、扫描仪等。设备接口23可以是用于连接像内存22这样的临时存储装置或硬盘等存储装置的接口,也可以是用于与键盘、鼠标连接的输入接口、用于与显示器以及其他显示装置连接的输出接口。再有,内存22也是外围设备,因此,例如,内存22与未图示的作为设备接口的内存插槽连接,微处理器单元21通过内存22用的设备驱动器对内存22进行管理。
在计算机20中安装有OS,进一步,在该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”等保留字来处理。
处理命令:处理内容
wait intr(n):等待中断ID n的中断
write$addr:将从OS接收到的数据写入$addr
write$addr,size:从$addr写入从OS接收到的数据
write data,$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):传输数据集ID n
res data:将data返还给OS
and mask,$addr:对$addr的数据和mask实施逻辑与,并将结果反映到条件分支式
or mask,$addr:对$addr的数据和mask实施逻辑或,并将结果反映到条件分支式
if else endif:场景的条件分支
while endwhile:对while~endwhile之间进行条件循环
for n endfor:对for~endfor之间进行n次循环
exit:结束接口
除此以外,在处理命令定义中,还对包括DMA传输、mutex等的同步机制等处理命令进行记述。
[数据集定义]
数据集定义用于对将一个或多个数据作为一个集合的数据集的定义进行记述。数据集能够定义任意名称的数据串。在数据串中对寄存器和定义内容、写入后的定时等进行记述。数据集预先注册有多个样式,与目的、情况相应地区分使用。
数据集的定义:定义内容
b$addr and mask n:将数据集b定义为“在$addr的内容中写入一个字节的mask的逻辑与并等待n毫秒”的数据串
w$addr or mask n:将数据集w定义为“在$addr的内容中写入两个字节的mask的逻辑或并等待n毫秒”的数据串
l$addr data n:将数据集l定义为“在$addr的内容中写入四个字节的data并等待n毫秒”的数据串
接着,以下举出设备驱动器的一个例子,该设备驱动器以场景序列文件为基础对OS的各处置器([init]、[term]、[open]、[close]、[I/O-ctrl]、[read]、[write]、[main_thread])分配包含设备参数以及处理命令定义和数据集定义在内的执行脚本而构成各处置器的处理。通过使用该设备驱动器,能够针对在任意定时收发规定大小的数据包的设备、例如加速度传感器而控制向内存映射寄存器的读写。再有,在以下的一部分中追加了“//注释”。
[init]
allocate$buffer 16;
allocate$flag 1;
exit;
[term]
free buffer;
free$flag;
exit;
[open]//不进行任何处理
exit;
[close]//不进行任何处理
exit;
[I/O-ctrl]//不进行任何处理
exit;
[read]
or.w#0001,$flag;
if//如果缓存中存在数据
read$recive_data,16;//读出数据
write.w 1,$flag
endif
exit;
[write]
write$send_reg,16;//开始读入设备
wait int1;//等待完成中断
exit;
[main_thread]//等待接收中断并读出至缓存
while;
wait int1;//等待完成中断
read$recive_data,buffer,16;//预先将数据从设备读出至缓存
write.w 1,$flag;
endwhile;
如上所述,指令是比较简单的程序。为了确定作为设备驱动器的功能,利用文本编辑器在场景序列文件中对场景(指令的顺序)进行记述,针对由编译通过后的场景所记述的处理内容(例如具有查询表的处理内容),分配各个接口(6种)作为回调处置器。读入场景序列文件的方法使用打开、读、写、关闭等功能。另外,当存在中断时进行中断等待。
再有,针对一系列的操作,在由并非设备制造商的用户等第三方从设备制造商得到设备设定所需的参数而生成场景序列文件时,如果对场景的脚本内容本身进行变更,则驱动器的动作有可能发生异常。因此,在这种情况下,也可以设计成能够借助并非文本文件的其他应用工具等生成、修改场景序列文件,并且不对非必要的设定进行变更等。
(第四实施方式)
图5是表示第四实施方式的照相机模块的框图。如图5所示,照相机主体50具有计算机20和照相机模块30。照相机模块30具有控制部31、设备接口33和传感器34、IR滤光器35、透镜36等光学系统部件。计算机20和照相机模块30的设备接口23、33彼此例如通过总线而连接。
照相机模块的控制部31根据来自计算机20或其他外部输入的信号对照相机模块的各部分进行控制。另外,照相机主体50具有未图示的显示器或触摸面板,显示器或者触摸面板显示针对照相机模块30的设定画面、利用照相机主体50拍摄的静止图像或动态图像等。再有,照相机主体50还可以具有针对存储器、各设备的接口。
需要根据目的而变更计算机20对照相机主体50的控制。在静止图像的载入、动态图像的载入、分辨率的设定、灵敏度的设定等中存在针对照相机主体50的大量的设定值,需要对每一个设定值进行画质的调整等各种调整。对于像这种照相机模块这样的光学设备而言,还存在待调整的设备参数的数量超过1000的情况,其操作需要专业知识。在这种情况下,若不进行编译便能够生成设备驱动器,则会大幅提高开发效率。
另外,着眼于能够由用户方于事后设定设备驱动器这一点,例如在出售某透镜时,只要相应地将能够进行强调远近感的拍摄的、包括设定例如白平衡、曝光、对焦等的参数的场景序列文件发布给用户,就能够由用户改写为新的设备设定信息并使用安装有该透镜的照相机而无需重新编译设备驱动器,另外,用户还能够进一步变更该设定值。
再有,在本实施方式中,作为设备而举例示出了设定参数较多、且一般而言设备驱动器的开发比较耗时的照相机模块,但经由USB(通用串行总线)的所有设备、经由并行端口或串行端口而连接的设备、经由SD总线而连接的设备、经由PCI总线或IEEE1394等的总线型设备(内部总线、外部总线的任一种都包括在内)等在使用时向内核注册的所有设备均能够成为“设备”。
符号说明
10:设备驱动器
10A:驱动器接口
10B:设备驱动器主体
10C:设备接口
11:内核
12:设备
20:计算机
21:微处理器单元(MPU)
22:内存
23:设备接口
30:照相机模块
31:控制部
33:设备接口
34:传感器
35:IR滤光器
36:透镜
50:照相机主体
Claims (6)
1.一种设备驱动器的注册装置,其中,
所述设备驱动器的注册装置具备:通知用驱动器,其具备将设备设定信息通知给操作系统的内核的驱动器接口且自身不包含任何设备设定信息;以及场景序列文件,其仅记述有不依赖于操作系统的设备设定信息,
将所述场景序列文件读入至所述通知用驱动器,由此经由所述驱动器接口而将设备设定信息注册至所述内核。
2.一种设备驱动器的注册方法,其中,
利用具备将设备设定信息通知给操作系统的内核的驱动器接口且自身不包含任何设备设定信息的通知用驱动器、以及仅记述有不依赖于操作系统的设备设定信息的场景序列文件,将所述场景序列文件读入至所述通知用驱动器,由此经由所述驱动器接口而将设备设定信息注册至所述内核。
3.根据权利要求2所述的设备驱动器的注册方法,其中,
所述通知用驱动器仅具有将设备设定信息通知给操作系统的作为接口的功能。
4.一种设备驱动器的注册方法,其中,
所述设备驱动器的注册方法包括如下步骤:
将通知用驱动器加载至内核的步骤S1,其中,该通知用驱动器具备将设备设定信息通知给操作系统的内核的驱动器接口且自身不包含任何设备设定信息;
对设备开始初始化、并读入仅记述有不依赖于操作系统的设备设定信息的场景序列文件的步骤S2;
执行以所述场景序列文件为基础而生成各处置器的主线程的步骤S3;以及
将所生成的所述各处置器的内容作为设备驱动器而注册至内核的步骤S4。
5.根据权利要求4所述的设备驱动器的注册方法,其中,
所述步骤S2包括如下步骤:
设定寄存器的缺省值的步骤S2-1;以及
将工作内存清空的步骤S2-2。
6.根据权利要求4所述的设备驱动器的注册方法,其中,
所述步骤S3包括利用表格使设备参数以及用于确定设备动作的执行脚本分别与每个处置器建立关联的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014-191562 | 2014-09-19 | ||
JP2014191562 | 2014-09-19 | ||
PCT/JP2015/074780 WO2016043040A1 (ja) | 2014-09-19 | 2015-08-31 | デバイスドライバ登録装置とこれを用いたデバイスドライバの登録方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107077435A CN107077435A (zh) | 2017-08-18 |
CN107077435B true CN107077435B (zh) | 2020-03-31 |
Family
ID=55533080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580050456.1A Active CN107077435B (zh) | 2014-09-19 | 2015-08-31 | 设备驱动器注册装置以及使用该设备驱动器注册装置的设备驱动器的注册方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10372461B2 (zh) |
JP (1) | JP5997867B2 (zh) |
CN (1) | CN107077435B (zh) |
WO (1) | WO2016043040A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018008145A1 (ja) * | 2016-07-08 | 2018-01-11 | 三菱電機株式会社 | 制御装置及び制御方法 |
JP6632765B2 (ja) * | 2017-05-17 | 2020-01-22 | 三菱電機株式会社 | 制御装置及び制御方法 |
CN107423075B (zh) * | 2017-08-28 | 2021-06-08 | 深圳传音控股股份有限公司 | 驱动的注册方法以及用户终端 |
CN111221571B (zh) * | 2018-11-26 | 2024-03-15 | 西安诺瓦星云科技股份有限公司 | 外设驱动制作方法、装置以及计算机可读介质 |
WO2021125393A1 (ko) * | 2019-12-19 | 2021-06-24 | (주)로보티즈 | 마이크로컨트롤러유닛 기반 드라이버 인식 장치 및 방법 |
CN114661379B (zh) * | 2022-04-02 | 2024-01-05 | 经纬恒润(天津)研究开发有限公司 | 车载摄像头系统的解串器驱动程序改造方法及相关装置 |
CN116541084B (zh) * | 2023-06-29 | 2023-12-15 | 深圳艾为电气技术有限公司 | 压缩机驱动器的驱动装载控制方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203774B1 (en) * | 2003-05-29 | 2007-04-10 | Sun Microsystems, Inc. | Bus specific device enumeration system and method |
JP2007265064A (ja) * | 2006-03-29 | 2007-10-11 | Sharp Corp | 記憶装置、デバイス制御装置、デバイス制御プログラム、放送受像機及びデバイス制御方法 |
CN102369577A (zh) * | 2010-06-10 | 2012-03-07 | 松下电器产业株式会社 | 回放设备、记录介质、回放方法和程序 |
CN103853383A (zh) * | 2014-03-05 | 2014-06-11 | 中南大学 | 一种在Uboot中实现触摸屏驱动的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5265252A (en) * | 1991-03-26 | 1993-11-23 | International Business Machines Corporation | Device driver system having generic operating system interface |
JPH1011384A (ja) | 1996-06-24 | 1998-01-16 | Sumitomo Metal Ind Ltd | 入出力標準化装置 |
KR100464349B1 (ko) | 2002-08-08 | 2005-01-03 | 삼성전자주식회사 | 디바이스 드라이버 제어 공통화 방법 |
JP2009252194A (ja) * | 2008-04-11 | 2009-10-29 | Nec Electronics Corp | データ処理装置、ハードウェアアクセス方法、及びハードウェアアクセスプログラム |
JP5294892B2 (ja) * | 2009-01-14 | 2013-09-18 | キヤノン株式会社 | 画像形成装置、装置、制御方法、及びプログラム |
JP2012155515A (ja) * | 2011-01-26 | 2012-08-16 | Renesas Electronics Corp | ソースデバイスドライバ及び実行モジュールの作成方法 |
JP5846016B2 (ja) * | 2012-03-30 | 2016-01-20 | 富士通株式会社 | 情報処理装置、情報処理方法、及び情報処理プログラム |
-
2015
- 2015-08-31 WO PCT/JP2015/074780 patent/WO2016043040A1/ja active Application Filing
- 2015-08-31 CN CN201580050456.1A patent/CN107077435B/zh active Active
- 2015-08-31 JP JP2016514174A patent/JP5997867B2/ja active Active
- 2015-08-31 US US15/512,810 patent/US10372461B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203774B1 (en) * | 2003-05-29 | 2007-04-10 | Sun Microsystems, Inc. | Bus specific device enumeration system and method |
JP2007265064A (ja) * | 2006-03-29 | 2007-10-11 | Sharp Corp | 記憶装置、デバイス制御装置、デバイス制御プログラム、放送受像機及びデバイス制御方法 |
CN102369577A (zh) * | 2010-06-10 | 2012-03-07 | 松下电器产业株式会社 | 回放设备、记录介质、回放方法和程序 |
CN103853383A (zh) * | 2014-03-05 | 2014-06-11 | 中南大学 | 一种在Uboot中实现触摸屏驱动的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2016043040A1 (ja) | 2016-03-24 |
JP5997867B2 (ja) | 2016-09-28 |
US20170286124A1 (en) | 2017-10-05 |
JPWO2016043040A1 (ja) | 2017-04-27 |
US10372461B2 (en) | 2019-08-06 |
CN107077435A (zh) | 2017-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077435B (zh) | 设备驱动器注册装置以及使用该设备驱动器注册装置的设备驱动器的注册方法 | |
JP4037317B2 (ja) | インシステムプログラミングのための方法および構成 | |
EP3242199B1 (en) | Flash memory controller and control method for flash memory controller | |
US9507611B2 (en) | Electronic apparatus, control device, control method, and computer readable medium | |
US8127070B2 (en) | Programmable I/O interface | |
US9886287B2 (en) | Adaptive device driver method and system | |
US9323700B2 (en) | Semiconductor integrated circuit and DMA control method of the same | |
US7930535B1 (en) | Method and apparatus for loading configuration data | |
JP7093979B2 (ja) | デバイスプロキシ装置及びそれを含む計算機システム | |
US20190236035A1 (en) | Standardized device driver having a common interface | |
US20190191079A1 (en) | Camera initialization for a multiple camera module | |
US9141321B1 (en) | Configurable printer server device | |
US10592644B2 (en) | Information protection method and device based on a plurality of sub-areas for MCU chip | |
KR102276696B1 (ko) | 집적 회로 무선장치 | |
US11968469B2 (en) | Computing apparatus, image capturing apparatus, control method, and storage medium | |
JP2006127407A (ja) | 半導体集積回路 | |
US10860397B1 (en) | Communication of data between software applications | |
CN111240726A (zh) | 一种嵌入式数据处理系统 | |
CN115190262A (zh) | 一种电子设备、视频流处理方法、设备及介质 | |
JP2001297014A (ja) | 信号処理装置及びその方法 | |
Nguyen | A CASE STUDY OF FLEXIBLE DISTRIBUTED PROCESSING SYSTEM IN COPIER DEVELOPMENT (PROPOTYPE, DRIVER, PROTOCOL) | |
Host | ADSP-BF522/ADSP-BF523/ADSP-BF524/ADSP-BF525/ADSP-BF526/ADSP-BF527 | |
JP2006048417A (ja) | Pcカードアダプタ | |
JP2006023986A (ja) | データをコピーする方法とカードリーダー装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |