Chinaunix首页 | 论坛 | 博客
  • 博客访问: 477302
  • 博文数量: 56
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1957
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-07 23:02
文章分类

全部博文(56)

文章存档

2016年(1)

2014年(7)

2013年(48)

分类: 嵌入式

2013-07-02 23:24:45

3.4 中断驱动程序的动态分析

3.4.1 中断驱动程序的初始化

中断驱动程序结构比较简单,因此该驱动的构建过程也比较简单,几个函数库都是静态构建的,唯一需要动态创建的就是中断控制芯片的初始化。

在函数sysHwInit()中调用了函数sysIntInitPIC ()完成了中断控制芯片的初始化,并指定intEoiGet = sysIntEoiGet。此后就可以正常使用中断驱动了。如图3.7。

图3.7 中断控制器的初始化过程

3.4.2 中断驱动程序的应用

中断驱动程序为上层应用程序提供了通用的函数接口,这些函数接口如表3.2所示。注意有些函数如sysLib中的sysIntInitPIC虽然属于提供给上层的函数,但是他的上层用户只有sysLib库的sysHwInit函数,因此不作为为上层应用软件提供的接口。

表格 3.2 中断驱动程序提供的通用函数接口

函数名称

函数库

说明

intConnect

intArchLib

安装中断处理函数

intEnable

intArchLib

控制CPU允许某个特定的中断

intDisable

intArchLib

控制CPU禁止某个特定的中断

intLockLevelSet

intArchLib

设置CPU的中断屏蔽级别变量

intLockLevelGet

intArchLib

获取CPU的中断屏蔽级别变量

intVecBaseSet

intArchLib

设置中断向量基本地址

intVecBaseGet

intArchLib

获取中断向量基本地址

intVecSet

intArchLib

实模式下设置中断向量

intVecSet2

intArchLib

保护模式下设置中断向量

intVecGet

intArchLib

实模式下获取中断向量

intVecGet2

intArchLib

保护模式下获取中断向量

intVecTableWriteProtect

intArchLib

设置中断向量表写保护

intRegsLock

intArchLib

设置一个寄存器集屏蔽CPU中断

intRegsLock

intArchLib

设置一个寄存器集允许CPU中断

intLevelSet

intALib

设置CPU中断级别

intLock

intALib

屏蔽CPU中断相应

intUnlock

intALib

允许CPU中断相应

sysIntLock

sysLib

控制中断控制器屏蔽所有中断

sysIntUnlock

sysLib

控制中断控制器允许所有中断

sysIntDisablePIC

sysLib

控制中断控制器屏蔽某一中断

sysIntEnablePIC

sysLib

控制中断控制器允许某一中断

sysIntLevel

sysLib

从intEnt函数中调用获取中断号


注意:控制CPU屏蔽中断和控制中断控制器屏蔽中断的作用是不同的,前者可以控制的中断范围更大,只要是可屏蔽中断都能完成;而后置控制的范围则较小,只有链接到中断控制器的外围中断才是可以屏蔽的。

阅读(5008) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~