阅读:1427回复:5
有关e100ebx例子的问题
在win2k的ddk e100ebx 例子中, 有关dma操作方面;
在接收数据的流程中,代码中使用了NdisMAllocateSharedMemory()分配了供DMA操作的内存区域,并且这块内存已经与NDIS_BUFFER进行了“绑定”,我的问题是DMA这么和这块内存进行“绑定”? 我在其它的一些NIC驱动中看到把这块内存的物理地址传给了NIC中的某个寄成器,如此这样进行了所谓的绑定,还有什么NdisMUpdateSharedMemory()操作等? :mad: |
|
沙发#
发布于:2002-08-15 12:41
你能把其他的nic driver 源程序发送给我一份吗?我正在学习编写nic driver, 也正在看ddk 例子,也想看看其它相关的例子,好对比学习。刚看到 initialize 部分。
e-mail: sharc2002@163.com |
|
板凳#
发布于:2002-08-15 12:47
好的,我也是刚学,共同探讨吧
|
|
地板#
发布于:2002-08-19 19:05
“绑定”用的太深奥了吧,其实就是告诉dma 控制器其传输数据的目标或起始地址。
至于NdisMUpdateSharedMemory(),我的理解,那是为了保证dma 写操作时,数据的传输的正确性(仅仅某些平台有效,和硬件是否支持有关)。 |
|
地下室#
发布于:2002-08-19 19:34
he, he , 对不起,喜欢“起术语”, 让你误导了;
由于手头忙, 我没时间具体看下去,但我想,这里有可能遵从了win2k 的“DMA处理模型”(又起术语了): 这个e100bx有可能是\"从属dma模型\"的例子; 当然,使用DMA不必要一定要遵从win2k的“模型”框架,自己直接操作dma也可以; 不知道对不对, 还要高手指点; |
|
5楼#
发布于:2002-08-20 09:16
其实还是讲英文好懂,每个地方都一样,中文不一样,几乎每本书都不大一样,看了一头雾水。
|
|