Chinaunix首页 | 论坛 | 博客
  • 博客访问: 699395
  • 博文数量: 152
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1793
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-12 12:26
个人简介

相信自己,只有不想做的,没有做不到的。

文章分类

全部博文(152)

文章存档

2021年(1)

2015年(2)

2014年(74)

2013年(75)

分类: LINUX

2013-11-07 22:57:47

【实验环境】

?          主机:ubuntu 10.10发行版

?          目标机:FS_S5PC100平台

?          交叉编译工具:arm-cortex_a8-linux-gnueabi-gcc

【实验步骤】

?          添加针对我们板子的USB驱动及相关头文件

拷贝ohci-s3c2410.c drivers/usb/host/

 

拷贝regs-clock.h arch/arm/mach-s5pc100/include/mach/

 

?          修改drivers/usb/Kconfig

在:

default  y  if  ARCH_S3C2410

后添加:

default  y  if  ARCH_S5PC100

 

?          修改drivers/usb/host/ohci-hcd.c

修改:

#if defined(CONFIG_ARCH_S3C2410) || defined(CONFIG_ARCH_S3C64XX)

为:

#if defined(CONFIG_ARCH_S3C2410) || defined(CONFIG_ARCH_S3C64XX) || defined(CONFIG_ARCH_S5PC100)

 

?          修改arch/arm/mach-s5pc100/include/mach/map.h

添加如下内容:

#define S3C_PA_USBHOST          (0xED400000)

 

?          修改arch/arm/plat-samsung/dev-usb.c

修改

[1] = {

.start = IRQ_USBH,

.end   = IRQ_USBH,

.flags = IORESOURCE_IRQ,

}

为:

[1] = {

.start = IRQ_UHOST,

.end   = IRQ_UHOST,

.flags = IORESOURCE_IRQ,

}

 

?         添加平台设备

修改arch/arm/mach-s5pc100/Kconfig

select  S3C_PL330_DMA

后添加

select  S3C_DEV_USB_HOST

 

修改arch/arm/mach-s5pc100/mach-smdkc100.c

 

添加头文件

#if defined (CONFIG_USB_SUPPORT)

#include

#include

#include

#endif

 

添加平台设备

 

#if defined(CONFIG_USB_SUPPORT)

void usb_host_clk_en(void) {

        /* Setting the epll clk to 48 MHz, P=3, M=96, S=3 */

        writel((readl(S5P_EPLL_CON) & ~(S5P_EPLL_MASK)) | (S5P_EPLL_EN \

                                | S5P_EPLLVAL(96,3,3)), S5P_EPLL_CON);

        writel((readl(S5P_CLK_SRC0) | S5P_CLKSRC0_EPLL_MASK), S5P_CLK_SRC0);

        writel((readl(S5P_CLK_SRC1)& ~S5P_CLKSRC1_UHOST_MASK), S5P_CLK_SRC1);

 

        /* USB host clock divider ratio is 1 */

        writel((readl(S5P_CLK_DIV2)& ~S5P_CLKDIV2_UHOST_MASK), S5P_CLK_DIV2);

        writel(readl(S5P_CLKGATE_D10)|S5P_CLKGATE_D10_USBHOST, S5P_CLKGATE_D10);

        writel(readl(S5P_SCLKGATE0)|S5P_CLKGATE_SCLK0_USBHOST, S5P_SCLKGATE0);

}

EXPORT_SYMBOL(usb_host_clk_en);

#endif

 

添加平台设备列表

在smdkc100_device[]结构体数组中添加如下内容:

#if defined(CONFIG_USB_SUPPORT)

        & s3c_device_ohci,

#endif

 

?          配置内核

$ make menuconfig

USB控制器支持

Device Drivers  --->

       [*] USB support  --->

              <*>   Support for Host-side USB

              <*>     OHCI HCD support

 

U盘支持

Device Drivers  --->

       SCSI device support  --->

              <*> SCSI device support

              <*> SCSI disk support

              <*> SCSI generic support

              <*> SCSI media changer support

 

Device Drivers  --->

       [*] USB support  --->

<*>   USB Mass Storage support

 

文件系统及语言配置:

File systems  --->

DOS/FAT/NT Filesystems  --->

<*> VFAT (Windows-95) fs support 

-*- Native language support  --->

<*>   Codepage 437 (United States,Canada)

<*>   Simplified Chinese charset (CP936, GB2312)

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

<*>   ASCII (United States)

<*>   NLS UTF-8

            

?          编译内核并拷贝到tftpboot下

$ make  zImage

$ cp  arch/arm/boot/zImage  /tftpboot

 

?          测试

启动目标板并在目标板上完成如下操作:

# mount  -t  vfat  /dev/sda1 /mnt

# ls

可以查看到U盘内容,即完成实验。

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