欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

【惊现】6410 wince 六 fiq 存在bug

更新时间: 2014-01-05 03:11:18 责任编辑: Author_N1

 

【惊现】6410 wince 6 FIQ 存在BUG ?
最近要调试个模块,用到软解,需要在中断里面采集数据。一开始使用IRQ发现采集回来的数据受干扰严重,所以采用FIQ。
但在使用FIQ的时候,发现一个很严重的问题,既然无法进入到FIQ的处理函数OEMInterruptHandlerFIQ()中。

S3C6410 + WINCE6.0

IRQ使能部分代码:

// set GPN0 as Ext.Interrupt[0]
v_pIOPregs->GPNCON &= ~(0x3<<0);
v_pIOPregs->GPNCON |= (0x2<<0);
// pull up
v_pIOPregs->GPNPUD &= ~(0x3<<0);
v_pIOPregs->GPNPUD |= (0x2<<0);
// EINT1,0 falling edge triggered
v_pIOPregs->EINT0CON0 &= ~(0x7<<0);
v_pIOPregs->EINT0CON0 |= (0x2<<0);
// Enable Interrupt EINT0
v_pIOPregs->EINT0MASK &= ~(0x1<<0);
// EINT0~EINT3 belongs to INT_EINT0(VIC0)
// set INT_EINT0 as FIQ type
//v_pVIC0Pregs->VICINTSELECT |= (0x1<<0);
// set INT_EINT0 as IRQ type
v_pVIC0Pregs->VICINTSELECT &= ~(0x1<<0);
// Enable INT_EINT0 interrupt
v_pVIC0Pregs->VICINTENABLE |= (0x1<<0);

这样配置之后,硬件中断能够正常进入到 OEMInterruptHandler() IRQ处理函数中。
但是选择为FIQ方式之后,发现既然无法进入到 OEMInterruptHandlerFIQ() 处理函数中。

intr.c的初始化:

static void InitializeVIC(void)
{
    // Disable All Interrupts
    g_pVIC0Reg->VICINTENCLEAR = 0xFFFFFFFF;
    g_pVIC1Reg->VICINTENCLEAR = 0xFFFFFFFF;
    g_pVIC0Reg->VICSOFTINTCLEAR = 0xFFFFFFFF;
    g_pVIC1Reg->VICSOFTINTCLEAR = 0xFFFFFFFF;

    // Clear Current Active Vector Address
    g_pVIC0Reg->VICADDRESS = 0x0;
    g_pVIC1Reg->VICADDRESS = 0x0;

    // Initialize Vector Address Table
    VICTableInit();

    // Disable Vectored Interrupt Mode on CP15
    System_DisableVIC();

    // Enable IRQ Interrupt on CP15
    System_EnableIRQ();

    // Enable FIQ Interrupt on CP15
    System_EnableFIQ();
}



从这里看的话,FIQ已经使能,但是为什么还是无法进入到FIQ处理中呢?确定物理中断已经产生,因为IRQ都能响应了。

6410的中断是使用VIC的,从这个初始化中我们看到其把VIC关闭了,但为什么还能够通过VIC控制器去使能IRQ中断?
难道要使用FIQ,必须得使能这个VIC吗?

我试过把System_DisableVIC();换成System_EnableVIC(),但是发现无法正常进入系统。在相应的中断处理那边卡住了,这说明6410 BSP的中断处理方式与VIC的中断处理方式不符。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:11:18
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19393/
本文WWW.DOC100.NET DOC100.NET版权所有。