首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
数字电路
» 基于PCI总线的中断处理机制(2)
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于PCI总线的中断处理机制(2)
发短消息
加为好友
yuyang911220
当前离线
UID
1029342
帖子
9914
精华
0
积分
4959
阅读权限
90
在线时间
286 小时
注册时间
2014-5-22
最后登录
2017-7-24
论坛元老
UID
1029342
性别
男
1
#
打印
字体大小:
t
T
yuyang911220
发表于 2015-10-21 10:49
|
只看该作者
基于PCI总线的中断处理机制(2)
程序开发
,
第三方
,
主程序
,
硬件
,
资源
4 中断处理流程及编程要点
在Win9x环境下通常需要通过设备驱动程序来访问硬件资源,VtoolsD是常用的第三方VxD设备驱动程序开发工具。下面以VC++6.0为开发环境,结合VtoolsD工具及本文所讨论的中断机制来介绍中断处理程序的开发要点。
4.1 主程序编写要点
图5 中断处理主程序流程
在主程序中要完成中断的初始化工作,其流程见图5。在编程中需注意下述几点:
① 获取配置资源
在系统初始化期间若发现新设备,则Win9x会发出PnP_NEW _DEVNODE消息,此时VxD就可以利用CONFIGMG_Register_Device_Driver和 CONFIGMG_Get_Alloc_Log_Conf等函数来获取PCI设备的配置资源,并将配置信息放入一个类型为CMCONFIG的结构 config中。
② 设置中断向量
从config中可获得系统为9052配置的中断号IRQ,据之保存原中断向量,然后设置中断向量使其指向用户中断服务例程,以便CPU响应中断时自动进入用户的中断处理子程序。
VtoolsD提供了VsharedHardwareInt类来实现硬件中断处理,用户从中派生出Mic_IOINT类,其中成员函数OnSharedHardwareInt是用户的中断处理子程序。
③ 允许9052中断
允许9052产生中断可通过编程9052的INTCSR寄存器来实现。假设应用系统利用9052 LINTi2的上升沿来产生中断,则代码如下:
④ 开放中断屏蔽寄存器的相应位
外部中断事件未受82C59的屏蔽且有足够高的优先级时,才能向CPU发出中断请求,所以在CPU开中断之前必须去除82C59对应中断的屏蔽。这可用VSharedHardwareInt类中的physicalUnmask()函数实现。
4.2 子程序编写要点
中断处理子程序的流程如图6所示。在编写中断处理子程序时,要注意下述两点:
① 清9052中断
因PCI中断是电平检测的,则当它得到响应后应及时撤消其请求,以免引起不应该有的第二次中断,这可通过对INTCS的位11写1来实现。代码如下:
② 清PC机相应中断标志
中断返回前,或进入中断子程序后允许动态改变中断的优先级,则要向82C59发中断结束命令以清除PC机的相应中断标志位。若中断来自主片,则只对主片发结束命令,若来自从片,则要向主片和从片分别发结束命令。这可用VSharedHardwareInt类中的sendPhysicalEOI()函数实现。
5 结束语
本文从计算机硬件和软件相结合的角度深入系统地介绍了基于PCI总线的中断处理机制,并给出了中断处理程序的开发要点,对计算机硬件或软件开发人员可提供较大帮助。
收藏
分享
评分
继承事业,薪火相传
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议