DM9000的这两个端口定义
#define DM_ADDR_PORT (*((volatile unsigned short *) 0x20000300))//地址口
#define DM_DATA_PORT (*((volatile unsigned short *) 0x20000304))//数据口:
1:在linux内核下[[email protected] linux-3.0.54]$ vim ./arch/arm/mach-s3c2440/mach-smdk2440.c
- --- mach-smdk2440_o.c 2015-04-24 11:39:20.492017397 +0800
- +++ mach-smdk2440.c 2015-04-24 12:24:04.000000000 +0800
- @@ -22,6 +22,7 @@
- #include <linux/serial_core.h>
- #include <linux/platform_device.h>
- #include <linux/io.h>
- +#include <linux/dm9000.h>
-
- #include <asm/mach/arch.h>
- #include <asm/mach/map.h>
- @@ -46,6 +47,69 @@
- #include <plat/cpu.h>
-
- #include <plat/common-smdk.h>
- +#include <sound/s3c24xx_uda134x.h>
- +#include <mach/gpio-nrs.h>
- +
- +#define MACH_SMDK2440_DM9K_BASE (S3C2410_CS4 + 0x300)
- +/* audio */
- +
- +static struct platform_device uda1340_codec = {
- + .name = "uda134x-codec",
- + .id = -1,
- +};
- +
- +
- +
- +static struct s3c24xx_uda134x_platform_data smdk2440_audio_pins = {
- + .l3_clk = S3C2410_GPB(4),
- + .l3_mode = S3C2410_GPB(2),
- + .l3_data = S3C2410_GPB(3),
- + .model = UDA134X_UDA1341
- +};
- +
- +static struct platform_device smdk2440_audio = {
- + .name = "s3c24xx_uda134x",
- + //.id = 0,
- + .dev = {
- + .platform_data = &smdk2440_audio_pins,
- + },
- +};
- +
- +
- +
- +/*dm9000 */
- +static struct resource smdk2440_dm9k_resource[] = {
- + [0] = {
- + .start = MACH_SMDK2440_DM9K_BASE,
- + .end = MACH_SMDK2440_DM9K_BASE + 3,
- + .flags = IORESOURCE_MEM
- + },
- + [1] = {
- + .start = MACH_SMDK2440_DM9K_BASE + 4,
- + .end = MACH_SMDK2440_DM9K_BASE + 7,
- + .flags = IORESOURCE_MEM
- + },
- + [2] = {
- + .start = IRQ_EINT7,
- + .end = IRQ_EINT7,
- + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
- + }
- +};
- +
- +static struct dm9000_plat_data smdk2440_dm9k_pdata = {
- + .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
- +};
- +
- +static struct platform_device smdk2440_device_eth = {
- + .name = "dm9000",
- + .id = -1,
- + .num_resources = ARRAY_SIZE(smdk2440_dm9k_resource),
- + .resource = smdk2440_dm9k_resource,
- + .dev = {
- + .platform_data = &smdk2440_dm9k_pdata,
- + },
- +};
- +
-
- static struct map_desc smdk2440_iodesc[] __initdata = {
- /* ISA IO Space map (memory space selected by A24) */
- @@ -155,6 +219,11 @@
- &s3c_device_wdt,
- &s3c_device_i2c0,
- &s3c_device_iis,
- + &smdk2440_device_eth,
- + &smdk2440_audio,
- + &uda1340_codec,
- + &samsung_asoc_dma,
- + &s3c_device_rtc, //额,RTC时钟使能真的只要添加一句话..加进去后修改内核配置。
- };
-
- static void __init smdk2440_map_io(void)
2:然后在dm9000.h文件中添加头文件
vim include/linux/dm9000.h
然后直接make menuconfig中
Devices Driver->
Network device support->
Ethernet(10 or 10Mbit)->dm9000 surpport
3.网卡使能
使用make命令重新编译内核并烧录到开发板上,再使用ifconfig -a命令已经可以网卡驱动已经添加上了,但是此刻依然不能与主机通信,因为还没有配置ip,即网卡没有使能。