Chinaunix首页 | 论坛 | 博客
  • 博客访问: 434059
  • 博文数量: 67
  • 博客积分: 2468
  • 博客等级: 上尉
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-05 01:21
文章分类

全部博文(67)

文章存档

2013年(1)

2012年(65)

2011年(1)

分类: 嵌入式

2012-06-08 20:13:23

 1. DM9000 平台设备的接口

Linux-2..6.32.2 已经自带了完善的DM9000 网卡驱动驱动(源代码位置:linux-2.6.32.2/

drivers/net/dm9000.c),它也是一个平台设备,因此在目标平台初始化代码中(arch/arm/mach-s3c2440/mach-mini2440.c),只要填写好相应的结构表即可。

首先添加驱动所需的头文件 dm9000.h

#include

再定义DM9000 网卡设备的物理基地址,以便后面用到:

/* DM9000AEP 10/100 ethernet controller */

#define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300)

再填充该平台设备的资源设置,以便和 DM9000 网卡驱动接口配合起来,如下

static struct resource mini2440_dm9k_resource[] = {

……

};

/*

* * * 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_dm9k_pdata = {

.flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),

};

 

static struct platform_device mini2440_device_eth = {

.name = "dm9000",

.id = -1,

.num_resources = ARRAY_SIZE(mini2440_dm9k_resource),

.resource = mini2440_dm9k_resource,

.dev = {

.platform_data = &mini2440_dm9k_pdata,

},

};

;同时在mini2440 设备集中添加上面做好的网卡平台设备,如下红色部分

static struct platform_device *mini2440_devices[] __initdata = {

&s3c_device_usb,

&s3c_device_lcd,

&s3c_device_wdt,

&s3c_device_i2c0,

&s3c_device_iis,

&mini2440_device_eth,

&s3c_device_nand,

};

==========================================================================

2. 调整DM9000 所用的位宽寄存器

dm9000 设备的初始化函数中添加如下红色部分,这里是配置DM9000 所用片选总

线的时序,因为mini2440 目前只有一个通过总线外扩的设备,在此设备驱动中直接修改相关的寄存器配置会更加容易理解一些,当然这部分也可以放到mach-mini2440.c 中。

==========================================================================

3. 关于MAC 地址

需要注意的是,本开发板所用的DM9000 网卡并没有外接EEPROM 用以存储MAC 地址,因此系统中的MAC 地址是一个“软”地址,也就是可以通过软件进行修改,可以随意改为其他值,在static int __devinit dm9000_probe(struct platform_device *pdev)函数中可以看出。

==========================================================================

4. 编译运行测试

Device Drivers --->Network device support ---> Ethernet (10 or 100Mbit) --->中选择dm9000 support

这次编译的zImage 2058448 bytes

根据启动信息:

dm9000 Ethernet Driver, V1.31

dm9000 dm9000: eth%d: Invalid ethernet MAC address. Please set using ifconfig

eth0: dm9000e at c486e300,c4872304 IRQ 51 MAC: ff:ff:ff:ff:ff:ff (chip)

 

可以上一节的文件系统没有移植好,不能完全启动,进入控制终端,ifconfig~

==========================================================================

5. 小结

这次照着《Mini2440 Linux移植开发实战指南》3.9 移植DM9000 网卡驱动,做就行了。没有遇到其他什么问题。

走一遍,理解深刻一点。还有很多要做的呢……

根文件系统也好弄上去才好,方面后面的工作!

==========================================================================

参考:

[1] Mini2440 Linux移植开发实战指南

阅读(1697) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~