最近在调试 DM9000AEP ,居然调试了2周, 把我给郁闷得要吐血了。
好了,言归正传:
1、把 6410 DM9000AEP 的驱动 COPY 到 S3C2450 的BSP 中。
2、修改 DM9000AEP 的数据偏移。
这里需要注意,因为我使用的是 16BIT 总线,CMD 接 A1 , 为什么这里使用 04 能正常运行呢?
还没想明白。
#define DM9000_DATA_OFFSET0x04
3、设置系统的中断号,刚刚开始以为这是系统的物理中断号,直接把物理中断号记录设置为网络中断,
结果始终没有参数中断。
最后发现这个中断号应该使用系统分配的逻辑中断号。
所以在
BOOL BSPIntrInit()
{
//初始化 IO 为中断脚
pOalPortRegs->GPGCON &= (~(3<<16));
pOalPortRegs->GPGCON |= ((2<<16));
pOalPortRegs->GPGUDP &= (~(3<<16));
pOalPortRegs->GPGUDP |= (2<<16);
pOalPortRegs->GPGDAT &= (~(1<<8));
pOalPortRegs->EXTINT2 &= (~(0xf<<0));
pOalPortRegs->EXTINT2 |= (0x01<<0) ;
pOalPortRegs->EINTPEND |= (1<<16) ;
pOalPortRegs->EINTMASK &= (~(1<<16));
//申请系统中断 SYSINTR_ETH 为 0X23
OALIntrStaticTranslate(SYSINTR_ETH, IRQ_EINT16);
//使能中断
value = IRQ_EINT16;
OALIntrEnableIrqs(1, &value);
}
把这个 SYSINTR_ETH 设置为 IrqNumber
{ CID_IRQ_NUMBER, 0x23, NDIS_STRING_CONST("IrqNumber")},
4、设置 DM9000AEP 的读写地址,这个和接 CPU 的 NCS 脚有关。
我的 DM9000AEP 的 CS 接 CPU 的 NCS1 ,
而我的 NCS1 的读写地址是 0x8000000
所以
{ CID_IO_BASE_ADDRESS, 0x8000000, NDIS_STRING_CONST("IoAddress")},
5、注意修改 NCS1 的总线宽度,为 16BIT ,这个至关重要,我之前没注意,所以导致读 ID 异常。
pMATRIX->EBICON = 4;
// BANK1
pSSMCReg->SMBIDCYR1 = 0;
pSSMCReg->SMBWSTWRR1 = 14;
pSSMCReg->SMBWSTOENR1 = 2;
pSSMCReg->SMBWSTWENR1 = 2;
pSSMCReg->SMBWSTRDR1 = 14; //14clk
pSSMCReg->SMBCR1 |= (1<<0);
pSSMCReg->SMBCR1 &= ~(3<<4);
pSSMCReg->SMBCR1 |= (1<<4) ;
到此,驱动部分的修改结束。
下面开始做 注册表。注意注册表里面的 IOADDRESS 以及 IRQNUMBER 就可以了
[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:1
"XmitBuffer"=dword:20
"RecvBuffer"=dword:20
"IrqNumber"=dword:23
"SysIntr"=dword:23
"IoAddress"=dword:08000000
"NetworkAddress"="e0aac8de6351"
[HKEY_LOCAL_MACHINE\Comm\DM9CE1\Parms\TcpIp]
"EnableDHCP"=dword:1
"UseZeroBroadcast"=dword:0
; "DefaultGateway"="192.168.1.1"
; "IpAddress"="192.168.1.9"
; "Subnetmask"="255.255.255.0"
; "DNS"="202.96.128.166"
; "WINS"="0.0.0.0"
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"Start Page"="http://www.google.com"
"Search Page"="http://www.google.com"
;[HKEY_LOCAL_MACHINE\System\ObjectStore\RegFlush]
; "SpawnThread"=dword:1
; "FlushPriority256"=dword:FF
; "ActivityThreshold"=dword:100
; "FlushPeriod"=dword:2710
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent]
"Template"="Same as Windows XP"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"EnableAutodial"=dword:0
这样 DM9000AEP 添加结束。