阅读:1716回复:9
怎么修改BSP的中断部分?
有一块卡需要增加中断处理,要怎样修改BSP才可以啊?是不是需要修改
OEMInterruptEnable, OEMInterruptDisable, OEMInterruptDone, OEMInterruptHandler才可以? 不知道我说清楚了没有。 [编辑 - 1/20/05 by qwdrv] |
|
沙发#
发布于:2005-01-19 14:17
(1)你的处理器是x86的吗?
(2)增加中断处理可以不修改BSP。 (3)你前面说“另外关于中断号怎么处理”是什么意思?不是很明白:)) (4)你的卡是什么接口的? [编辑 - 1/19/05 by wwei_wang] |
|
|
板凳#
发布于:2005-01-19 14:57
(1)你的处理器是x86的吗?懂的东西太少了,现在没有什么头绪,期待大虾指点迷津。 (1)处理器是ARMV4 (2)卡是VLIO接口 [编辑 - 1/20/05 by qwdrv] |
|
地板#
发布于:2005-01-19 15:05
对于前面说的第三点还有几个问题。
1。OEMInterruptHandler的处理里是从某一段内存里读取终端信息的(INTC_BASE_U_VIRTUAL->icip)这是为什么? 2。由于是NDIS驱动,ISR和IST的注册已经由NDIS完成,那么我指定的逻辑中断号要在什么时候通知系统?是不是一定要按照ne2000的方法做? 3。修改OEMInterruptHandler的同时Enable,Disable,Done这三个函数是不是也需要作相应修改? |
|
地下室#
发布于:2005-01-19 15:13
"如果是,则OEMInterruptHandler需要返回原先定义好的一个逻辑中断号,比如SYSINTR_FIRMWARE+XX。这时ISR被调用,由于我注册了中断号和ISR,所以在IST中NDIS会调用我的MiniportISR完成中断处理。问题是硬件中断号能不能有我手动指定,还有逻辑中断号是不是可以任意值。"
应该是这样吧: (1)在OEMInterruptHandler函数中进行中断的判断和简单的处理,而主要任务应该在IST中完成; (2)如需进一步处理,OEMInterruptHandler返回一个逻辑中断SYSINTR_FIRMWARE+XX,这时你的IST应该被调用去执行后续任务; (3)逻辑中断号可以自己定义也可以通过调用那个相应函数(KernalIoControl)返回得到。 (4)有些老式isa卡件的中断是可以指定的。对于即插即用的卡件其硬件中断号应该由系统动态分配。你用那个固定的中断号不就可以了吗? [编辑 - 1/19/05 by wwei_wang] |
|
|
5楼#
发布于:2005-01-19 15:24
"如果是,则OEMInterruptHandler需要返回原先定义好的一个逻辑中断号,比如SYSINTR_FIRMWARE+XX。这时ISR被调用,由于我注册了中断号和ISR,所以在IST中NDIS会调用我的MiniportISR完成中断处理。问题是硬件中断号能不能有我手动指定,还有逻辑中断号是不是可以任意值。"(1)OEMInterruptHandler后面应该是调ISR吧? (2)逻辑中断号应该可以重复的是吧? (3)用固定中断号是什么意思? |
|
6楼#
发布于:2005-01-19 15:35
(1)我是说当从OEMInterruptHandler返回一个逻辑中断SYSINTR_FIRMWARE+XX时,你的IST会被调用;
(2)你前面不是说“关于中断号我是这样想的:卡上有一个固定的中断号”吗?:))) (3)硬件中断可以共享,但我认为逻辑中断号一般是不需要重复的,除非一个ist对应多个isr,这种情况下应该可以重复。 |
|
|
7楼#
发布于:2005-01-19 15:39
现在问题是我并不知道卡上是不是有固定的号,只是猜想有而已。
对于前面说的第三点还有几个问题。这些问题也麻烦你看一看。谢谢。 |
|
8楼#
发布于:2005-01-19 15:58
(1)我没有看源码,我觉得在这里首先要确定中断源,然后才能进行进一步的处理,所以这一段应该与确定中断源有关;
(2)我是这么理解的:当经过判断是你的卡件产生的中断,在进行必要的处理后,就应该返回逻辑中断号给内核。 (3)Enable,Disable,Done这几个函数不一定非要修改。它们的功能在pb的帮助中有说明,修不修改要根据你自己的需要。 |
|
|
9楼#
发布于:2005-01-19 16:04
恩,我再看看资料。
给分先。 |
|