Linux-2.6.30 _USB_HOST 移植

分类: LINUX


Linux-2.6.30 _USB_HOST 移植

USB_HOST0驱动移植

1 、修改 arch/arm/mach-s3c2410/mach-smdk2410.c 文件,添加以下部分代码:

#include <mach/regs-clock.h>

#include <plat/usb-control.h>

#include <linux/device.h>

#include <linux/delay.h>

static struct s3c2410_hcd_info usb_gec2410_info = {

  .port[0] = {

.flags = S3C_HCDFLG_USED ,

}

};

int usb_gec2410_init(void)

{

unsigned long upllvalue = (0x78<<12)|(0x02<<4)|(0x03);

printk("USB Control, (c) 2009 gec2410\n");

s3c_device_usb.dev.platform_data = &usb_gec2410_info;

while(upllvalue!=__raw_readl(S3C2410_UPLLCON))

{

  __raw_writel(upllvalue,S3C2410_UPLLCON);

  mdelay(1);

  }

  return 0;

}


2 、 在static void __init smdk2410_map_io()函数中添加 usb_sbc2410_init()函数。(红色部分)

static void __init smdk2410_map_io(void)

{

s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));

s3c24xx_init_clocks(0);

s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));

s3c24xx_set_board(&smdk2410_board);

usb_gec2410_init();

}


3. 内核配置

■ 让内核支持热插拔

General setup --->

  [ * ] Configure standard kernel features (for small systems) —— >

  < * >Support for hot-pluggable devices

■ 让内核支持 USB 设备

Device drivers 

  Block devices --->

  < * >Low Performance USB Block driver

  SCSI device support --->

  < * >SCSI generic support

  < * >Probe all LUNs on each SCSI device

  USB support --->

  < * >Support for Host-side USB

  [ * ] USB device filesystem

  < * >USB Mass Storage support

  < * >USB Monitor

■ 加入 MSDOS 文件系统和 VFAT 文件系统支持(为适应挂载 U 盘)

File systems --->

  DOS/FAT/NT Filesystems --->

  <*> MSDOS fs support

  <*>VFAT (Windows-95) fs support

  ( 936 ) Default codepage for FAT // 更改默认值为 936

  ( cp936 ) Default iocharset for FAT // 更改默认值为 cp936

■ 使能( DOS 分区) CONFIG_MSDOS_PARTITION

Partition Types --->

  [ * ] PC BIOS (MSDOS partition tables) support

■ 添加对中文字体库的支持

-*- Native language support --->

  < * >Simplified Chinese charset (CP936, GB2312)

  < * > NLS UTF8

4 、修改好源码并配置好内核选项后编译

make


5 、挂载USB设备U盘。 

1)设置 mdev

# mkdir /etc/mdev.conf

创建所有设备节点

# mdev -s


2)启动实验板,查看系统分区的主次设备号。

# cat /proc/partitions

打印分区情况如下

 major    minor    #blocks    name


  31        0        256   mtdblock0

  31        1       3072   mtdblock1

  31        2      62208   mtdblock2


插入 U 盘后 /proc/partitions 目录中增加了一个 uba 类型设备(此设备号

为 0 ),并出现 一个 uba1 的真实设备(设备号一般为 1 或大于 1 )

 major    minor     #blocks    name


  31        0        256    mtdblock0

  31        1       3072    mtdblock1

  31        2      62208    mtdblock2

   8        0    1993728      sda

   8        1    1993604      sda1


3)挂载 U 盘


创建设备节点(根据所查分区情况----上面两个设备节点均可行)

mknod  /dev/sda1  b  8  1

挂载

#mount -t vfat /dev/sda1 /tmp

#ls /tmp

至此,可以查看到U盘中资料。


常见错误


现象1:

[root@GEC/]#usb 1-1: new full speed USB device using s3c2410-ohci and

address 4

usb 1-1: device descriptor read/64, error -62

usb 1-1: device descriptor read/64, error -62

usb 1-1: new full speed USB device using s3c2410-ohci and address 5

usb 1-1: device descriptor read/64, error -62

usb 1-1: configuration #1 chosen from 1 choice


解决方法:去掉

Device Drivers-->

  Real Time Clock


现象2:

插入 u 盘时显示:

bash-4.0# scsi 0:0:0:0: Direct-Access ChipsBnk Flash Disk 2.00 PQ:0 ANSI: 2

sd 0:0:0:0: Attached scsi generic sg0 type 0

sd 0:0:0:0: [sda] 516608 512-byte hardware sectors: (264 MB/252 MiB)

sd 0:0:0:0: [sda] Write Protect is off

sd 0:0:0:0: [sda] Assuming drive cache: write through

sd 0:0:0:0: [sda] Assuming drive cache: write through

sda: sda1

sd 0:0:0:0: [sda] Attached SCSI removable disk

并在在挂载时出现一下提示:

Unable to load NLS charset cp437

FAT: codepage cp437 not found

解决方法:添加

File systems-->

  Native language support-->

   Codepage 437 (United States, Canada)


现象3:

挂载时出现一下提示:

Unable to load NLS charset iso8859-1

FAT: IO charset iso8859-1 not found


解决方法:添加

File systems-->

  Native language support-->

  NLS ISO 8859-1 (Latin 1; Western European Languages)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值