您的位置:首页 > 移动开发 > Android开发

linaro Android4.0.4 for FS100 - dm9000移植

2012-07-08 17:47 281 查看
1. 平台代码修改

vim arch/arm/mach-s5pc100/mach-smdkc100.c

2. 添加需要的头文件

#if defined (CONFIG_DM9000)

#include <linux/dm9000.h>

#include <linux/irq.h>

#endif

3. 平台设备添加

// CMD为低,读写地址寄存器, CMD为高,读写数据寄存器

// 访问dm9000内部寄存器时,先将cmd拉低,向dm9000寄存器里写地址,然后,将cmd拉高,读写dm9000数据寄存器里的数据

#if defined(CONFIG_DM9000)

// MichaelTang add start

static struct resource dm9000_resources[] = {

[0] = {

.start = 0x88000000, // 地址线

.end = 0x88000000 + 0x4 - 1,

.flags = IORESOURCE_MEM,

},

[1] = {

.start = 0x88000000 + 0x4, // 数据线

.end = 0x88000000 + 0x8 - 1,

.flags = IORESOURCE_MEM,

},

[2] = {

.start = S5P_IRQ_VIC0(10),

.end = S5P_IRQ_VIC0(10),

.flags = IORESOURCE_IRQ | IRQ_TYPE_LEVEL_HIGH, //申请中断及触发方式

},

};

static struct dm9000_plat_data s5pc100_dm9000_platdata = { // 设置网卡mac物理地址

.flags = DM9000_PLATF_16BITONLY,

.dev_addr[0] = 0x0,

.dev_addr[1] = 0x0,

.dev_addr[2] = 0x11,

.dev_addr[3] = 0x22,

.dev_addr[4] = 0x33,

.dev_addr[5] = 0x44,

};

static struct platform_device s3c_device_dm9ks = { // 注册设备结构体

.name = "dm9000",

.id = -1,

.num_resources = ARRAY_SIZE(dm9000_resources),

.resource = dm9000_resources,

.dev = {

.platform_data = &s5pc100_dm9000_platdata,

}

};

// MichaelTang add end

#endif

4. 将dm9000添加到平台设备列表中

添加位置: smdkc100_devices[]中

#if defined (CONFIG_DM9000)

// Michaeltang add

&s3c_device_dm9ks,

// MichaelTang add end

#endif

5. 配置内核

$ make menuconfig

6. 网络配置

将dm9000配置编译进内核,执行make zImage,拷贝到tftp目录中,通过tftp加载测试内核。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: