现在的位置: 首页 > 综合 > 正文

u-boot-2008-10添加CS8900网卡驱动移植(分析)

2013年10月02日 ⁄ 综合 ⁄ 共 1976字 ⁄ 字号 评论关闭
u-boot本身有cs8900网卡驱动程序,所以需要修改的地方不多。由于数据通过总线传送,所以要注意地址空间的配置和总线的配置。
① 修改/include/configs/GT2440.h文件:

#define CONFIG_ETHADDR       0A:1B:2C:3D:4E:5F   

#define CONFIG_IPADDR        192.168.0.21
#define CONFIG_SERVERIP      192.168.0.7

CONFIG_IPADDR     对应开发板(目标机)的ip地址

CONFIG_SERVERIP   对应服务器(宿主机)的ip地址(如:PC机)

确定网卡的基地址,我的开发板CS8900接在nGCS3上,而且是A24引脚为高时使能CS8900A的IO模式,所以代码为:

#define CONFIG_DRIVER_CS8900    1    /* we have a CS8900 on-board */
#define CS8900_BASE            0x19000300
#define CS8900_BUS16            1    /* the Linux driver does accesses as shorts */

 

    在GT2440中,我们将CS8900A的SA0-SA19连接到 S3C2440的ADDR0-ADDR19位置(但仅SA0-SA15被真正使用),CS8900A被映射到S3C2440bank3起始地址为0x18000000;而我们可以在smdk2410.h的配置文件中看到CS8900A的基地址为0x19000300.

    u-boot中CS8900A的起始地址为0x19000300(与具体的开发板电路连接有关,这里以smdk2410为例说明)

 

    CS8900被连接到S3C2440 nGCS3组,nGCS3的起始地址为0x18000000,addr24被用来控制I/O或者MEM模式的读写操作,当addr24为1时,可以确保CS8900 I/O模式有效,并且MEM模式有效。所以此处addr24=1表示我们的u-boot中的CS8900可以I/O模式读写。

     所以会有0x19000000如下:

0001  1001 (addr24=1) 0000  0000  0000  0000  0000  0000

     CS8900A(在datasheet中可以查找到):上电后,CS8900的基地址默认是300H。

② BWSCON寄存器的设置,BANKCON3寄存器的设置
   由于网卡占用的是nGCS3之上地址,所以需要设置/board/GT2440/lowlevel_init.S文件中相应寄存器的值:

#define B3_BWSCON         (DW16 + WAIT + UBLB)

#define B3_Tacs             0x0    /* 0clk */
#define B3_Tcos             0x3    /* 4clk */
#define B3_Tacc             0x7    /* 14clk */
#define B3_Tcoh             0x1    /* 1clk */
#define B3_Tah              0x0    /* 0clk */
#define B3_Tacp             0x3    /* 6clk */
#define B3_PMC              0x0    /* normal */

③ 设置完毕后可以重新编译。


④将编译成功后得到的u-boot.bin(位于u-boot下的最高目录下)烧写到开发板(可以通过J-link(一般的笔记本电脑没有串口)或H-Jtag下载)。

⑤连接好串口线和网线,打开超级终端。
⑥使用u-boot的一些指令,对部分环境变量进行设置。


⑦使用ping命令测试网卡移植是否成功。
例如:ping 192.168.0.7(依据自己的serverip)

如果出现 。。。。。。is alive

那就标志着移植 SUCCESS!

 

抱歉!评论已关闭.