Linux2.6 USB HOST驱动于华恒开发板上的移植(2) |
2007-5-24 14:09:00 |
提供对MSDOS FS和VFAT FS的支持。 (5)继续到File systemsà Partition Types中 提供MSDOS分区支持。 (6)到File systemsà Native Language Support中 提供语言支持。 编译运行后,插入U盘,出现错误如下: 按照提示看来是不得不修改驱动代码了。重新进入ohci-s3c2410.c,这里面主要完成s3c2410 usb host 设备的初始化,包括电源、时钟、寄存器等。结合网上的一些经验,发现代码中竟然没有对s3c2410的UPLLCOM进行设置,于是在s3c2410_start_hc加入: unsigned long upllvalue=(0x78<<12)|(0x02<<4)|(0x03); printk("USB Control,(c)2007 sbc2410\n"); while(upllvalue!=__raw_readl(S3C2410_UPLLCON)) { __raw_writel(upllvalue,S3C2410_UPLLCON); mdelay(1); } 同时根据2.6核的Document/arm/Samsung-S3C24XX/USB-HOST.txt的帮助在arch/arm/mach-s3c2410/mach-smdk2410.c中进行以下修改: 增加头文件 #i nclude <asm/arch-s3c2410/regs-clock.h> 在代码开始部分加入 static struct s3c2410_hcd_info smdk2410_usbcfg={ .port[0]={ .flags=S3C_HCDFLG_USED } }; void __init smdk2410_init(void) { s3c_device_usb.dev.platform_data=&smdk2410_usbcfg; } 在static void __init smdk2410_map_io(void)函数中加入: smdk2410_init(); 在MACHINE_START(SMDK2410, "SMDK2410")和MACHINE_END中加入 .init_machine= &smdk2410_init, 重新编译运行。 可以识别了,可是进入/dev目录却找不到sda1设备。这就不是很清楚了,按以前的认识应该是可以自动产生节点!这还得等高手帮忙指点一下?? 最后,索性直接mknod sda b 8 0;mknod sda1 b 8 1创建两个节点。重新加载一次U盘,执行mount –t vfat –o iocharset=cp936 /dev/sda1 /mnt,进入mnt目录,居然可以了。 |
联系客服