我在做master Bus的時候,遇到一個問題!我能正確讀寫了。關于中斷:
我做了如下注冊:
request_irq(devInfo->gIrq, &XPCIe_IRQHandler,IRQF_SHARED,DRIVER_NAME, devInfo->pciDev):
完成注冊后。
我的中斷回應函式如下:
static irqreturn_t XPCIe_IRQHandler(int irq, void *dev_id)
{
u32 i, regx;
if(devInfo->pciDev != dev_id)
{
printk(KERN_WARNING"dev_id = 0X%x",dev_id);
return IRQ_NONE;
}
printk(KERN_WARNING"devInfo->pciDev = 0X%x\n",devInfo->pciDev);
printk(KERN_WARNING"dev_id = 0X%x\n",dev_id);
printk(KERN_WARNING"irq = %d\n",irq);
printk(KERN_WARNING"%s: Interrupt Handler Start ..\n",BOARD_NAME);
for (i = 0; i < 49; i++)
{
regx = XPCIe_ReadReg(i);
printk(KERN_WARNING"%s : REG<%d> : 0x%X\n", BOARD_NAME, i, regx);
}
printk(KERN_WARNING"%s Interrupt Handler End ..\n", BOARD_NAME);
return IRQ_HANDLED; //中斷是由本設備引起的
}
當我啟動中斷后,外部設備只是產生了一次中斷,我的程式卻在不停的執行中斷回應函式XPCIe_IRQHandler
請問這是為什么,我需要如何修改。謝謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/152191.html
標籤:驅動程序開發區
