DM9000是10/100M自适应的总线型网卡,Linux中对其支持已经非常完善,不同开发板之间移植、修改主要集中在总线的选择及中断选择上
1)修改arch/arm/mach-s3c2440/mach-smdk2440.c文件,增加以下信息
/****add by dengwei*********************************/
#include <linux/dm9000.h>
static struct resource s3c_dm9k_resource[] =
{
[0] =
{
.start = S3C2410_CS3, //网卡连接在CS3总线上(此处跟据不同开发板进行修改)
.end = S3C2410_CS3 + 3,
.flags = IORESOURCE_MEM,
},
[1] =
{
.start = S3C2410_CS3 + 4, //同上
.end = S3C2410_CS3 + 4 + 3,
.flags = IORESOURCE_MEM,
},
[2] = {
.start = IRQ_EINT7, //根据硬件外部中断管脚修改此数字
.end = IRQ_EINT7,
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING,
}
};
static struct dm9000_plat_data s3c_dm9k_platdata =
{
.flags =DM9000_PLATF_16BITONLY,
};
struct platform_device s3c_device_dm9k =
{
.name = "dm9000",
.id = 0,
.num_resources = ARRAY_SIZE(s3c_dm9k_resource),
.resource = s3c_dm9k_resource,
.dev =
{
.platform_data= &s3c_dm9k_platdata,
}
};
EXPORT_SYMBOL(s3c_device_dm9k);
/*************************add by dengwei***************************/
2)修改 arch/arm/mach-s3c2440/mach-smdk2440.c文件
修改struct platform_device *smdk2440_devices[]__initdata结构体增加以下代码:
static struct platform_device*smdk2440_devices[] __initdata =
{
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_dm9k, //for dm9000 add by dengwei
};
3)修改drivers/net/dm9000.c源码:
在头文件区增加头文件:
#include <mach/regs-mem.h>
大约1365行左右增加以下代码:
static int __devinit dm9000_probe(structplatform_device *pdev)
{
//add here 函数开始处
}
/**********add by dengwei******************************************/
[cpp] view plaincopy
#if defined(CONFIG_ARCH_S3C2440)
int oldval_bwscon = *((volatile unsignedint *)S3C2410_BWSCON);
*((volatileunsigned int *)S3C2410_BWSCON)=(oldval_bwscon&~(3<<16))|S3C2410_BWSCON_DW3_16|S3C2410_BWSCON_WS3|S3C2410_BWSCON_ST3; //设置BANK3:总线宽度为16,使能nWAIT
*((volatile unsigned int *)S3C2410_BANKCON3) = 0x1f7c; //设置BANK3的时间参数
#endif
/**********add by dengwei****************/
4)修改make menuconfig配置选项:
Devices Drivers --->
Network device support--->
Ethernet (10 or 100) --->
[*]DM9000support
(4)DM9000maxinum debug level
//仅保留这两个选项,其余的全部去掉
5)重新编译内核,烧入开发板中即可
6)第一次使用的开发板需使用ifconfig eth0 hw ether 12:34:56:78:32:65 设置mac地址
(MAC地址可以随便设置)
使用ifconfigeth0 192.168.220.*设置开发板IP
使用ping命令ping主机即可
原文链接:http://emb.sunplusedu.com/answer/2013/0821/2116.html
第三:Linux2.6.34下 USB驱动(U盘\USB鼠标、键盘)
由于Linux中对USB的驱动已经非常完善,这里只需要按照以下配置 就可以了,配置完后重新编译内核烧到开发板上
1、修改make menuconfig
System Type -->
<*> S3C2410 USB function support
<*> support for S3C2410 USB character device emulation
Input core support -->
<*>Input core support
<*>keyboard support
<*>Mouse support
SCSI device support --->
< > RAID Transport Class
<*> SCSI device support
< > SCSI target support
[*] legacy /proc/scsi/ support
*** SCSI support type (disk, tape,CD-ROM) ***
<*> SCSI disk support
< > SCSI tape support
< > SCSI OnStream SC-x0 tapesupport
< > SCSI CDROM support
<*> SCSI generic support
< > SCSI media changer support
[*] HID Devices --->
--- HID Devices
-*- Generic HID support
[ ] /dev/hidraw raw HID device support
*** USB Input Devices ***
<*> USB Human Interface Device(full HID) support
[ ] PID device support
[*] /dev/hiddev raw HID device support
[*] USB support --->
{*} Support for Host-side USB
[ ] USB verbose debug messages
[ ] USB announce new devices
*** Miscellaneous USB options ***
[*] USB device filesystem
[*] USB device class-devices (DEPRECATED)
<*> OHCI HCD support
<*> USB Mass Storage support
--- USB Human Interface Devices(HID)
<*> USB Human Interface Devices(full HID) support
[*] /dev/hiddev raw HID device support(EXPERIMENTAL)
2、插入U盘。
当系统启动后插入U盘就会出现一些信息,可以看到sda就是U盘设备了,sda1是U盘的一个分区。
mount /dev/sda1 /mnt/ -o utf8
utf8 参数可以识别中文
3、插入鼠标键盘
会有相应提示