micro2440

1.EINT7 中断
2.LnoE 读选通
3.LnwE 写选通
4.LnGCS4  片选
网卡和sdram,norflash都是统一编址到2440的bank区间。dm9000的片选信号接到了2440的LnGCS4,所以dm9000的bank空间应该是bank4,范围是2千万-2千8百万

所以在mach-mini2440.c,根据接线方式指定网卡的基地址应该为2000 0000。但是如下

/* DM9000AEP 10/100 ethernet controller */
#define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300)
//#define S3C2410_CS4 (0x20000000) ,map.h
static struct resource mini2440_dm9k_resource[] = {[0] = {.start = MACH_MINI2440_DM9K_BASE,//2000 0300.end   = MACH_MINI2440_DM9K_BASE + 3,//2000 0303.flags = IORESOURCE_MEM},[1] = {.start = MACH_MINI2440_DM9K_BASE + 4,//2000 0304.end   = MACH_MINI2440_DM9K_BASE + 7,//2000 0307.flags = IORESOURCE_MEM},[2] = {.start = IRQ_EINT7,.end   = IRQ_EINT7,.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,}
};

指定的是0x2000 0300,这个可能是xx原因。
refer to  http://www.arm9home.net/read.php?tid=1817&page=1#9372
其实指定0x2000 0000也是对的。因为访问DM9000寄存器的时候,是先向数据总线写地址,再向数据总线写数据。(有点类似于usb芯片d12)。但怎么区分是地址和数据呢?
dm9000有个cmd引脚
Command Type
When high, the access of this command cycle is DATA port。 当cmd pin高电平时,认为访问的是数据。
When low, the access of this command cycle is ADDRESS port。当cmd pin低电平时,认为访问的是地址。
micro2440的laddr2接到了dm9000的cmd。所以
2440访问地址0x2000 0300-0x2000 0303时,地址线最后3位000b-011b,即laddr2输出0.此时dm9000认为从数据总线上取得的是地址。
2440访问地址0x2000 0304-0x2000 0307时,地址线最后3位100b-111b,即laddr2输出1.此时dm9000认为从数据总线上取得的是数据。
这也解释了为什么dm9000仅占用了bank4的0-3和4-7这么一点点区间。因为dm9000仅有"两个地址",一个用来存放地址,一个用来存放数据。

所以基地址0x2000 0000和0x2000 0300对dm9000来说是一样的。2440只有一个地址线laddr2接到了dm9000的cmd,只要保证laddr2是正确的就行。

从proc可以检查一下:

[root@FriendlyARM /]# cat /proc/iomem
20000300-20000303 : dm900020000300-20000303 : dm9000
20000304-20000307 : dm900020000304-20000307 : dm9000[root@FriendlyARM /]# cat /proc/interrupts CPU030:     340140         s3c  S3C2410 Timer Tick32:          0         s3c  s3c2410-lcd37:          0         s3c  s3c-mci42:         86         s3c  ohci_hcd:usb151:         39     s3c-ext  eth0  //for dm9000 60:          0     s3c-ext  s3c-mci70:         44   s3c-uart0  s3c2440-uart71:        147   s3c-uart0  s3c2440-uart79:          0     s3c-adc  s3c2410_action80:          0     s3c-adc  adc, s3c2410_action83:          0           -  s3c2410-wdt

5.LDATA0-LDATA15 数据总线
16位
6.SA*:不是地址线。dm9000的地址信息和数据信息都是通过数据总线获取的。

转载于:https://www.cnblogs.com/-song/archive/2011/12/17/3331897.html

dm9000 driver 2相关推荐

  1. dm9000 driver 1

    资料 dm9000-中文 dm9000--ae make menuconfig Device Drivers  ---> [*] Network device support  ---> ...

  2. Linux 网络设备驱动(dm9000)

    网络设备驱动的分层 网络协议接口层 ------------------ 数据链路层 网络接口层 ------------------------ 数据链路层 设备驱动功能层 ------------ ...

  3. (一)mini2440网卡驱动dm9000之dm9000_probe分析

    2012-04-07 02:05:48|  分类: 跟着国嵌学arm|举报|字号 订阅 /*首先我们必须知道probe函数什么时候调用.其实在平台设备驱动注册的时候,内核会在平台设备总线上去遍历所有的 ...

  4. Linux DM9000网卡驱动程序完全分析

    版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息. 说明1:本文分析基于内核源码版本为linux-2.6.31 说明2:本文在理解了linux中总线.设备和驱动模型的基础上 ...

  5. can3--socketcan之mcp251x.c

    函数原型源于2.6.38 ****************************************************************** spi驱动结构见 http://blog ...

  6. 解析Linux内核模块的链接顺序

    关键字:Linux 昨天晚上把我们设备的内核升级到最新的Linux-3.3上去了,这个版本主要新特性包括:合并了来自Android项目的内核代码,支持新的架构TI C6X,改进了Btrfs文件系统的b ...

  7. u-boot for tiny210 ver1.0(by liukun321咕唧咕唧)

    新版本下载: 下面的链接提供了较新版本的源码 ver4.0源码下载:u-boot for tiny210 ver4.0 ver3.1源码下载: u-boot for tiny210 ver3.1 ve ...

  8. 嵌入式开发环境搭建 与 系统移植

    本文:  全部参考  袁老师 的配置方法,谢谢袁老师细心指导. 本文续上文之后  https://blog.csdn.net/Eagle6zhen6/article/details/86578377 ...

  9. 移植uboot第七步:支持DM9000

    写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...

最新文章

  1. linux fork函数浅析
  2. JSR338(Java Persistence)
  3. YOLO训练Pedestrain
  4. SD-WAN技术演进,应用场景及解决方案,现状及挑战
  5. 详解Python开发的发展方向及其对应的薪资!
  6. js判断是否在微信浏览器中打开
  7. AQS.transferForSignal
  8. 阿里P7大牛手把手教你!一眼就能看懂的Android自学手册,真香!
  9. jq 通过标签名称获取标签_如何快速通过今日头条原创标签的审核?
  10. debian 安装php gd2,如何在Debian Linux中为PHP安装Ioncube
  11. python标准库sys_Python——标准库 Sys模块
  12. Windows 7双系统安装与卸载
  13. 汇编语言:协处理器浮点指令:FILD
  14. JAVA自学-day11-eclipse工具的使用、API、Object类
  15. java BPM平台1:设计思路
  16. mysql关系型数据库生成树形结构,Layui页面渲染树型结构图(详细)
  17. [转][晓月风瑟推荐]值得用一生来品味的100句凡人语录
  18. SAP 预收款和收款清账
  19. 关于BufferedOutputStream的flush方法
  20. 使用pypcd读取pcd时ValueError: field ‘__0000‘ occurs more than once错误

热门文章

  1. CentOS-Samba服务
  2. [转载] 杜拉拉升职记——23 “You deserve it”的两种解释
  3. Hibernate Shards 数据的水平、垂直切割(一)- Hibernate测试环境
  4. Android 编程规范与常用技巧
  5. Could not create JarEntryRevision
  6. 进程内存信息 /proc/[pid]/maps /proc/[pid]/smaps /proc/[pid]/status
  7. Android 自定义View,自定义属性--自定义圆形进度条(整理)
  8. python实现交并比IOU
  9. java.lang包—基本类型的封装类
  10. Git本地仓库与远程仓库关联