阅读:2125回复:1
扩展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的物理中断动态分配,键盘程序运行正常。不过没有做其它测试了。 |
|
沙发#
发布于:2009-11-10 02:54
同意 。最大值被bsp的宏给限制了。是需要修改那个宏值。
|
|