问题解决。
重新Build and Sysgen后,驱动中的RETAILMSG就可以正常输出调试信息了。- -!奇怪的问题1。
在DdsiTouchPanelGetPoint()函数中添加一些调试信息,发现第一次笔按下时可以进入touch和touch changed中断,笔弹起后,就再也没有进入中断了。
在MSN上请教gooogleman,提示“你跟踪InterruptDone函数,这个函数会调用微软的代码来实现重新使能中断。你现在不产生中断就是中断没有使能了”。
跟踪到OALIntrDoneIrqs()函数,居然发现有两个:一个在src\common\intr\intr.c里,编译成oal_intr_s3c2440a.lib;一个在src\oal\oallib\oalintr.c里,编译成oal.lib。最后链接成OAL.EXE,source文件里TARGETLIBS指定了上面两个lib文件,编译居然没有报错。- -!奇怪的问题2。
原来是我Clone BSP后,没把oalintr.c删除掉,直接修改里面的代码,但后来又在src\common里多添加了一个intr.c,汗。。。
对比两个OALIntrDoneIrqs()函数,发现DEVICEEMULATOR的oalintr.c里少写了一句OUTREG32(&g_pIntrRegs->SRCPND, mask);
最后把oallib\sources文件里SOURCES的oalintr.c去掉,再重新编译、烧写。搞定。
结贴~谢谢gooogleman和a747lulu747。 |