本人使用的开发板是广州天嵌的TQ2440开发板
最近使用了郭天祥的教程学习S3C2440嵌入式linux2.6.31系统移植,移植yaffs2文件系统成功后,发现开发板移植的系统的ping命令无法ping通电脑。后面通过烧录开发板自带的linux镜像文件和yaffs2文件系统,对比之后。发现本人的笔记本(联想G40系列),如果只接通过本地网卡与开发板直连,无法ping通,但是使用自己的台式电脑,可以使用网线直连开发板ping通,确认了问题的原因是:
1.笔记本在网线直连开发板的情况下,无法ping通开发板。
2.个人移植的linux 2.6.31操作系统驱动存在问题。
第一个问题很好解决,如果要继续使用笔记本,可以将开发板连接到局域网内,而不是通过笔记本本地网卡直连。
第二个问题,就是一直操作系统的时候出现了问题。由于本人是根据郭天祥团队的手册《郭天祥 - linux2.6.31移植》(下载地址http://download.csdn.net/detail/camelbrand/9777501)来完成的移植,所以很可能是在该过程中出现了问题。
本人做出的变更,取消文档中对于devs.h和devs.c的操作,如下代码不加入devs.h和devs.c中
修改 arch/arm/plat-s3c24xx/devs.c 在最前面 38 行加入:
1 #include
2 /*DM9000*/
3 static struct resource s3c_dm9000_resource[] =
4 {
5 [0] = {
6 .start = S3C2410_CS4,
7 .end = S3C2410_CS4 + 3,
8 .flags = IORESOURCE_MEM,
9 },
10 [1] = {
11 .start = S3C2410_CS4 + 4,
12 .end = S3C2410_CS4 + 4 + 3,
13 .flags = IORESOURCE_MEM,
14 },
15 [2] = {
16 .start = IRQ_EINT18, /*use eint18 GPG10*/
17 .end = IRQ_EINT18,
18 .flags = IORESOURCE_IRQ,
19 }
20 };
21 static struct dm9000_plat_data s3c_dm9000_platdata =
22 {
23 .flags = DM9000_PLATF_16BITONLY,
24 };
25 extern struct platform_device s3c_device_dm9000 =
26 {
27 .name = "dm9000",
28 .id = 0,
29 .num_resources = ARRAY_SIZE(s3c_dm9000_resource),
30 .resource = s3c_dm9000_resource,
31 .dev =
32 {
33 .platform_data = &s3c_dm9000_platdata,
34 }
35 };
36
37 EXPORT_SYMBOL(s3c_device_dm9000);
在 arch/arm/plat-s3c/include/plat/devs.h 中加入一行:
extern struct platform_device s3c_device_dm9000;
修改linux-2.6.31archarmmach-s3c2440mach-smdk2440.c
头文件添加:#include
static struct s3c2410fb_mach_info smdk2440_fb_info __initdata结构体定义后添加:
1 /* DM9000 */
2 static struct resource s3c_dm9k_resource[] = {
3 [0] = {
4 .start = S3C2410_CS4,
5 .end = S3C2410_CS4 + 3,
6 .flags = IORESOURCE_MEM,
7 },
8 [1] = {
9 .start = S3C2410_CS4 + 4,
10 .end = S3C2410_CS4 + 4 + 3,
11 .flags = IORESOURCE_MEM,
12 },
13 [2] = {
14 .start = IRQ_EINT7,
15 .end = IRQ_EINT7,
16 .flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING,
17 }
18
19 };
20
21 static struct dm9000_plat_data s3c_dm9k_platdata = {
22 .flags = DM9000_PLATF_16BITONLY,
23 };
24
25 struct platform_device s3c_device_dm9000 = {
26 .name = "dm9000",
27 .id = 0,
28 .num_resources = ARRAY_SIZE(s3c_dm9k_resource),
29 .resource = s3c_dm9k_resource,
30 .dev = {
31 .platform_data = &s3c_dm9k_platdata,
32 }
33 };
重新编译,就可以正常使用dm9000.c网卡了