在做dsp pci驱动时,有一句:
WRITE_REGISTER_ULONG((PULONG) (pdx->base[TI_OPREGS] + (TI_HSR/4)), TI_DISABLE);
TI_HSR 做了除以4,感觉不解,就把除以4去掉,运行。。。毫无意外的蓝屏了
pdx->base[TI_OPREGS] + (TI_HSR/4)
检测了它的值,发现和 pdx->base[TI_OPREGS]与TI_HSR的值相加结果一样。
感到很疑惑,后来看了pdx->base[TI_OPREGS]它的类型是PULONG,即无符号长整型数指针。
上述代码属于指针运算了,对于PULONG类型,加1,相当于在数值上加四。

本文分析了DSPPCI驱动中的一段关键代码,详细解释了为什么在进行寄存器写入操作时,需要对TI_HSR进行除以4的操作。通过对指针运算的理解,揭示了该操作背后的原理。
1877






