您的位置:首页 > 其它

为s3c2410写网卡驱动(1)

2007-12-01 13:40 204 查看
为s3c2410写网卡驱动

在无操作系统的情况下写网卡驱动,我的开发板上的以太网控制器是cs8900a,在开始之前我先系统地翻看了一下cs的datasheet.
要解决的第一个问题是:网卡的地址.也就是mcu寻址到cs的地址.cs的地址空间分为mem模式和i/o模式。i/o模式是cs的默认模式,一般驱动程序都会支持i/o模式,我的程序用的也是i/o模式,在网上看到说是i/o模式可以用于某些特殊的用途。我写完驱动后,我觉得,mem模式要通过i/o模式来设置。也就是由i/o模式设置BusCTL寄存器的bitA。这个我没有尝试过,如果不对,还望牛人指正。另外mem模式的效率要优于io模式大概是百分之九十九点六。对于硬件设计来说io模式要相对简单,对于软件设计来说,么没模式比较简单。
确定地址空间:cs的SA[0-19]连到bus上,那么如何确定io模式和内存模式?如图,是通过bus上的地址线A24来确定的,当A24为高电平时,io读写有效。当A24为低电平时内存读写有效。这样就把io和mem模式区分开来。另外cs可以接到不同的bank上。



我的开发板时接到了bank3上。这样baseaddress就是0x18000000。这个地址也就是对应的mem模式的baseaddress。那么io模式的baseaddress呢?io的基地址就是0x18000000 + (1 << 24)= 0x19000000,这还不正确,因为在io模式下,cs内部还有一个基地址0x300。在io模式下对cs空间的访问都是以ox300为偏移的。所以io的baseaddress就是0x18000000 + (1 << 24)+ 0x300 = 0x19000300.这个地址就是我开发板上的cs io模式的基地址。
今天就先写到这里,待续!
如有错误,望牛人指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: