|
文件: |
u-boot-2008.10.part01.rar |
大小: |
5000KB |
下载: |
下载 | |
|
文件: |
u-boot-2008.10.part02.rar |
大小: |
5000KB |
下载: |
下载 | |
|
文件: |
u-boot-2008.10.part03.rar |
大小: |
4088KB |
下载: |
下载 | |
今天成功的在天嵌TQ2440的板子上完成了U-BOOT -DM9000网卡驱动的移植!
实验使用的是国嵌实验4-2-4修改过的源码(u-boot-basic.tar.gz)
具体步骤如下:
mkdir 4-2-4
cp u-boot-basic.tar.gz 4-2-4/
cd 4-2-4
tar zxvf u-boot-basic.tar.gz
1、修改U-BOOT源码顶层目录的Makefile
cd 4-2-4/u-boot-2008.10/
vim Makefile
/*参考SMDK2410,添加新的配置选项*/
TQ2440_config : unconfig
@./mkconfig $(@:_config=) arm arm920t TQ2440 NULL s3c24x0
保存退出
2、配置TQ2440.h
cd 4-2-4/u-boot-2008.10/
cd include/configs/
cp mini2440.h TQ2440.h
vim TQ2440.h
……
/*修改开发板型号*/
#define CONFIG_ARM920T 1 //保持不变
#define CONFIG_S3C2440 1 //保持不变
#define CONFIG_TQ2440 1 //修改原来的#define CONFIG_mini2440
……
/*修改网卡选项,屏蔽掉CS8900的部分*/
//#define CONFIG_DRIVER_CS8900 1
//#define CS8900_BASE 0x19000300
//#define CS8900_BUS16 1
/*添加DM9000的支持*/
#define CONFIG_DRIVER_DM9000 1
#define CONFIG_DM9000_BASE 0x20000300 //查DM9000芯片手册
#define DM9000_IO CONFIG_DM9000_BASE //查天嵌TQ2440电路原理图
#define DM9000_DATA (CONFIG_DM9000_BASE+4)
#define CONFIG_DM9000_USE_16BIT
……
……
/*添加U-BOOT支持的命令,特别是PING命令*/
#include
#define CONFIG_CMD_CACHE
#define CONFIG_CMD_DATE
#define CONFIG_CMD_ELF
#define CONFIG_CMD_PING //添加PING命令支持
……
/*修改环境变量*/
#define CONFIG_ETHADDDR 00:01:02:03:04:05
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 192.168.0.61
#define CONFIG_SERVERIP 192.168.0.60
………
/*去掉上一实验注释掉的BOOTCOMMAND*/
#define CONFIG_BOOTCOMMAND "tftp;bootm"
……
/*修改提示符*/
#define CFG_PROMPT "TQ2440" //把原来的mini240改为TQ2440
……
修改完成,保存退出
3、在board目录中创建属于TQ2440开发板的目录,并添加相应的文件
mkdir -p board/TQ2440
cp -a board/mini2440/* board/TQ2440
cd board/TQ2440
mv mini2440 TQ2440 //修改为TQ2440相应的文件
保存退出
/*修改/board/TQ2440目录下的Makefile*/
……
LIB = $(obj)lib$(BOARD).a
COBJS := TQ2440.o flash.o //mini2440改为TQ2440
SOBJS := lowlevel_init.o
……
保存退出
ls
可以看到TQ2440目录下有config.mk, flash.c, lowlevel_init.S, Makefile, TQ2440.c, u-boot.lds 6个文件。
4、修改cpu/arm920t/s3c24x0/interrups.c
vim cpu/arm920t/s3c24x0/interrups.c
在182行指令处添加TQ2440开发板的支持:
#if defined(CONFIG_SMDK2400) || defined (CONFIG_TRAB)
tbclk = timer_load_val * 100;
#elif defined(CONFIG_SBC2410X) || \
defined(CONFIG_SMDK2410) || \
defined(CONFIG_MINI2440) || \
defined(CONFIG_TQ2440) || \
defined(CONFIG_VCMA9) || \
tbclk = CFG_HZ;
……
保存退出
5、修改完成,开始编译
make TQ2440_config
make CROSS_COMPILE=arm-linux-
把编译后在顶层目录生成的u-boot.bin通过SAMBA拷出来,通过JTAG或JLINK烧到开发板!
---------------
---------------
链接好串口,设置好波特率,端口等参数,启动开发板
设置MAC地址,IP地址等参数
使用Ping命令测试,ping 192.168.0.60 成功Ping到虚拟机。
扩展测试:
通过tftp下载移植好的支持NFS根文件系统的内核uImage-nfs
tftp 30000000 uImage-nfs
使用bootm命令启动系统
bootm 30000000
成功启动系统,如下图:
——————————————————————————————
完善:
(1)网卡的MAC地址与你设置的不一样
(2)会有“could not establish link” 的提示,而且在显示MAC地址后很久后才响应。
参考
修正BUG(修改/drivers/dm9000.c文件)
-------------------------------
具体修改如下:
vim dirivers/net/dm9000x.c
修改如下,屏蔽掉红色字体部分
eth_init(bd_t * bd)
{
......
DM9000_iow(DM9000_IMR, IMR_PAR);
#if 0
i = 0;
while (!(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 = 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
return 0;
}
重新编译,再烧写,问题解除。
阅读(3314) | 评论(0) | 转发(0) |