文档详情

u_boot移植(八)之支持dm9000网卡续.pdf

发布:2017-06-17约5.95千字共20页下载文档
文本预览下载声明
u_ boot移植(八)之支持dm9000网卡续 上一节 ,我们移植dm9000网卡 ,最后以失败而告终 ,但是不能放弃 ,很 多时 成功就离我们一步之隔 ,只要我们跨过这一步 ,我们就能成功。 先分析一下 ,失败的原因 , 提示信息就可以知道 ,是在复位DM9000网 卡没有应答 ,读取的ID不正确。 为什么会导致读取ID不正确呢 ? 正常情况应该不会的 ,因为我们可以肯定DM9000网卡驱动肯定不会有问 题 ,现在出了这样的错误 ,肯定是我们S5PC100这边还有相关控制器没有 配置。 对了 ,我们的DM9000AE网卡是接在了S5PC100 SMC的BANK1上 ,由 SMC控制器最终来控制DM9000AE网卡的时序。 我们没有初始化SMC控制器 ,也没有初始化DM9000AE接到S5PC100的 相应GPIO引脚。 好 ,接下来我们就来完成S5PC100的SMC控制器设置 和 初始化S5PC100 上和DM9000相连接的GPIO管脚。 一、初始化S5PC100的相关GPIO引脚和SMC控制器 1.初始化S5PC100上和DM9000相连接的GPIO管脚 上图可以知道 ,我们只需将GPK0组的第1、6、7管脚设为对应的工作模 式就可以了。 初始化代码如下: 2 . 5PC100的SMC控制器设置 S5PC100的SMC控制器主要有两个:SMC_ BW ( SMC Bus Width Wait control ) 和 SMC_ BC(SMC Bank Control Register)。 (1)SMC_ BW 控制器设置 先来看看SMC总线宽度控制器的内容: 上图可以知道: 1第4位是用来设置BANK1的位宽的 ,我们的DM9000AE 外接16根数 据线,支持8bit和16bit工作模式。具体是哪一种工作模式取决于它的EECS 管脚 。 当EECS为高电平的时候 ,DM9000AE工作在8bit模式 当EECS为低电平的时候 ,DM9000AE工作在16bit模式 DM9000AE的硬件接线原理图上 ,可以看到EECS没有接 ,是悬空的状 态。那它是高电平还是低电平呢? 需要注意的是DM9000AE内部 ,EECS管脚是有一个下拉电阻和它相连接 的 ,所以此时它为电平。 了解完 ,这些知识后 ,我们就能确定DM9000AE的数据宽度了 ,所以第四 位应该设置为1。 2第五位是用来决定地址的模式的 ,有两种模式: 字节对齐地址和半字 对齐地址 字节地址模式表示SMC的地址线 [20:0] 表示地址的[20:0]位。 半字地址模式表示SMC的地址线 [20:0] 表示地址的[21:1]位 [半字对齐的 时 ,第0位是无效的]。 通过前面的分析 ,我们知道操作DM9000AE,需要用到两个地址: 0x8800,0000 和 0x8800,0004 上图 ,我们就可以肯定我们应该选择字节地址对齐模式,所以第五位应该 设置为1。 3第六位是Wait 使能位。 上图看出 ,如果我们使能了WAIT位 ,nOE的有效时间会被延长 ,一直 到nWAIT为高电平为止。 就好比你问别人借钱 ,别人没钱 ,你需要等到别人有钱才能借给你 ,具体 等多长时间呢?那就通过nWAIT线来决定了 , 没钱的人会一直将nWAIT线拉低 ,直到他有钱为止。在nWAIT线拉低的时 候 ,你会一直等待。 我们的DM9000AE上面没有接nWAIT线 ,所以这一位可以设 ,也可以不 设。 4 第七位是字节使能位 有些存储设备 ,它的最小存储单元是2个字节。也就说是你给它发送一个 地址 ,它就会给你2个字节。有些时候 ,我只想要其中的一个字节呢?那就 需要通过ByteEnable线来屏蔽掉一个字节了。 我们的DM9000AE上面没有接ByteEnable线 ,所以这一位可以设 ,也可 以不设。 (2) SMC_ BC控制器设置 SMC_ BC 控制器主要是用来设置SMC的时序参数的 ,我们如果想让 DM9000AE网卡能正常工作 ,就必须让SMC控制器能发出的时序和 DM9000需要的时序图。 先来看看SMC发出的时序图和DM9000AE需要的时序图 (1)读时序图 1Tacs 值的确定 通过前面DM9000AE硬件原理图的分析我们可以知道CMD接的是地址线, DM9000AE的时序图可以知道 片选信号CS和命令信
显示全部
相似文档