阅读:910回复:0
菜鸟日记(-)
菜鸟日记(-)
症状:在使用DS开发驱动程序的时候,使用向导生成原代码,编译成功,但在运行的时候,出现系统崩溃,错误代码是:IRQL_NOT_LESS_OR_EQUAL(0X0A) 资源:包括IRQ、IO、MEM 解决方法:检查代码,太菜,没有发现问题,但找到问题出在ISR上面,编译DS的相关示例程序,对资源访问没有问题。再看示例原代码,还是没有找到问题所在。最后发现向导生成的代码中在对DPC的处理上,和ISR的处理顺序有问题,硬件的中断是10ms就发出一个,这个时候,发现原代码中在对DPC进行setup的时候,是在ISR初始化之后,那么就有可能出现,中断太快,而导致ISR开始运行的时候, DPC还没有初始化成功,ISR的运行级别很高,完全可以中断掉DPC的初始化,所以产生ISR在排队DPC回调函数的时候,出现空指针。找到问题所以后,把DPC的setup提前到ISR的初始化前。运行成功,问题解决掉。 注:驱动程序的开发太累。不小心就是系统崩溃,而网络中的资源又很少,这个论坛还相对很集中了,这对很多象我一样对驱动程序还不是很熟悉的人来说,入手太困难;现在DS的资料也不是很多,而且多数还是E文的,(还好,有金山糍粑,但毕竟没有看中文来的快)。 所以在此抛砖(呵呵,不要跑,只是抛,不是拍砖),希望能看到更多、更精彩的学习文章。我也会继续写我的菜鸟日记,希望能对大家有所帮助。 :) |
|
|