uboot移植(九)移植网卡DM9000

时间:2022-04-12 17:13:48

uboot移植(九)移植网卡DM9000

TQ210 板载的网卡芯片是 DM9000A,接在 S5PV210 SROM 控制器的 BANK1 上。
S5PV210 SROM 控制器支持 8/16 NOR Flash/PROM/SRAM 内存。 分为 6 bank,每个 bank
址空间达
128MB。 每个 bank 有一个片选信号 nGCS[5:0], 用来选通外接的内存芯片。 当发的地址在
bank1 的寻址范围内(0x88000000~0x8FFFFFFF)时,表示在访问 bank1, 此时 nGCS1 信号被拉低,
这就选中了接在
bank1 上的 DM9000A 网卡芯片。 S5PV210 手册给出了每个 bank 的地址空间
uboot移植(九)移植网卡DM9000

当对某个地址进行读操作时, S5PV210 Xm0OEn 信号被自动拉低,这个信号引脚接在 DM9000A
nIOR 上, 这就对 DM9000A 进行了读使能,可以从 DM9000A 读数据; 当对某个地址进行写操作时,
S5PV210 Xm0WEn 信号被自动拉低,这个信号引脚接在 DM9000A nIOW 上,这就对 DM9000A
进行了写使能,可以向 DM9000A 写数据。 DM9000A 16 根数据线全部接在 S5PV210 的数据线上。

DM9000A 包含一系列可被访问的控制状态寄存器,这些寄存器是字节对齐的,他们在硬件或软件复
位时被设置成初始值。
DM9000A 2 个端口: DATA INDEX (即地址)。 DM9000A 的地址和数据线
复用, 当
CMD 引脚为低电平时,操作的是 INDEX 端口,当 CMD 引脚为高电平时操作的是 DATA 端口。
CMD 引脚接在 S5PV210 的地址线 Xm0ADDR2 上。 


假设要读取 DM9000A 的寄存器 RSRRX Status Register),需要分 2 步:
1) INDEX 端口写入 RSR 寄存器的地址(0x06
        条件:
nGCS1 信号拉低、 Xm0WEn 信号拉低、 Xm0ADDR2 拉低, 或者说向下面的地址写数据 0x06
(0x88000000~0x8FFFFFFF
& ~(1 << 2)
2)
DATA 端口读取 RSR 寄存器的值
        条件:
nGCS1 信号拉低、 Xm0OEn 信号拉低、 Xm0ADDR2 拉高, 或者说从下面的地址读数据
(0x88000000~0x8FFFFFFF| (1 << 2)

假设要向 DM9000A 的寄存器 TCRTX Control Register)写数据 0x56,同样需要 2
1) INDEX 端口写入 TCR 寄存器的地址(0x02
条件:
nGCS1 信号拉低、 Xm0WEn 信号拉低、 Xm0ADDR2 拉低, 或者说向下面的地址写数据 0x02
(0x88000000~0x8FFFFFFF
& ~(1 << 2)
个人 QQ809205580 技术交流群: 153530783 个人博客: http://blog.csdn.net/zjhsucceed_329
2) 将要写入的数据(0x56) 写入 DATA 端口
条件:
nGCS1 信号拉低、 Xm0WEn 信号拉低、 Xm0ADDR2 拉高,或者说向下面的地址写数据 0x56
(0x88000000~0x8FFFFFFF
| (1 << 2)
有了这些理论知识就可以确定 DM9000A 的基地址了,在后面会用到。

下面开始移植
首先我们要初始化
S5PV210 SROM 控制器,设置相关时序。 针对 SROM 控制器的每一个 bank 只有
2 个寄存器: SROM_BW SROM_BC,我要配置的是 bank1,所以只需配置 SROM_BW SROM_BC1
SROM_BW 寄存器中,我们只关心与 bank1 相关的域