hgn2002
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2008-03-02
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望15点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:3039回复:7

wince中关于逻辑中断号的大小问题!(pxa270)

楼主#
更多 发布于:2007-09-27 16:26
我做了一个GPIO的按键驱动程序,是由中断实现,我在OALITR.H中添加了一个逻辑中断号,定义为
#define SYSINTR_GPIO    (SYSINTR_FIRMWARE+26),由于SYSINTR_FIRMWARE等于16,很自然SYSINTR_GPIO等于42.程序编译能顺利通过,但是在下载运行时,提示为
Key:DLL_PROCESS_ATTACH.
>>>EINT_initalization address..set..
:::EINT_InitializeAddresses - Success
ERROR:EINTKey:Failed to request sysintr value for EINT interrupt.
Key:DLL_PROCESS_DETACH.
为什么又自动卸载了呢?是不是逻辑中断号太大了?
hgn2002
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2008-03-02
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望15点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-27 16:50
补充一下,就是在下面出了问题:
if( ! KernelIoControl( IOCTL_HAL_GET_WAKE_SOURCE,&g_EINTIrq,sizeof(UINT32),
                          &g_EINTSysIntr,sizeof(UINT32),NULL))
  {RETAILMSG(1,(TEXT("ERROR:EINTKey:Failed to request sysintr value for EINT interrupt.\r\n")));  return(0);}
好像是硬件中断没有成功从OAL请求一个SYSINTR值,为什么?
wince_lover
驱动中牛
驱动中牛
  • 注册日期2007-01-10
  • 最后登录2010-12-20
  • 粉丝0
  • 关注0
  • 积分1103分
  • 威望735点
  • 贡献值2点
  • 好评度279点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2007-09-28 09:04
软中断号不能大于40
hgn2002
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2008-03-02
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望15点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-09-28 14:52
我的硬件中断是GPIO中断,中断号为10(pxa270固定的)。逻辑中断号定为42不行吗?我看到demo的驱动程序里面设定的逻辑中断号有41的啊!!真的不能大于40吗?各位有经验的讲来听听,不胜感激!!
buaadallas
驱动牛犊
驱动牛犊
  • 注册日期2005-03-16
  • 最后登录2007-10-18
  • 粉丝0
  • 关注0
  • 积分470分
  • 威望47点
  • 贡献值0点
  • 好评度47点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-09-28 16:00
好像要修改一下最大逻辑中断号,s3c2410上面需要这样设置,你可以找找
rilyyu
驱动小牛
驱动小牛
  • 注册日期2006-11-17
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分512分
  • 威望130点
  • 贡献值0点
  • 好评度127点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-09-29 09:48
pxa270 bsp里默认最大中断号是64吧,其实这个可以自己定.主要是sysintr irq对应数组的大小是64,所以中断号超过64就没有用了
wang_wcj
驱动小牛
驱动小牛
  • 注册日期2002-04-14
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分213分
  • 威望253点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-09-29 11:01
要是自定义系统中断。就必须用OALIntrStaticTranslate(sysintr,irq)
这样以后系统才能在oeminterrupthandler得到你定义的系统中断号
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-09-29 21:12
引用第1楼hgn2002于2007-09-27 16:50发表的  :
补充一下,就是在下面出了问题:
if( ! KernelIoControl( IOCTL_HAL_GET_WAKE_SOURCE,&g_EINTIrq,sizeof(UINT32),
                          &g_EINTSysIntr,sizeof(UINT32),NULL))
  {RETAILMSG(1,(TEXT("ERROR:EINTKey:Failed to request sysintr value for EINT interrupt.rn")));  return(0);}
好像是硬件中断没有成功从OAL请求一个SYSINTR值,为什么?




从你这段代码看,只是OAL中没有实现IOCTL_HAL_GET_WAKE_SOURCE,与SYSINTR等没有关系.
学海无涯
游客

返回顶部