相信自己,只有不想做的,没有做不到的。
分类: 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盘内容,即完成实验。