阅读:2407回复:4
如要使用dm9000a网络芯片,在pb5.0-Catalog里要添加什么驱动项
如要使用dm9000a网络芯片,在pb5.0-Catalog里要添加什么驱动项
我现在加的是:httpd、soap、nf2.0。 现在板子能启动起来,但是dm9000a的‘int’脚一直没有输出,故而导致占用cup过久,以使LCD触摸屏在dm9000a有片选时出现黑线,并且不能输入,像是卡住了。 现在在超级终端DNW里的显示如下: .................... I2C Init IIC IRQ mapping: [IRQ:27->sysIRQ:21]. OEMIoControl: Unsupported Code 0x10100d0 - device 0x0101 func 52 OEMIoControl: Unsupported Code 0x10100f8 - device 0x0101 func 62 EINT7 Enable CamClockOn = 1 Camera::Block TX Ended... CAMERA.DLL::InterruptThread Initialized. CAMERA: CIS_Open CIS: IOCTL_POWER_CAPABILITIES CAMERA: CIS_Open CAMERA: CIS_Close DeviceFolder::LoadDevice!Enumerate Found deprecated load instructions at (Drivers\BuiltIn\AFD). Driver cannot be unloaded. DeviceFolder::LoadDevice!Enumerate Found deprecated load instructions at (Drivers\BuiltIn\PPP). Driver cannot be unloaded. HW_USBClocks::D0 HW_USBClocks::D4 OEMIoControl: Unsupported Code 0x10100fc - device 0x0101 func 63 Lyg.p: Layout Manager successfully initialized to 2 Maximum Allowed Error 1280: CamClockOn = 0 MSIM: IM_ReadRegistry read KB 5 HW_USBClocks::D0 Explorer(V2.0) taskbar thread started. 请注意红色部分,‘ Driver cannot be unloaded ’这是何意?是啥的驱动? 麻烦大家能指点我一下。 多谢了。 |
|
沙发#
发布于:2009-11-10 02:50
你思考的几个点
httpd、soap、nf2.0 和 Driver cannot be unloaded 无关dm9000. 输出信息也不包含任何dm9000的内容。 网卡是ndis的miniport驱动,在注册表的comm下设置。 我觉得思路是 1 研究注册表,先让网卡驱动被加载 2 读dm9000的ID 3 根据硬件,分析网卡所在总线地址 4.让中断工作起来 |
|
板凳#
发布于:2009-11-10 02:51
1 研究注册表,先让网卡驱动被加载
2 根据硬件,分析网卡所在总线地址 3 读dm9000的ID 4.让中断工作起来 |
|
地板#
发布于:2009-11-10 09:10
回 2楼(high) 的帖子
多谢 我的板子是s3c2440,wince5.0,从nand flash启动。 dm9000a的片选是cs3,外部中断是eint7,cmd是addr2。 |
|
地下室#
发布于:2009-11-10 10:06
回 2楼(high) 的帖子
这是dm9000a的注册表信息:(语句后面注释是我对其值的理解) [HKEY_LOCAL_MACHINE\Comm\DM9CE] "DisplayName"="DM9000A ISA Fast Ethernet Adapter" "Group"="NDIS" "ImagePath"="dm9isa.dll" [HKEY_LOCAL_MACHINE\Comm\DM9CE\Linkage] "Route"=multi_sz:"DM9CE1" [HKEY_LOCAL_MACHINE\Comm\DM9CE1] "DisplayName"="DM9000A ISA Fast Ethernet Adapter" "Group"="NDIS" "ImagePath"="dm9isa.dll" [HKEY_LOCAL_MACHINE\Comm\Tcpip\Linkage] "Bind"="dm9ce1" [HKEY_LOCAL_MACHINE\Comm\DM9CE1\Parms] "BusNumber"=dword:0 "BusType"=dword:0 "XmitBuffer"=dword:20 "RecvBuffer"=dword:20 "IrqNumber"=dword:23 //在s3c2440a_intr.h里有:#define EINT7 35 ; "SysIntr"=dword:12 //sysintr_ether (sysintr_firmware+2),即是16+2 ;在intr.c里也有:if (irq==irq_eint7) {sysintr=0x12;} "IoAddress"=dword:18000000 //cs3起始地址,有的说要偏移0x300,即为:18000300 .为啥? 如果改了也不成功。 "NetworkAddress"="e0aac8de6351" [HKEY_LOCAL_MACHINE\Comm\DM9CE1\Parms\TcpIp] "EnableDHCP"=dword:0 "UseZeroBroadcast"=dword:0 "DefaultGateway"="192.168.1.1" "IpAddress"="192.168.1.8" "Subnetmask"="255.255.255.0" "DNS"="202.96.128.166" ;"WINS"="x.x.x.x" 但是在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注册表和驱动没啥关系,可现在驱动里的片选地址都是错的。 麻烦指点一下。 |
|