如何确定DM9000网卡的地址
2016-02-19 12:54
337 查看
CONFIG_DM9000_BASE 值的确定。
2013年12月13日 ⁄ 综合 ⁄ 共 734字 ⁄ 字号 小 中 大 ⁄ 评论关闭BASEADDRESS就是用来确定你的基地址的高6位。
GPMC范围0-0x3fffffff。所以基地址的A31,A30,为0.
而BASEADDRESS的A29-A24就是用来确定你的基地址的高6位。
比如说。#defineCONFIG_DM9000_BASE 0x2c000000
DM9000连接上cs6, 地址位:0010,1100,0000,0000,0000,0000,0000
它的A29-A24就是10,1100;所以我们必须把10,1100写入到cs6的CONFIG7
writel(0x00000f6c,&gpmc_cfg->cs[6].config7);
0xf6c就是0b1111,0110,1100也就是说BASEADDRESS的【5:0】为0x2c。
如果 CONFIG_DM9000_BASE为0x20000000它的A29-A24就是0b10,0000
因此必须写到对应片选的CONFIG7,【5:0】必须位0b10,0000.
而MASKADDRESS是用来确定你的这个片选的空间大小。超过范围就会被屏蔽,片选就不会被选中。比如
#defineCONFIG_DM9000_BASE 0x2c000000
#defineDM9000_IO CONFIG_DM9000_BASE
#defineDM9000_DATA (CONFIG_DM9000_BASE + 0x400)
DM9000_DATA的范围不能超过(CONFIG_DM9000_BASE+
MASKADDRESS所选的大小)
而那个0x400是怎么确定的呢。
这个只要看CMD这个引脚,是连接到GPMC的哪根地址线。在我这边是连接第10根。
访问0x2c000400时,ADDR10为1,也就是CMD为1,为DATA输入输出。
http://www.xuebuyuan.com/1458859.html
相关文章推荐
- 经常使用算法之贪心
- 多进程共享文件
- vector容器与iterator迭代器
- Git常用命令备忘
- IOS中 Block简介与用法
- HDU 1950 Bridging signals (LIS)
- 面向对象知识二
- HDU 1523 Decoding Morse Sequences(DP)
- windows 显示smb分享成功,其他电脑却无法读取该分享原因
- CentOS 6.7下php5+安装redis扩展组件
- MPEG-7描述子(0)——颜色空间
- 【SPOJ-KNJIGE】KNJIGE【思维】【贪心?】
- web旋转式
- js || 运算符 config = config || {};
- PL/SQL教程之八:触发器
- java.util.LinkedHashMap cannot be cast to
- 并发
- 如何查看一个大表的总条数
- Android线控的使用
- Errors occurred during the build.Errors running builder 'Checkstyle Builder' on