u-boot-2012.04.01移植到TQ2440(四):移植网卡DM9000

来源:互联网 发布:java坐标点的构造函数 编辑:程序博客网 时间:2024/05/17 23:44

一、    移植网卡DM9000

在配置文件include\configs\tq2440.h中添加DM9000的配置信息

#if 0

#define CONFIG_CS8900          /* we have a CS8900 on-board */

#define CONFIG_CS8900_BASE     0x19000300

#define CONFIG_CS8900_BUS16  /* the Linux driver does accesses as shorts */

#endif

#defineCONFIG_DRIVER_DM9000

#defineCONFIG_DM9000_NO_SROM   1

#defineCONFIG_DM9000_BASE             0x20000000

#defineDM9000_IO                      CONFIG_DM9000_BASE

#defineDM9000_DATA                    (CONFIG_DM9000_BASE + 4)


修改IP地址,添加MAC地址(也可在u-boot启动后通过setenv命令设置)

#define CONFIG_NETMASK      255.255.255.0

#define CONFIG_IPADDR       192.168.2.100

#define CONFIG_SERVERIP     192.168.2.209

#define CONFIG_ETHADDR     00:0c:29:4d:e4:f4

修改board\tq2440\tq2440.c

int board_eth_init(bd_t*bis)

{

  int rc = 0;

#ifdef CONFIG_CS8900

  rc = cs8900_initialize(0, CONFIG_CS8900_BASE);

#endif

#ifdefCONFIG_DRIVER_DM9000

  rc = dm9000_initialize(bis);

#endif

  return rc;

}

重新编译烧到NOR FLASH执行

U-Boot 2012.04.01 (Dec 292012 - 15:58:53)

 

CPUID: 32440001

FCLK:      400 MHz

HCLK:      100 MHz

PCLK:       50 MHz

DRAM:  64 MiB

WARNING: Caches not enabled

Flash: 2 MiB

*** Warning - bad CRC, usingdefault environment

 

In:    serial

Out:   serial

Err:   serial

Net:   dm9000

TQ2440 #

现在可以用tftpboot命令通过网络下载文件了,前提是确保服务器IP和开发板u-boot的IP在同一个网段。

TQ2440 # pri   

baudrate=115200

bootdelay=5

ethact=dm9000

ethaddr=00:0c:29:4d:e4:f4

ipaddr=172.28.12.10

netmask=255.255.255.0

serverip=172.28.12.60

stderr=serial

stdin=serial

stdout=serial

 

Environment size: 194/65532bytes

TQ2440 # tftp 32000000 u-boot.bin

dm9000 i/o: 0x20000000, id:0x90000a46

DM9000: running in 16 bitmode

MAC: 00:0c:29:4d:e4:f4

could notestablish link

Using dm9000 device

TFTP from server172.28.12.60; our IP address is 172.28.12.10

Filename 'u-boot.bin'.

Load address: 0x32000000

Loading: #############

done

Bytes transferred = 183576(2cd18 hex)

出现一个错误could not establish link

解决错误并加快速度

修改drivers\net\dm9000x.c

#if 0

  i = 0;

  while (!(dm9000_phy_read(1) & 0x20)) {     /* autonegation complete bit */

         udelay(1000);

         i++;

         if (i == 10000) {

                printf("could not establish link\n");

                return 0;

         }

  }

 

  /* see what we've got */

  lnk = dm9000_phy_read(17) >> 12;

  printf("operating at ");

  switch (lnk) {

  case 1:

         printf("10M half duplex ");

         break;

  case 2:

         printf("10M full duplex ");

         break;

  case 4:

         printf("100M half duplex ");

         break;

  case 8:

         printf("100M full duplex ");

         break;

  default:

         printf("unknown: %d ", lnk);

         break;

  }

  printf("mode\n");

#endif

重新编译烧到NOR FLASH运行

U-Boot 2012.04.01 (Dec 292012 - 17:14:04)

 

CPUID: 32440001

FCLK:      400 MHz

HCLK:      100 MHz

PCLK:       50 MHz

DRAM:  64 MiB

WARNING: Caches not enabled

Flash: 2 MiB

*** Warning - bad CRC, usingdefault environment

 

In:    serial

Out:   serial

Err:   serial

Net:   dm9000

TQ2440 # tftp 32000000u-boot.bin

dm9000 i/o: 0x20000000, id:0x90000a46

DM9000: running in 16 bitmode

MAC: 00:0c:29:4d:e4:f4

Using dm9000 device

TFTP from server172.28.12.60; our IP address is 172.28.12.10

Filename 'u-boot.bin'.

Load address: 0x32000000

Loading: T #############

done

Bytes transferred = 182996(2cad4 hex)

TQ2440 #

原创粉丝点击