益友网(http://www.1uu2.com) 做linux用户的良师益友

当前位置: 益友网 > Linux安装配置 > 文章正文

S3C2410 USB的驱动

liner 发表于 2009-12-26 00:57 | 来源: | 阅读 589 次

代码修改——修改arch/arm/mach-s3c2410/mach-smdk2410.c
+#include
+#include
+#include
+#include
+static struct s3c2410_hcd_info usb_sbc2410_info = {
+    .port[0]        = {
+            .flags  = S3C_HCDFLG_USED
+     }
+};
+int usb_sbc2410_init(void)
+{
+unsigned long upllvalue = (0×78+printk(“USB Control, (c) 2006 sbc2410\n”);
+s3c_device_usb.dev.platform_data = &usb_sbc2410_info;
+while(upllvalue!=__raw_readl(S3C2410_UPLLCON))
+{
+__raw_writel(upllvalue,S3C2410_UPLLCON);
+mdelay(1);
+}
+return 0;
+}
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_sbc2410_init();
}
3.内核配置
>让内核支持热插拔
General setup  —>  Support for hot-pluggable devices
>USB驱动设置
Device Drivers  —>Generic Driver Options
—> Hotplug firmware loading support
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 FS和VFAT FS支持
File systems  —> DOS/FAT/NT Filesystems
—>  MSDOS fs support
VFAT (Windows-95) fs support
(936) Default codepage for FAT
(cp936) Default iocharset for FAT
做完这些后,插入u盘后,内核应该可以识别到u盘,出现:
usb 1-1: new full speed USB device using s3c2410-ohci and address 3
ub(1.3): GetMaxLUN returned 0, using 1 LUNs
但是,还有下面一句出错提示:
/dev/ub/a: unknown partition table
>使能(DOS分区)CONFIG_MSDOS_PARTITION
File systems  —> Partition Types
—> PC BIOS (MSDOS partition tables) support
以下是我的内核插入u盘后的提示信息:
usb 1-1: new full speed USB device using s3c2410-ohci and 2
ub(1.2): GetMaxLUN returned 0, using 1 LUNs
/dev/ub/a: p1
表示usb设备已经挂载到/dev/ub/a/part1目录下
>加入中文字体库
Native Language Support
—> Simplified Chinese charset (CP936, GB2312)
NLS UTF8
以下是挂载usb设备后的显示:
[root@Emux /]# mount -t vfat -o iocharset=cp936 /dev/ub/a/part1 /mnt
[root@Emux /]# ls /mnt
4.移植小结
>如果想知道内核有没有识别出u盘的话可以执行命令:cat /proc/partitions ,看看插入USB前后分区信息有什么不同就知道了
>另外,如果想让内核把它当成SCSI设备来处理的话
Device Drivers  —> Block devices
—>  Low Performance USB Block driver     去掉
Device Drivers  —>SCSI device support
—>  SCSI disk support                                  添加
个人觉得使用usb设备的话Low Performance USB Block driver比SCSI disk要好
>一般都会新建一个/dev/sda1的链接指向usb设备的挂载点的,可以在启动文件中使用命令ln -s xxx xxx来建立这个链接

本文来自ChinaUnix博客 :http://blog.chinaunix.net/u3/103860/showart_2065525.html

关键字:
喜欢益友网的文章,那就通过 RSS Feed 功能订阅阅读吧!

我要评论

*

* 绝不会泄露



返回首页 | 关于我们 | 联系我们 | 广告合作 | 网站地图 | 友情链接 | 版权声明 |