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

一、    移植網卡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 #

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章