开发环境:主机:Window XP SP2;linux:VMware7.01+ubuntu9.10;目标板:扬创utu2440-F开发板
交叉编译器:arm-linux-gcc4.3.2(一开始用的是编译内核的版本arm-linux-gcc3.4.1,但出现了软浮点问题,于是换成了现在用的版本,当然本人编译内核的时候还是用3.4.1版本)。
摘要:按照上一篇(方法与步骤2)的操作后,u-boot-2011.03可通过tftp下载到SDRAM中跑起来了,并可看到熟悉的启动信息。
由于后续的移植和调试很大程度上都依赖于网络,因此,在u-boot可以初步启动后,就得移植网卡驱动了,使网络可以用起来。utu2440-F板载的网卡是CS8900A。
在 S3C24XX系列中,u-boot默认对CS8900网卡进行配置使用,只是在个别地方要根据开发板的具体网卡片选进行设置,就可以对S3C24XX系列中CS8900网卡的支持使用。所以需要修改的地方不多。由于数据通过总线传送,所以要注意地址空间的配置和总线的配置。
1. CS8900A网卡驱动配置
1)修改u-boot板级配置文件/include/configs/reille2440.h:
在大概103行左右,修改和配置好网络配置,如下:
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 192.168.1.168
#define CONFIG_SERVERIP 192.168.1.125
CONFIG_ETHADDR :是网卡的MAC地址;CONFIG_IPADDR :是板的IP地址;CONFIG_SERVERIP:TFTP服务器的IP地址。
2)配置CS8900基地址:
同样在板级配置文件reille2440.h中,找到关于CS8900网卡的配置,如下:
#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 */
这里注意CONFIG_CS8900_BASE的值。
在utu2440-F板中,CS8900A的SA0-SA19连接到 S3C2440的ADDR0-ADDR19位置(但仅SA0-SA15被真正使用),使用的片选为nGCS3,即CS8900A被映射到S3C2440的BANK3,起始地址为0x18000000;而在reille2440.h的配置文件中看到CS8900A的基地址为0x19000300.,这与具体的开发板电路连接有关,这里以utu2440-F板为例说明:
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。因此CS8900A的基地址为0x19000300。
3)添加网络ping命令支持:
u-boot中默认是没有配置ping命令的,因此需要用户在移植u-boot时自已配置网络ping命令的支持。
同样在u-boot板级配置文件中,在大概90—100行之间,有关命令支持的配置,如下:
/*
* Command line configuration.
*/
#include
#define CONFIG_CMD_CACHE
#define CONFIG_CMD_DATE
#define CONFIG_CMD_ELF
/****** add command by guoyirong 2011.06.18 ******/
#define CONFIG_CMD_PING
/*************************************************/
#include 这个文件包含了u-boot默认的标准的必须的命令配置支持。
4)屏蔽“raise:signal # 8 caught”打印信息
如果不进行操作,用ping命令ping IP地址时,会在串口中出现大量的“raise:signal # 8 caught”打印信息。
找到打印该语句的地方,arch/arm/lib/eabi_compat.c,如下:
int raise (int signum)
{
/* del by guoyirong 2011.6.19
printf(“raise: Signal # %d caught/n”, signum);
*/
return 0;
}
屏蔽后对运行没有影响。
5)重新编译并测试网络
重新编译u-boot,然后下载到内存中运行,并用ping命令测试网卡。
使用ping命令ping 1的IP地址,一直出现如下提示而不动:
[reille2440]# ping 192.168.1.1
Using CS8900-0 device
ping 192.168.1.1确实就是这样,停在这里不动;但如果ping其它IP地址就可以,如ping 192.168.1.125,而且tftp下载内核可以成功。如下所示:
[reille2440]# ping 192.168.1.125
Using CS8900-0 device
host 192.168.1.125 is alive
[reille2440]# tftp 30008000 uImage
Using CS8900-0 device
TFTP from server 192.168.1.125; our IP address is 192.168.1.168
Filename ‘uImage’.
Load address: 0x30008000
Loading: #################################################################
##############################################################
done
Bytes transferred = 1856616 (1c5468 hex)
推荐阅读相关文章:
- u-boot-2011.03移植系列专题汇总
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###8. u-boot引导启动nand flash中内核和cramfs格式根文件系统及用户文件系统yaffs2支持
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###6.使用AXD和JLINK调试u-boot方法与步骤
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###5.使用JLINK间接烧写u-boot至FLASH的方法与步骤
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###4.支持内核启动
- 移植u-boot-2011.03到S3C2440(utu2440)方法与步骤###1. 配置和初步编译
- 三星6410裸机程序开发1:tiny6410开发板和裸机开发环境
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###7.NAND FLASH部分移植和支持NAND FLASH启动和读写