转自csdn

#define CONFIG_DM9000_BASE 0x20000300
#define DM9000_IO                      0x20000000
#define DM9000_DATA                0x20000004
这几个数值代表的地址是从哪里得到的,我翻了MINI2440的原理图和S3C2440的芯片手册没看懂从哪里找网卡的地址,请老师指导一下

tiny6410/mini6410开发板上DM9000与S3C6410的连接关系入手。下面是两者之间的连接示意图:

DM9000的访问地址主要是由CMD和CS#这两个端口的连接方式来确定的,CS#是DM9000的片选引脚,CMD引脚在芯片手册中描述如下:
CMD pin :
Command Type
When high, the access of this command cycle is DATA port
When low, the access of this command cycle is INDEX port

DM9000的CS#接的是S3C6410静态内存区(物理地址为0x10000000~0x3fffffff)的Bank1片选nCS1引脚(对应起始物理地址为0x18000000),CMD引脚则接的是S3C6410地址总线的Xm0ADDR2位。因此可以确定,DM9000的INDEX端口地址是0x18000000(Xm0ADDR2=0),DATA端口的地址是0x18000004(Xm0ADDR2=1)。

注意:    由上面的分析可以知道,DM9000的寻址仅仅取决于其CMD和CS#两个引脚的接法。也就是说,即使读者要将访问地址改为“0x18000000 + 0x300”(事实上在友善之臂提供的uboot以及其他一些资料中就是用的这个地址),同样能够正常的访问到网卡的INDEX端口。

提示:    确定了DM9000的INDEX和DATA端口地址,我们就有了访问网卡的途径。读网卡寄存器的方法是:先向INDEX端口写入寄存器的地址,再从DATA端口读出该寄存器的值。写寄存器的方法与之对应:先向INDEX端口写入寄存器的地址,再向DATA端口写入值。通过I/O端口读写网卡寄存器的方法在驱动中由ior()、iow()这来两个函数实现。

国嵌范老师 2011-07-02 11:54
摘自《国嵌嵌入式标准教材--驱动开发深入班》  DM9000网卡驱动分析

首先,让我们打开arch/arm/mach-s3c64xx目录下的mach-mini6410.c,找出DM9000平台驱动对应的平台设备及资源。下面列出了平台设备资源的情况:
#define S3C64XX_PA_DM9000    (0x18000000)
#define S3C64XX_SZ_DM9000    SZ_1M
#define S3C64XX_VA_DM9000    S3C_ADDR(0x03b00300)

static struct resource dm9000_resources[] = {
    [0] = {
        .start    = S3C64XX_PA_DM9000,
        .end        = S3C64XX_PA_DM9000 + 3,
        .flags    = IORESOURCE_MEM,
    },
    [1] = {
        .start    = S3C64XX_PA_DM9000 + 4,
        .end        = S3C64XX_PA_DM9000 + S3C64XX_SZ_DM9000 - 1,
        .flags    = IORESOURCE_MEM,
    },
    [2] = {
        .start    = IRQ_EINT(7),
        .end        = IRQ_EINT(7),
        .flags    = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,
    },
};

这里定义了三个平台资源,下标为0和1的资源(后面简称为资源0、资源1…)是IO内存资源,其中资源0的start成员代表的地址S3C64XX_PA_DM9000,也就是0x18000000,是访问DM9000的INDEX端口的地址,而资源1的start成员代表的地址S3C64XX_PA_DM9000+4,也就是0x18000004,则是访问DM9000的DATA端口的地址。DM9000的INDEX端口和DATA端口分别用来写命令和读写数据,要理解为什么能通过这两个地址访问对应的端口,需从

http://blog.csdn.net/gooogleman/article/details/7533348

