CN106990971A - 一种适用于多中断数据接收的系统驱动方法 - Google Patents
一种适用于多中断数据接收的系统驱动方法 Download PDFInfo
- Publication number
- CN106990971A CN106990971A CN201710221993.9A CN201710221993A CN106990971A CN 106990971 A CN106990971 A CN 106990971A CN 201710221993 A CN201710221993 A CN 201710221993A CN 106990971 A CN106990971 A CN 106990971A
- Authority
- CN
- China
- Prior art keywords
- interrupt
- data
- hardware device
- type
- method suitable
- 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.)
- Granted
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/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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
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)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及数据处理技术领域,具体涉及一种适用于多中断数据接收的系统驱动方法,通过采用多中断数据处理模块进行中断处理,并使中断处理函数与硬件设备建立握手,主动控制硬件设备输出的中断脉冲宽度,解决了驱动程序不能实时稳定地响应固定脉宽中断的情况,提高了接收设备数据采集的稳定性,建立了中断类型缓存表以存储不同类型的数据标志,将应该在中断处理函数中完成数据搬移的过程转移到低优先级的延迟过程调用处理函数中,大大缩短了中断处理函数的处理时间,提高了驱动接收数据的实时性。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种适用于多中断数据接收的系统驱动方法。
背景技术
数据接收卡是一种广泛应用的测试设备,为了便于数据接收卡使用,通常利用Windows系统的可视化界面,实现数据存储、分析与显示,因此,需要开发基于Windwos系统的驱动,完成数据接收卡与用户应用程序间的桥接。现有技术中的接收板卡在采集多种类型数据时会出现输出多中断的情况,而一般的驱动方法不能实时、稳定、有效地响应中断,无法满足实际工程中实时采集存储多种数据类型的需求。
发明内容
本发明针对传统驱动不能有效响应部分中断的情况,设计了一种提高驱动数据处理效率,有效响应多中断的驱动方法,以实现接收卡稳定的采集数据,提高了数据采集的实时性。
为了解决上述技术问题,本发明采用了如下的技术方案:
一种适用于多中断数据接收的系统驱动方法,包括以下步骤:
S1.创建并初始化驱动功能模块;
S2.读取系统上存在的硬件设备的配置信息,查找匹配设备,判断系统上存在的硬件设备是否为匹配设备,
若是,则进入步骤S3,
若否,则退出驱动功能模块;
S3.将硬件设备的物理地址映射转换成系统能够识别的虚拟地址,实现驱动程序对硬件设备的直接访问与操作;
S4.初始化硬件设备中断及通道,接收上层应用程序的IO控制请求,写入寄存器;
S5.多中断数据处理模块进行中断处理,建立中断类型缓存表和数据缓存表,与硬件设备建立握手;
S6.启动延迟过程调用,建立延迟过程调用函数;
S7.延迟过程调用函数根据中断类型缓存表的存储类型进行不同数据类型的数据存储,注册事件,与上层的应用程序进行通信;
S8.上层应用程序下发接收数据指令,通知上层应用程序性从数据缓存中搬移数据。
进一步地,所述的步骤S5中的中断处理包括以下步骤:
S5-5.建立中断类型缓存表和中断处理函数,初始化中断处理函数中的读计数与写计数;
S5-6.在中断处理函数中接收硬件设备中断,根据寄存器存储的硬件设备中断类型将不同的中断类型标志位写入中断类型缓存表,累加相应中断类型的读计数;
S5-7.根据中断类型标志位预判是否存在其他类型数据,若存在,写入中断类型缓存表,若不存在,进入步骤S5-3;
S5-8.中断类型预判完成后,向寄存器写入数据,输出脉冲,多中断数据处理模块与硬件设备完成握手,通知硬件设备将高电平的中断信号拉低,释放中断。
进一步地,所述的步骤S6中的延迟过程调用函数包括以下步骤:
S6-4.启动延迟过程调用函数;
S6-5.根据中断类型缓存表中的中断类型在延迟过程调用函数中进行数据搬移,并累加相应中断类型缓存表中的中断类型的写计数;
S6-6.根据不同类型事件,通知上层应用程序从数据缓存中搬移数据。
进一步地,所述的通道为DMA通道。
进一步地,所述的硬件设备的物理地址包括IO地址和Memory地址。
进一步地,使用标准入口函数DriverEntry创建并初始化驱动功能模块。
进一步地,所述的中断处理函数中用write函数进行读计数,所述的中断处理函数中用read函数进行写计数。
本发明由于采用以上技术方案,使之与现有技术相比,具有以下的优点和积极效果:
1.采用多中断数据处理模块进行中断处理,使中断处理函数与硬件设备建立握手,主动控制硬件设备输出的中断脉冲宽度,解决了驱动程序不能实时稳定地响应固定脉宽中断的情况,提高了接收设备数据采集的稳定性,解决了驱动处理数据时出现的丢数问题,提高了数据接收卡的实时性与稳定性;
2.建立中断类型缓存表以存储不同类型的数据标志,将应该在中断处理函数中完成数据搬移的过程转移到低优先级的延迟过程调用处理函数中,大大缩短了中断处理函数的处理时间,提高了驱动接收数据的实时性;
3.改变了传统的应用程序查询内核数据搬移情况读取数据的模式,在数据搬移完成后主动通知上层应用程序进行数据搬移,提高了上层的应用程序进行数据处理与存储的执行效率,有效降低了CPU使用率。
附图说明
图1是本发明中的驱动方法的流程图;
图2是本发明中的驱动方法的中断处理和延迟过程调用的流程图;
图3是本发明实施例2中接受板卡的接受数据方式。
具体实施方式
以下结合附图和具体实施例对本发明提出的技术方案进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比率,仅用于方便、明晰地辅助说明本发明实施例的目的。
本发明是根据自主研发板卡需要采集多种类型数据,针对数据接收卡产生突发多中断脉冲,且不同类型中断脉冲间隔可能会很短的实际情况,采用与硬件设备建立握手机制的方式实时释放中断电平信号,主动控制硬件设备输出的中断脉冲宽度,解决了驱动程序不能实时稳定地响应固定脉宽中断的情况,接收卡能实时稳定地接收数据,同时建立中断类型缓存表,将数据搬移过程放在低优先级的延迟过程调用函数中,大大缩短了中断函数处理时间,提高中断处理函数的执行效率。现通过实施例对发明的技术方案进行进一步陈述。
实施例1
参见图1,本发明通过总线级驱动查找并识别硬件设备、地址映射的功能,主要是在内核级中建立功能级驱动模块,实现数据搬移存储,该驱动方法的具体步骤为:
S1.创建并初始化驱动功能模块;
S2.读取系统上存在的硬件设备的配置信息,查找匹配设备,判断系统上存在的硬件设备是否为匹配设备;
若是,则进入步骤S3,
若否,则退出驱动功能模块;
S3.将硬件设备的物理地址映射转换成系统能够识别的虚拟地址,实现驱动程序对硬件设备的直接访问与操作,其中,物理地址可包括硬件设备的IO地址及Memory地址;
S4.初始化硬件设备中断及通道,同时,接收上层应用程序的IO控制请求,写入寄存器,以便开启中断,从而能接收硬件设备的中断;
S5.多中断数据处理模块进行中断处理,建立中断类型缓存表和数据缓存表,当然,建立中断类型缓存表和数据缓存表的过程也可在步骤S4中实现,多中断数据处理模块是通过中断处理函数接收中断,并与硬件设备建立握手,存储不同中断类型的标志位;
S6.启动延迟过程调用,建立延迟过程调用函数;对于步骤S5和步骤S6的处理过程将在后续的说明中进行具体详述;
S7.延迟过程调用函数根据中断类型缓存表的存储类型进行不同数据类型的数据存储,注册事件,与上层的应用程序进行通信;
S8.上层应用程序下发接收数据指令,通知上层应用程序性从数据缓存中搬移数据,从而完成内核层到应用层数据的搬移,由于在数据搬移完成后能主动通知上层应用程序进行数据搬移,提高了上层的应用程序进行数据处理与存储的执行效率,有效降低了CPU使用率。
参见图2,图2为中断处理和延迟过程调用的流程图,在该过程中建立了中断类型缓存表以存储不同类型的数据标志,将应该在中断处理函数中完成数据搬移的过程转移到低优先级的延迟过程调用处理函数中,从大大缩短了中断处理函数的处理时间,提高了驱动接收数据的实时性,具体步骤如下:
S5-1.建立中断类型缓存表和中断处理函数,初始化中断处理函数中的读计数与写计数,读计数与写计数可以用write函数或read函数编写;
S5-2.在中断处理函数中接收硬件设备中断,根据寄存器存储的硬件设备中断类型将不同的中断类型标志位写入中断类型缓存表,累加相应中断类型的读计数;
S5-3.根据中断类型标志位预判是否存在其他类型数据,若存在,写入中断类型缓存表,若不存在,进入步骤S5-3;
S5-4.中断类型预判完成后,向寄存器写入数据,输出脉冲,多中断数据处理模块与硬件设备完成握手,通知硬件设备将高电平的中断信号拉低,释放中断,有效防止驱动程序由于中断处理函数的处理时间较长而未能响应其他中断脉冲信号的情况的发生。
在步骤S5后,进入步骤S6,步骤S6中的延迟过程调用函数包括以下步骤:
S6-1.启动延迟过程调用函数,此时,可释放中断处理函数,继续接收其他类型中断,提高中断处理效率;
S6-2.根据中断类型缓存表中的中断类型在延迟过程调用函数中进行数据搬移,并累加相应中断类型缓存表中的中断类型的写计数;
S6-3.根据不同类型事件,通知上层应用程序从数据缓存中搬移数据。
实施例2
在计算机上开发的基于Windows系统的驱动程序设计接收中断电平信号,实时采集不同类型数据,采用握手方式实时释放中断电平信号,同时建立中断类型缓存表,在低优先级的延迟过程调用函数中利用中断缓存表的标志信号进行数据搬移,提高了中断处理函数的执行效率。在实施例中将对本发明的整个过程详述,接受板卡的接受数据方式如图3所示,数据接收卡实时接收不同类型的空空接口信号,通过CPCI接口传输到计算机平台进行数据分析。该接收设备采集信号的基本信息如表1所示。
表1设备采集信号基本信息
信号类型 | 中断间隔 | 数据量 |
自主控制数据 | 0.5s | 1Mbps |
显示数据 | 1s | 320bps |
飞船状态数据 | 1s | 500bps |
图像数据 | 0.1s | 2Mbps |
关键遥测数据 | 0.7s | 1.2Mbps |
本发明的驱动方法详细可分为驱动处理流程和多中断处理流程,驱动处理流程的步骤包括:
第一步:创建并初始化驱动功能模块,具体来说,可通过进入标准入口函数DriverEntry,创建和初始化功能对象fdo;
第二步:读取系统上存在的硬件设备的配置信息,查找匹配设备,判断系统上存在的硬件设备是否为匹配设备;轮训系统总线上存在的CPCI设备,对于数据接收卡则是根据读取的数据接收卡EPPROM配置信息来查找匹配设备;
若是,则进入下一步,
若否,则退出驱动功能模块;
第三步:将硬件设备的物理地址映射转换成系统能够识别的虚拟地址,实现驱动程序对硬件设备的直接访问与操作,其中,物理地址可包括硬件设备的IO地址及Memory地址;
第四步:初始化硬件中断及DMA通道,建立中断类型缓存表、不同类型数据缓存表;
第五步:接收上层应用程序的IO指令,写入寄存器,以便开启中断,从而能接收硬件设备的中断;
第六步:中断处理函数接收中断,建立握手,存储不同中断类型标志位;
第七步:启动延迟过程调用,此时可开启延迟过程调用函数;延迟过程调用函数根据中断类型缓存表的存储类型进行不同数据类型的数据存储,注册事件,与上层的应用程序进行通信;
第八步:上层应用程序下发接收数据指令,通知上层应用程序性从数据缓存中搬移数据。
二、多中断处理流程主要是建立握手机制
第一步:建立中断类型缓存表和中断处理函数,初始化中断处理函数中的读计数write_count_n=0与写计数read_count_n=0;
第二步:在中断处理函数中接收中断,根据寄存器存储的中断类型将不同的标志位写入中断类型缓存表,相应中断类型的write_count_n加1,并根据中断类型标志位预判是否有其他中断到达;
第三步:中断类型预判完成后,向固定IO寄存器中写入1,后写入0,输出脉冲,与硬件设备完成握手,通知硬件将高电平的中断信号拉低,有效防止驱动程序由于中断处理函数的处理时间较长而未能响应其他中断脉冲信号的情况的发生;
第四步:启动延迟过程调用,启动延迟过程调用函数,释放中断处理函数,继续接收其他类型中断,提高中断处理效率;
第五步:根据中断类型缓存表类型在延迟过程调用函数中进行不同数据的搬移,并将相应中断类型的read_count_n加1,根据数据类型置不同类型事件,通知上层应用程序从数据缓存中搬移数据。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (7)
1.一种适用于多中断数据接收的系统驱动方法,其特征在于,包括以下步骤:
S1.创建并初始化驱动功能模块;
S2.读取系统上存在的硬件设备的配置信息,查找匹配设备,判断系统上存在的硬件设备是否为匹配设备,
若是,则进入步骤S3,
若否,则退出驱动功能模块;
S3.将硬件设备的物理地址映射转换成系统能够识别的虚拟地址,实现驱动程序对硬件设备的直接访问与操作;
S4.初始化硬件设备中断及通道,接收上层应用程序的IO控制请求,写入寄存器;
S5.多中断数据处理模块进行中断处理,建立中断类型缓存表和数据缓存表,与硬件设备建立握手;
S6.启动延迟过程调用,建立延迟过程调用函数;
S7.延迟过程调用函数根据中断类型缓存表的存储类型进行不同数据类型的数据存储,注册事件,与上层的应用程序进行通信;
S8.上层应用程序下发接收数据指令,通知上层应用程序性从数据缓存中搬移数据。
2.根据权利要求1所述的一种适用于多中断数据接收的系统驱动方法,其特征在于,所述的步骤S5中的中断处理包括以下步骤:
S5-1.建立中断类型缓存表和中断处理函数,初始化中断处理函数中的读计数与写计数;
S5-2.在中断处理函数中接收硬件设备中断,根据寄存器存储的硬件设备中断类型将不同的中断类型标志位写入中断类型缓存表,累加相应中断类型的读计数;
S5-3.根据中断类型标志位预判是否存在其他类型数据,若存在,写入中断类型缓存表,若不存在,进入步骤S5-3;
S5-4.中断类型预判完成后,向寄存器写入数据,输出脉冲,多中断数据处理模块与硬件设备完成握手,通知硬件设备将高电平的中断信号拉低,释放中断。
3.根据权利要求1或2所述的一种适用于多中断数据接收的系统驱动方法,其特征在于,所述的步骤S6中的延迟过程调用包括以下步骤:
S6-1.启动延迟过程调用函数;
S6-2.根据中断类型缓存表中的中断类型在延迟过程调用函数中进行数据搬移,并累加相应中断类型缓存表中的中断类型的写计数;
S6-3.根据不同类型事件,通知上层应用程序从数据缓存中搬移数据。
4.根据权利要求1所述的一种适用于多中断数据接收的系统驱动方法,其特征在于,所述的通道为DMA通道。
5.根据权利要求1所述的一种适用于多中断数据接收的系统驱动方法,其特征在于,所述的硬件设备的物理地址包括IO地址和Memory地址。
6.根据权利要求1所述的一种适用于多中断数据接收的系统驱动方法,其特征在于,使用标准入口函数DriverEntry创建并初始化驱动功能模块。
7.根据权利要求2所述的一种适用于多中断数据接收的系统驱动方法,其特征在于,所述的中断处理函数中用write函数进行读计数,所述的中断处理函数中用read函数进行写计数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710221993.9A CN106990971B (zh) | 2017-04-06 | 2017-04-06 | 一种适用于多中断数据接收的系统驱动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710221993.9A CN106990971B (zh) | 2017-04-06 | 2017-04-06 | 一种适用于多中断数据接收的系统驱动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106990971A true CN106990971A (zh) | 2017-07-28 |
CN106990971B CN106990971B (zh) | 2020-05-12 |
Family
ID=59415339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710221993.9A Active CN106990971B (zh) | 2017-04-06 | 2017-04-06 | 一种适用于多中断数据接收的系统驱动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106990971B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115643125A (zh) * | 2022-08-17 | 2023-01-24 | 南斗六星系统集成有限公司 | 一种can波特率快速匹配的方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6799316B1 (en) * | 2000-03-23 | 2004-09-28 | International Business Machines Corporation | Virtualizing hardware with system management interrupts |
CN101097129A (zh) * | 2007-07-13 | 2008-01-02 | 重庆大学 | 用于高速位移测量的ccd数据采集与处理装置 |
CN102833088A (zh) * | 2011-06-17 | 2012-12-19 | 中兴通讯股份有限公司 | 一种中断处理方法及装置 |
CN103778062A (zh) * | 2014-01-23 | 2014-05-07 | 中国人民解放军国防科学技术大学 | 基于抽象解释的多中断程序数据访问冲突检测方法 |
-
2017
- 2017-04-06 CN CN201710221993.9A patent/CN106990971B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6799316B1 (en) * | 2000-03-23 | 2004-09-28 | International Business Machines Corporation | Virtualizing hardware with system management interrupts |
CN101097129A (zh) * | 2007-07-13 | 2008-01-02 | 重庆大学 | 用于高速位移测量的ccd数据采集与处理装置 |
CN102833088A (zh) * | 2011-06-17 | 2012-12-19 | 中兴通讯股份有限公司 | 一种中断处理方法及装置 |
CN103778062A (zh) * | 2014-01-23 | 2014-05-07 | 中国人民解放军国防科学技术大学 | 基于抽象解释的多中断程序数据访问冲突检测方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115643125A (zh) * | 2022-08-17 | 2023-01-24 | 南斗六星系统集成有限公司 | 一种can波特率快速匹配的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106990971B (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5553261A (en) | Method of performing clean-up of a solid state disk while executing a read command | |
JP2017194959A (ja) | NVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体 | |
US9835682B2 (en) | Debugging system and method | |
CN103366794A (zh) | 用于减少接脚数内存总线接口的装置及方法 | |
TWI498821B (zh) | 非暫時性之機器可讀儲存媒體及用於使韌體支援舊版作業系統之方法及電腦系統 | |
CN108628543A (zh) | 垃圾回收方法以及使用该方法的装置 | |
CN106775440A (zh) | 数据储存装置与数据储存方法 | |
CN103823447A (zh) | 半导体设备的上下位机的通信方法和通信系统 | |
US5757381A (en) | Methods for fast scrolling of images | |
CN108628754A (zh) | 一般及垃圾回收的数据存取方法以及使用该方法的装置 | |
CN106990971A (zh) | 一种适用于多中断数据接收的系统驱动方法 | |
JPS593642A (ja) | 制御レジスタ処理方式 | |
CN111813703A (zh) | 数据储存装置及逻辑至物理地址映射表的更新方法 | |
CN109657360A (zh) | 一种面向gpu芯片硬件架构的建模方法及视图系统 | |
CN1503948A (zh) | 流水线化的ata设备初始化 | |
CN107729269A (zh) | 一种NANDFlash到FPGA内部块RAM的缓存方法 | |
CN1151429C (zh) | 图形用户接口中生成全局命中测试数据结构的方法和系统 | |
CN109634583B (zh) | 一种基于SystemC和TLM模型的GPU颜色存储Cache模块的硬件及存储装置 | |
CN113495850B (zh) | 管理垃圾回收程序的方法、装置及计算机可读取存储介质 | |
CN113448487B (zh) | 写入闪存管理表的计算机可读取存储介质、方法及装置 | |
CN103946774A (zh) | 用于采用和促进计算装置处的触摸板拇指传感器垫的机构 | |
CN101477758A (zh) | 用于竞赛的教育机器人 | |
CN104598410B (zh) | 一种免写驱动程序的计算机板卡及其开发方法 | |
CN105573812A (zh) | 一种仿真系统 | |
CN109935252A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 201109 Minhang District, Shanghai Road, No. 1777 spring Applicant after: Shanghai Spaceflight Institute of TT&C And Telecommunication Address before: 200080 Shanghai city Hongkou District street Xingang Tianbao Road No. 881 Applicant before: Shanghai Spaceflight Institute of TT&C And Telecommunication |
|
GR01 | Patent grant | ||
GR01 | Patent grant |