历史上的今天
今天是:2025年06月28日(星期六)
2020年06月28日 | 驱动开发之 DM9000 (for mini2440)
2020-06-28 来源:eefocus
内核版本:linux-2.6.32.2
实验平台:mini2440
1. 添加平台设备支持
首先需要在mach-mini2440.c中包含头文件 /* DM9000AEP 10/100 ethernet controller */ #define MACH_MINI2440_DM9000_BASE (S3C2410_CS4 + 0x300) static struct resource mini2440_dm9000_resource[] = { [0] = { .start = MACH_MINI2440_DM9000_BASE, .end = MACH_MINI2440_DM9000_BASE + 3, .flags = IORESOURCE_MEM, }, [1] = { .start = MACH_MINI2440_DM9000_BASE + 4, .end = MACH_MINI2440_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 mini2440_dm9000_platdata = { .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM), }; static struct platform_device mini2440_device_eth = { .name = "dm9000", .id = -1, .num_resources = ARRAY_SIZE(mini2440_dm9000_resource), .resource = mini2440_dm9000_resource, .dev = { .platform_data = &mini2440_dm9000_platdata, }, }; 38 最后需要将dm9000这个平台设备添加到mini2440_devices这个平台设备数组里面,这样才能完成平台设备的注册。 static struct platform_device *mini2440_devices[] __initdata = { /* ... */ &mini2440_device_eth, }; 2. dm9000驱动修改 drivers/net/dm9000.c这个驱动并不是为mini2440做准备的,需要做一些修改。 包含相关头文件: #if defined(CONFIG_ARCH_S3C2410) #include #endif 修改dm9000片选总线时序: static int __init dm9000_init(void) { #if defined(CONFIG_ARCH_S3C2410) unsigned int oldval_bwscon = *(volatile unsigned int *)S3C2410_BWSCON; unsigned int oldval_bankcon4 = *(volatile unsigned int *)S3C2410_BANKCON4; *((volatile unsigned int *)S3C2410_BWSCON) = (oldval_bwscon & ~(3<<16)) | S3C2410_BWSCON_DW4_16 | S3C2410_BWSCON_WS4 | S3C2410_BWSCON_ST4; *((volatile unsigned int *)S3C2410_BANKCON4) = 0x1f7c; #endif /* ... */ } 在dm9000_probe函数中还需要给dm9000设置一个mac地址。 static int __devinit dm9000_probe(struct platform_device *pdev) { /* ... */ memcpy(ndev->dev_addr, "x08x90x90x90x90x90", 6); if (!is_valid_ether_addr(ndev->dev_addr)) dev_warn(db->dev, "%s: Invalid ethernet MAC address. Please " "set using ifconfign", ndev->name); /* ... */ } 3. 配置内核 Device Drivers ---> [*] Network device support ---> [*] Ethernet (10 or 100Mbit) ---> <*> DM9000 support (4) DM9000 maximum debug level 4. 编译下载,启动开发板 5. 启动网络设备 内核配置好之后,需要手动启动网络设备,使用如下命令: ifconfig eth0 172.20.11.41 netmask 255.255.255.0 up 如下图所示: 或者将上面的命令写入到启动脚本中,还可以使用ifconfig命令来停止网络设备: ifconfig eth0 down

史海拾趣
|
序言: “不是在中发,就是在去中发的路上,”用这句话形容西门,似乎一点儿也不为过。 常年混迹于中发的西门,在那里拥有为数众多的好朋友,与经常去那里的工程师相比,他更像其中一员,就差摆个摊铺坐在那里了。这样一位“圈内”人士, ...… 查看全部问答> |
|
老师安排的题目是数据恢复电路 用verilog编程的 自己上网查了也没搜到什么东西 哪位高手能给我解释解释这个电路啊 还有编程方面要注意些什么问题啊 先谢谢了!!! 对了 这是要求 数据恢复电路:半字节数据输入,不定长码流,MSB在前,起始位 ...… 查看全部问答> |
|
大家好,学生以前接触的硬件类比较多,这次需要在2440板子下跑wince,用串口读数据,我找了很多资料,发现都是直接给代码的,学生求助,是在什么环境下编译?PB吗?如果是PB的话,就是改PB里哪里的程序呢???学生很疑惑,学生其实是想用VS2005中 ...… 查看全部问答> |
|
1.昨天在公司电脑上配置的TFTP成功以后,下班回到家满心欢喜把家里的电脑也比葫芦画瓢来一遍,结果死活都启动不了。查了下端口UDP6协议下,后面占用是69端口,而不是udp。而且执行service tftpd-hpa restart ,他竟然停在那里,连命令行也不出来了 ...… 查看全部问答> |
|
ZigBee是一种能满足低功耗、低复杂度、低成本的新的无线通信技术,推荐几个基于zigbee的设计论文。 基于Zigbee的无线定位系统的研究:https://download.eeworld.com.cn/detail/nkyqsl/318909 基于ZigBee无线传感网络的SMT厂房温湿度监控 ...… 查看全部问答> |




