stblade
驱动牛犊
驱动牛犊
  • 注册日期2009-08-15
  • 最后登录2009-11-10
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望101点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1926回复:3

关于dm9000a的注册表修改问题

楼主#
更多 发布于:2009-10-25 09:50
我的s3c2440-wince5.0板子,由DEMO板访制,多加了个CPLD,但dm9000a没用它。现在调试dm9000a,片选是CS3,中断EINT7,CMD为ADDR2。

症状是:一旦dm9000a有片选,则LCD触摸屏出现黑线,并逐渐发白,触摸、鼠标不能输入,感觉像是卡住了,同时整个板子的电流有较大起伏,约200mA。片选一变高,则一切恢复正常;再一会又有片选时,症状如此反复。全程‘INT’脚没动静。
我想是:dm9000a没有产生中断而占用CPU过长,导致LCD不能刷新。但同样的NK.bin下载到DEMO板却能正常用。

然后我修改platform.reg。(这是本身的没改)
[HKEY_LOCAL_MACHINE\Comm\DM9CE1\Parms]
...
"RecvBuffer"=dword:20
"IrqNumber"=dword:23
"SysIntr"=dword:12
"IoAddress"=dword:18000000    //cs3的起始地址

其中"IrqNumber"应该怎么计算呢?在s3c2440a_intr.h里有:#define EINT7  35,就是这个吗?
"SysIntr"的值是SysIntr_firmware+2,即是16+2。 "IoAddress"=dword:18000000,有的说要偏移0x300,即为:18000300 .为啥?在哪里查看其偏移量?

但是在dm9isa.cpp里却是:(仅贴出不同的地方)
{ CID_RXBUFFER_NUMBER, 0x10, NDIS_STRING_CONST("RecvBuffer")},   //?上为0x20
{ CID_IO_BASE_ADDRESS, 0x10000000, NDIS_STRING_CONST("IoAddress")},
{ CID_IRQ_NUMBER, 0x03, NDIS_STRING_CONST("IrqNumber")},    //?上为0x23
{ -1,-1,NULL}
注册表信息与驱动信息不同。但好像是说wince注册表和驱动没啥关系,可现在驱动里的片选地址都是错的。
 
我在其他地方看到有这样的问题:‘DM9000的RX没有打开,并且RX和TX的中断也没有打开’,这个在那里查看?还有MMU的状态,在哪里查看。
(我的dm9000a的驱动包含以下文件:common.cpp,common.h;dm_types.h;device.cpp,device.h;dm9isa.cpp,dm9isa.h,dm9isa.def;driver.cpp,driver.h;wince.c;dm9000_3.2.9-wince5.0.README;)
麻烦分析一下,我的邮箱是stblade@tom.com
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-11-06 00:11
"IoAddress"=dword:18000000,有的说要偏移0x300,即为:18000300 .为啥?在哪里查看其偏移量?
这个是你CS3选择的地址啊!
stblade
驱动牛犊
驱动牛犊
  • 注册日期2009-08-15
  • 最后登录2009-11-10
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望101点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-11-06 08:43
回 1楼(NewTech) 的帖子
可是cs3的地址是:18000000,为何要偏移0x300?
为何驱动和注册表不一致,要改的话只改注册表就可以了吗?
你觉得我这种没有中断的问题,可能会是什么错误呢?
麻烦了,我现在真是一头雾水。
high
论坛版主
论坛版主
  • 注册日期2002-08-10
  • 最后登录2010-07-26
  • 粉丝4
  • 关注0
  • 积分60分
  • 威望655点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分60分
地板#
发布于:2009-11-10 03:10
dm9000这个貌似可以不加0x300的偏移
irq是硬件决定的。你选择了哪个中断,irq即定死了。 35的话对应的十六进制就是0x23
游客

返回顶部