关于6410板文件的dm9000的平台设备地址的更多相关文章

  1. iOS系列 基础篇 02 StoryBoard 故事板文件

    iOS基础 02 StoryBoard 故事板文件 目录: 1. 故事板的导航特点 2. 故事板中的Scene和Segue 3. 本文最后 在上篇HelloWorld工程中有一个Main.storyb ...

  2. Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析

    Office文件的奥秘——.NET平台下不借助Office实现Word.Powerpoint等文件的解析 分类: 技术 2013-07-26 15:38 852人阅读 评论(0) 收藏 举报 Offi ...

  3. 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解

    本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.c ...

  4. Linux驱动之平台设备

    <平台设备设备驱动> a:背景: 平台总线是Linux2.6的设备驱动模型中,关心总线,设备和驱动这3个实体.一个现实的Linux设备和驱动通常需要挂接在一种总线上(比如本身依附于PCI, ...

  5. 迅为4412开发板Linux驱动教程——总线_设备_驱动注冊流程具体解释

    视频下载地址: 驱动注冊:http://pan.baidu.com/s/1i34HcDB 设备注冊:http://pan.baidu.com/s/1kTlGkcR 总线_设备_驱动注冊流程具体解释 • ...

  6. [深入浅出Windows 10]不同平台设备的适配

    2.3 不同平台设备的适配 Windows 10通用应用程序针对特定的平台还会有一个子API的集合,当我们要使用到某个平台的特定API的时候(比如手机相机硬件按钮触发事件),这时候就需要调用特定平台的 ...

  7. 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联

    转载自:http://www.kancloud.cn/yueqian_scut/emlinux/106829 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sy ...

  8. Linux驱动之平台设备驱动模型简析(驱动分离分层概念的建立)

    Linux设备模型的目的:为内核建立一个统一的设备模型,从而有一个对系统结构的一般性抽象描述.换句话说,Linux设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同的属性在内核中实现,而为需要 ...

  9. 46.Linux-创建rc红外遥控平台设备,实现重复功能(2)

    上章链接:46.Linux-分析rc红外遥控平台驱动框架,修改内核的NEC解码函数BUG(1) 在上章分析了红外platform_driver后,已经修改bug后,接下来我们自己创建一个红外platf ...

随机推荐

  1. java -cp ../../DESUtil/ Hello,用-cp指定classpath

    运行hello.class 文件 怎么用 java +路径 就是不在class目录下运行 怎么做??? 我想要的是 java 直接去运行某个路径下的class文件 不想到它的目录那里再java hel ...

  2. SPSS正交设计的操作

    SPSS正交设计的操作 设要做二因素的正交设计,A因素有三个水平,B因素有两个水平.则选择Data-->Orthogonal Design-->generate,弹出的就是正交设计窗口: ...

  3. java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.copyInputStreamToFile(Ljava/io/InputStream;Ljava/io/File;)V

    昨天用的好好的,今天就不行了 也懒得搞 具体原因就是引用的问题 找了个能用的pom 直接贴过去完事儿

  4. SQL SERVER 自增列的方法

    declare @Table_name varchar(60) set @Table_name = ''; if Exists(Select top 1 1 from sysobjects       ...

  5. 模拟21 题解(waiting)

    留坑待填 效率!!! 题还没改Oh,NO!!!

  6. 使用Gradle构建项目

    使用gradle构建项目之前,咱们先聊聊maven,使用maven构建项目和配置主要 接下来正式使用gradle来构建项目的和步骤: 1.下载源码 2.下载gradle 1.下载地址:https:// ...

  7. HZOI20190714 T3建造游乐场

    先放作者的正解: 先说g吧,有i个点的话,在其中i-1个点中有$C_{i-1}^{2}$种边,每个边有选和不选两种情况.如果度不是偶数呢?用剩下那个点给他连上呗.如果剩下那个点度数不是偶数呢?这是不可 ...

  8. Valgrind 初次接触

    Valgrind 英文的意思是:堆内存 它有很多小工具,作用各不相同 学习于: http://blog.csdn.net/sduliulun/article/details/7732906 http: ...

  9. C/C++中运算符优先级汇总

    编程语言C运算符优先级 优先级1: ( ).[ ].->. . 含义:圆括号.下标运算符.指向结构体成员运算符.结构体成员运算符 优先级2:!.~.++.――.-.(类型).*.&.si ...

  10. linux命令格式及who、whoami、su和passwd命令

    linux命令格式及who.whoami.su和passwd命令 1. Linux命令的格式 Linux命令的语法格式: 命令 [选项] [参数] 命令格式中命令.选项.参数的具体含义: 命令:告诉L ...