3626|8

1

帖子

0

TA的资源

等待验证会员

楼主
 

DM9000A网卡驱动代码的疑惑!各位高手大侠请指点一下! [复制链接]

正在看DM9000A网卡芯片的驱动。   
    看的过程中有一些疑问如下:

在netif.c中。
// 写入8bit数据
void dm_outb(unsigned char out_addr, unsigned char out_data)
{

unsigned short n_out_data = 0;

n_out_data = ((unsigned short)out_data) & 0xff;


if( out_addr )
{
  *((volatile UI16*)FLASH_DATA) = n_out_data;
}
else
{
  *((volatile UI16*)FLASH_ADDR) = n_out_data;
}

}
其中的FLASH_DATA和FLASH_ADDR
        在netif.c中。
        UI32 FLASH_DATA = (0xbf000000 + 0x188102);
        UI32 FLASH_ADDR = (0xbf000000 + 0x100102);

        这两个值我的理解是向网卡芯片寄存器写数据的时候,要先写寄存器的地址,再写寄存器的数据。如果要写寄存器地址就把它写入FLASH_ADDR,如果写数据就写入FLASH_DATA。但我不知道0x188102和0x100102是如何确定下来的。根据什么确定下来的值。bf000000(这个应该是flash地址在内存中的地址映射吧?但实际网卡发送数据是在flash中,因为电路连接的是flash,而实际程序处理这些数据应该是在sdram中,flash和sdram之间也要有数据交换?如何实现的?)这个基地址又是按照什么确定的。

请各位高手大侠帮我看一下,有不好描述的,就简单概括一下。上一次可能我自己没有把问题写清楚,所以弄得别人无法下手。如有比较满意的坚决给分。

最新回复

大侠们比较懒,就把分给蔡兄了!  详情 回复 发表于 2010-2-22 14:08
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
第一次回答问题哈,希望拿分喽
dm9000a网卡没有地址线和数据线之分,cmd脚的高低电平来区分sd总线上的数据是地址还是数据。
要写寄存器要先写寄存器地址,然后写寄存器数据。
0x188102和0x100102的定义,cmd连接到某根地址线上(这里应该是第16根或者第20根),sd总线连接到数据线上,当把数据写入0x188102和0x100102这个地址时,cmd上的电平不一样就可以区分出写的是数据还是地址。
over,还是不懂话,一会再说了
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
期待更多高手赐教,dm9000应用很广泛。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
0x188102和0x100102应该是硬件DM9000相对于CPU的偏移量,和硬件的设置有关系的。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢ahong008,这么快!这个偏移量和硬件的那些设置有关系,能具体一点吗?
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

6
 
feyeye1987 前面说的很有道理,但“当把数据写入0x188102和0x100102这个地址时,cmd上的电平不一样就可以区分出写的是数据还是地址”是根据写入的数据时看cmd上的电平去区分是地址还是数据,应该反了吧,应该是根据先去操作cmd电平,然后才决定写的数据是地址还是数据吧?另外你仍然没有说清楚0x188102和0x100102是如何得到的哦?但是会给你分的,你是理解了我的问题。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
dm9000a芯片是根据cmd判断没有问题。你把数据写入0x188102这个地址,地址线上自然会把第16根置高,假设第16根和cmd是连接的。那么dm9000a检测cmd上的电平,然后去处理sd总线上的数据。
这个两个地址是和电路以及芯片有关系。首先这两个地址在系统中是空闲的,然后这两个地址有一根地址线电平时不同,这根地址线就是连到cmd脚上的那根。
比如我自己写的驱动中
#define DM_ADD (*((volatile unsigned int *) 0x100000))
#define DM_CMD (*((volatile unsigned int *) 0x100004))
第3跟连到cmd上
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

8
 
还是不太理解你说的,能加我msn或qq吗?zheng_wen_fei@live.cn  or qq:232343552
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
大侠们比较懒,就把分给蔡兄了!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表