⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 expdrv.c

📁 ucos移植在S3C44BOX上的源码
💻 C
字号:
/**************************************************************************************************
*
* 作者: 胡翌博,浙江大学信电系电路与系统2001研
*
* 文件名:expDrv.c 
*
* 版本: 1.0
*
* 功能描述:本文件为C语言级别的中断驱动程序,包括:
*     中断伺服程序的安装与重定向程序;
*     中断伺服程序本身;
*
* 被本文件引用的文件列表:typDef.h
*
* 应用本文件的文件列表:no
*
* 版本更迭:
*         日期         版本号      作者      备注
*      07-15-2003       1.0       胡翌博     --尚未实验验证
**************************************************************************************************/



#include "typDef.h"



/**************************************************************************************************
函数名称:       installIntHandlerB()
函数功能:       用分支指令,安装和重新定位中断伺服程序
入口参数:       routine 中断伺服程序新的起始地址值,用于生成新的跳转指令
		vector  与该中断伺服程序相应的中断入口
返 回 值:       oldvec 中断入口存放跳转到中断伺服程序的跳转指令,该函数返回旧跳转指令
                0xFF   安装不成功
备    注:       采用分支指令,因此中断伺服程序的起始地址离中断入口的地址不得超过32MB
**************************************************************************************************/
UINT32 installIntHandler (UINT32 routine, UINT32 *vector)
{
	unsigned vec, oldvec;
	vec = ((routine - (unsigned)vector - 0x8)>>2);
	if (vec & 0xff000000)
	{
		return 0xFF;
	}
	vec = 0xea000000 | vec;
	oldvec = *vector;
	*vector = vec;
	return (oldvec);
}



/**************************************************************************************************
函数名称:       installIntHandlerPC()
函数功能:       用直接修改PC的方式,安装和重新定位中断伺服程序
入口参数:       location 中断伺服程序新的起始地址值,用于生成新的跳转指令
		vector  与该中断伺服程序相应的中断入口
返 回 值:       oldvec 中断入口存放跳转到中断伺服程序的跳转指令,该函数返回旧跳转指令
                0xFF   安装不成功
备    注:       由于采用直接修改PC,从而跳转,因此没有范围的限制
***************************************************************************************************/
UINT32 installIntHandlerPC (UINT32 location, UINT32 *vector)
{ 
	unsigned vec, oldvec;
	vec = ((unsigned)location - (unsigned)vector - 0x8) | 0xe59ff000
	oldvec = *vector;
	*vector = vec;
	return (oldvec);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -