关于DM9000A驱动的问题

armeasy 2010-04-30 02:37:23
如题,飞凌开发板的DM9000A的硬件连接:
一:中断口连接到了2440的GPF7上,用来响应网卡中断;

二:CS口接到了2440的nGCS4,即GPA15上,用来选择网卡;

三:CMD口接到了地址总线ADDR2上,用于决定DATA口或INDEX口???

我仔细看了DM9000A的驱动,有如下疑问:
一:整个驱动中没见有GPF7的配置,程序中如何说明采用了GPF7做为中断响应脚?
二:整个驱动中没见有GPA15的配置,程序中如何通过该脚选择DM9000A?不能一直处于选中状态吧!否则总线会造成DRAM出错。
三:CMD口为什么要接到ADDR2上?接到其他地址线上可以吗?
...全文
197 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuiqiang 2012-06-09
  • 打赏
  • 举报
回复
唉,没实质性内容
armeasy 2010-05-05
  • 打赏
  • 举报
回复
结贴,问题解决。
一:中断配置在注册表中,驱动中上文已经提到;
二:CS脚可以处于常选中状态,因为DRAM分配问题;每个bank对应128M;
三:CMD不一定非得接到ADDR2上,可以接到其它地方,改代码即可。
ymzhou117 2010-05-05
  • 打赏
  • 举报
回复
mark....
sherlock_lai 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 armeasy 的回复:]
注册表里面信息如下:

C/C++ code
IF BSP_DM9000 !
[HKEY_LOCAL_MACHINE\Comm\DM9CE]
"DisplayName"="DM9000A/9010 ISA Fast Ethernet Adapter"
"Group"="NDIS"
"ImagePath"="dm9isa.dll"……
[/Quote]
一般来说,+偏移要么是由寄存器地址决定的,
要么由外部硬件电路决定,例如0x20000001,则最后那个‘1’就是硬件上的高电平。
armeasy 2010-04-30
  • 打赏
  • 举报
回复
中断懂了,原来在S3c2440a_intr.h里面中断定义:
#define IRQ_EINT7 35
0x23 = 35,表示接GPF7.
CS呢?
armeasy 2010-04-30
  • 打赏
  • 举报
回复
注册表里面信息如下:
IF BSP_DM9000 !
[HKEY_LOCAL_MACHINE\Comm\DM9CE]
"DisplayName"="DM9000A/9010 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/9010 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
"MACAddress" =hex:00,0A,EB,FD,7A,00

[HKEY_LOCAL_MACHINE\Comm\DM9CE1\Parms\TcpIp]
"EnableDHCP"=dword:0
"UseZeroBroadcast"=dword:0
"DefaultGateway"="192.168.1.1"
"IpAddress"="192.168.1.227"
"Subnetmask"="255.255.255.0"
"DNS"="192.168.1.1"
ENDIF BSP_DM9000 !


Dm9isa.cpp里面有这么一段:
CONFIG_PARAMETER	g_szDm9ConfigParams[] =
{
{ CID_CONNECTION_TYPE, -1, NDIS_STRING_CONST("ConnectionType") },
{ CID_SLOT_NUMBER, -1, NDIS_STRING_CONST("SlotNumber")},
{ CID_BUFFER_PHYSICAL_ADDRESS, 0, NDIS_STRING_CONST("BufferPhysicalAddress")},
{ CID_TXBUFFER_NUMBER, 0x20, NDIS_STRING_CONST("XmitBuffer")},
{ CID_RXBUFFER_NUMBER, 0x10, NDIS_STRING_CONST("RecvBuffer")},
{ CID_ADAPTER_NUMBER, 0, NDIS_STRING_CONST("AdapterNumber")},
//{ CID_IO_BASE_ADDRESS, 0x08000300, NDIS_STRING_CONST("IoAddress")},// 这样应该就改成nGCS1了吧!!!
{ CID_IO_BASE_ADDRESS, 0x20300000, NDIS_STRING_CONST("IoAddress")},// 这里说明使用nGCS4???nGCS4所选通的对应的DRAM的地址?
{ CID_IO_RANGE, 0x10, NDIS_STRING_CONST("IoRange")},
{ CID_IRQ_NUMBER, 0X23, NDIS_STRING_CONST("IrqNumber")},// 这里是物理中断号???
{ -1,-1,NULL}
};


请问:DM9000的CS口,那个地址是怎么决定的呢?即上面的,为什么0x20300000表示nGCS4选择?
看2440手册,nGCS4选择的起始地址为0x20000000,加了300000这个偏移地址有什么作用?
如果换成其他选择口,如nGCS1口,地址又是多少?
0x23表示接到哪个硬件中断口上了?迷惑中。。。。。。。。。。。。。。。。。。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