4355|5

62

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

EDMA中的内存块大小问题 [复制链接]

我们开发一个大硬盘的驱动程序,使用EDMA与内存传输数据,每次只能传输4K个数据量,如果我把传输值增加到8K,用WinDbg调试出现内存错误,目标机死机。信息如下:

Fatal System Error: 0x000000c2
                 (0x00000007,0x00001153,0x00000000,0x865205D8)

Break instruction exception - code 80000003 (first chance)

如果我把数据分两次传,每次4K,然后拷到缓冲区,还有这样的问题。请问有没有方法解决这个问题?

最新回复

  详情 回复 发表于 2008-3-26 16:17
点赞 关注

回复
举报

63

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
This is your code. Generally, you would want to recompile with perhaps GetLastError() and print it out. However, you do not have to do that. Although in this case it may be simple to, if you're stepping through code and a function fails, wouldn't you want to know what happened on the spot? Let's try to debug this. First, we'll start the debugger and break on our function. Since we have symbols, this is easy. If we didn't, we could just break on CreateFile as it is an exported symbol and would always be available.

 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我在kd>下敲入命令!analyze -v,出现:
Cannot get _POOL_TRACKER_BIG_PAGES type size

MODULE_NAME:  nt

FAULTING_MODULE: 804e0000 nt

DEBUG_FLR_IMAGE_TIMESTAMP:  3e8015c6

POOL_ADDRESS:  863ec800

BUGCHECK_STR:  0xc2_7

DEFAULT_BUCKET_ID:  DRIVER_FAULT

LAST_CONTROL_TRANSFER:  from 80545108 to 804e11c0

STACK_TEXT:  
WARNING: Stack unwind information not available. Following frames may be wrong.
f7899fd8 80545108 00000003 00000000 863ec7f8 nt!DbgBreakPointWithStatus+0x20
f789a340 805455b9 000000c2 00000007 00001153 nt!KeRegisterBugCheckReasonCallback+0x688
f789a360 8056aa72 000000c2 00000007 00001153 nt!KeBugCheckEx+0x19
f789a3c0 80625e5a 863ec800 00000000 00000000 nt!ExFreePool+0x1642
f789a3dc 80627258 00000000 00000000 f789a61c nt!IoReadPartitionTable+0x73a
f789a3f8 8062914d 00000002 f789a61c f7722080 nt!IoReadPartitionTableEx+0x68
f789a5b8 00240023 80f64d90 00240023 80f64dc8 nt!IoGetBootDiskInformation+0x14d
00002000 00000000 00000000 00000000 00000000 0x240023


STACK_COMMAND:  .bugcheck ; kb

FOLLOWUP_NAME:  MachineOwner

BUCKET_ID:  WRONG_SYMBOLS

Followup: MachineOwner


什么原因?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
支持一下
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

5
 
楼上两位说的都很有道理,我要补充的是,
你可以检查一下驱动里的IRP串行化处理是否处理对了
EDMA是有一个一次性搬运的上限的,而多次搬运出错,极可能是互斥访问的冲突问题。
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 3 楼 szmuma 的回复:
支持一下
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表