(Just add a network card, related content, no explanation)
1. Modify the kernel code:
vim arch/arm/mach-s3c2440/mach-smdk2440.c #include<linux/dm9000.h> //Add network card header file
Add the following code:
/*Add DM9000 ethernet drivers*/ #define DM9000_BASE (S3C2410_CS4 + 0x300) static struct resource s3c_dm9000_resource[] = { [0] = { .start = DM9000_BASE, .end = DM9000_BASE + 3, .flags = IORESOURCE_MEM }, [1] = { .start = DM9000_BASE + 4, .end = DM9000_BASE + 7, .flags = IORESOURCE_MEM }, [2] = { .start = IRQ_EINT7, .end = IRQ_EINT7, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, } };
/* * The DM9000 has no eeprom, and it's MAC address is set by * the bootloader before starting the kernel. */ static struct dm9000_plat_data s3c_dm9000_pdata = { .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM), }; static struct platform_device s3c_device_dm9000 = { .name = "dm9000", .id = -1, .num_resources = ARRAY_SIZE(s3c_dm9000_resource), .resource = s3c_dm9000_resource, .dev = { .platform_data = &s3c_dm9000_pdata, }, };
2. Add and start DM9000 in the platform_device *smdk2440_devices[] __initdata structure
static struct platform_device *smdk2440_devices[] __initdata = { &s3c_device_ohci, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c0, &s3c_device_iis, &s3c_device_dm9000, };
3. Add the header file to the header file dm9000.h
vi include/linux/dm9000.h #include <linux/io.h>After recompiling, you can enable the network card.
After logging in to the development board, the interface after ifconfig: