扩展wince5物理中断

 我的开发环境是s3c2450+wince5,需要用到EINT20做键盘中断,但是因为wince5
默认只支持64个物理中断,而且BSP用到的IRQ_LAST是EINT16。因为EINT4到EINT16
都有用处,想通过将EINT20移到64
以内并添加静态映射的方法就行不通了,只能用动态分配的方法,为此需要对BSP及WINCE
做一些调整。具体做法如下:

1、修改bsp中的s3c2450_intr.h:添加IRQ_EINT17到IRQ_EINT23的定义,将IRQ_LAST由
IRQ_EINT16改为IRQ_EINT23

2、动态分配中断的代码在platform/common/src/common/intr/base/map.c中
关于OAL_INTR_IRQ_MAXIMUM的定义是在platform/common/src/inc中,将它由64修改为72
,否则无法动态分配系统中断给超过64的物理中断。

关于此宏定义在bsp的inc目录中的oal_intr.h
也有定义,但是并没有使用。开始的时候我改的是BSP
下的不起作用,要注意不要改错地方。

3、将EINT20对应的GPG12设置为外部中断。

修改bsp的kernel/oal目录中的intr.c:在BSPIntrInit中添加将GPG12(EINT20)
设置为外部中断并使能中断的代码

注意在设置好GPGCON、GPGDAT、GPGUP后要调用OALIntrEnableIrqs。刚开始我是把GPG
引脚的设置放到设备驱动初始化中,也可以运行。不过放到BSPIntrint感觉更放心。

4、在设备驱动中按动态分配的方法分配IRQ_EINT20、关联事件、创建IST。

 

经过此改动,能够实现大于64
的物理中断动态分配,键盘程序运行正常。不过没有做其它测试了。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值