• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 请教 开发板模拟u盘的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 13462
精华: 0
发帖: 33
金钱: 165 两
威望: 33 点
综合积分: 66 分
注册时间: 2010-01-25
最后登录: 2018-02-08
楼主  发表于: 2010-01-25 10:53

 请教 开发板模拟u盘的问题

如题,遇到很大问题,想请教各位大大,我现在加载驱动后插入pc识别不了,提示无法识别的usb设备
我用的板是2440,是自己做的板,内核是2.6.24
我这个板子之前是没有usb device部分电路的,现在是焊掉usb部分,自己引的device电路,查入pc能提示有设备插入,应该是没问题的吧?
问下usb host跟usb device应该是独立的吧??我在内核中去掉usb host之后新内核烧完把板子插入pc就不提示有usb设备插入了
内核选项么,查了很多资料都差不多,就按照那样编译的


1.# insmod s3c2410_udc.ko
s3c2410_udc: debugfs dir creation failed -19
s3c2440-usbgadget s3c2440-usbgadget: S3C2440: increasing FIFO to 128 bytes
# insmod g_file_storage.ko file=/dev/mtdblock4 stall=0 removable=1
g_file_storage gadget: File-backed Storage Gadget, version: 7 August 2007
g_file_storage gadget: Number of LUNs=1
g_file_storage gadget-lun0: ro=0, file: /dev/mtdblock4

然后插入pc,板子上提示
usb 1-1: new full speed USB device using s3c2410-ohci and address 93
usb 1-1: device not accepting address 93, error -62
注:我调试这个板子去掉usb host 接了usb device后内核运行到加载usb驱动时候也会有上边这个提示错误的,应该是没找到host吧


2. 请问这个是什么原因呀,是因为我的mtdblock4不是fat格式的么??我现在系统分区是viiv param kernel root usr mtdblock4是usr分区
但是我用mddosfs不能分区
# mkdosfs /dev/mtdblock4
mkdosfs 2.11 (12 Mar 2005)
unable to get drive geometry, using default 255/63#

3. 用dd的那种, 看网上你们都是/dev/zero  这是那个描述符啊??不是自动创建的,我不知道是那个的,所以自己也不好创建,能否说下呀

# dd if=/dev/mtdblock4  of=img bs=1k count=12k
dd: img: Read-only file system

# insmod g_file_storage.ko file=img stall=0 removable=1
g_file_storage gadget-lun0: unable to open backing file: img
insmod: error inserting 'g_file_storage.ko': -1 Unknown symbol in module


各位能否解决下如上几个问题1.pc不识别 ,是挂的不是fat分区的原因?? 2.mkdosfs不能做fat分区,怎么弄?  3.dd这个也不行,/dev/zero是那个描述如,说下,而且怎么找不到img
期待…………郁闷,这周毕业要 弄好
[ 此帖被coschang在2010-01-25 11:01重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-01-25 15:39
然后插入pc,板子上提示
usb 1-1: new full speed USB device using s3c2410-ohci and address 93
usb 1-1: device not accepting address 93, error -62

这个看起来是弄错USB口了吧,你把USB线插到了板子的USB Host端口

但是我用mddosfs不能分区
# mkdosfs /dev/mtdblock4
mkdosfs 2.11 (12 Mar 2005)
unable to get drive geometry, using default 255/63#

不要在mtdblock设备上直接用FAT文件系统,如果你要做U盘,用板子上的SD卡。把"insmod g_file_storage.ko file=/dev/mtdblock4 stall=0 removable=1"换成"insmod g_file_storage.ko file=/dev/mmcblk0 stall=0 removable=1"

3. 用dd的那种, 看网上你们都是/dev/zero  这是那个描述符啊??不是自动创建的,我不知道是那个的,所以自己也不好创建,能否说下呀

# dd if=/dev/mtdblock4  of=img bs=1k count=12k
dd: img: Read-only file system

/dev/zero是一个设备节点,从里面读取出来的数据值永远是0x0, 它一般用来快速填充或生成一个指定大小文件(全部填成0x0)。
你最好先搞清楚dd的用法(在你的Linux PC上用man dd)再去用它,它对你来说是一个很危险的命令
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 13462
精华: 0
发帖: 33
金钱: 165 两
威望: 33 点
综合积分: 66 分
注册时间: 2010-01-25
最后登录: 2018-02-08
2楼  发表于: 2010-01-25 16:05
谢谢指导

1. 这个看起来是弄错USB口了吧,你把USB线插到了板子的USB Host端口
我现在的板子端的usb是从usb host该过来的,把usbhost部分焊掉,然后根据一般的usb device连接的,不然插入PC后也不会识别到有usb设备了,现在能提示有usb设备但是识别不了不知道为什么
2. sd卡目前不可用(我也很想用这个哭)
3. dd我仔细看了下介绍,那就算我之前设定的大小不对,从mtdblock拷贝东西出来了,但是img文件应该也是创造成功了的吧?为什么
g_file_storage gadget-lun0: unable to open backing file: img
打不开了
img创建出来后需要专门格成fat才能用么??

谢谢大侠知道,第一个问题我再调调看
/dev/zero我也看了下,不过我板上没有,我看了下似乎设备号是 1 5,这个在内核有需要打开的特殊选项么?

期待……
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2010-01-25 16:36
3. dd我仔细看了下介绍,那就算我之前设定的大小不对,从mtdblock拷贝东西出来了,但是img文件应该也是创造成功了的吧?为什么

你的dd命令返回"dd: img: Read-only file system", 这说明当前文件系统是只读的,dd无法创建img文件。

/dev/zero我也看了下,不过我板上没有,我看了下似乎设备号是 1 5,这个在内核有需要打开的特殊选项么?

不需要,你可以用“mknod /dev/zero c 1 5”来手动创建这个设备节点,前提是/dev目录可写。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 13462
精华: 0
发帖: 33
金钱: 165 两
威望: 33 点
综合积分: 66 分
注册时间: 2010-01-25
最后登录: 2018-02-08
4楼  发表于: 2010-01-25 17:28
谢谢指教

1.我的 /dev目录不可写,不过自己的驱动节点都在/dev/mydev/下做的,我在这里创建了应该可以的吧
我现在可以用dd创建文件了,但是还是有有如下问题,不能打开为什么呢?
# insmod g_file_storage.ko file=img stall=0 removable=1
g_file_storage gadget-lun0: unable to open backing file: img
insmod: error inserting 'g_file_storage.ko': -1 Unknown symbol in module
级别: 新手上路
UID: 13462
精华: 0
发帖: 33
金钱: 165 两
威望: 33 点
综合积分: 66 分
注册时间: 2010-01-25
最后登录: 2018-02-08
5楼  发表于: 2010-01-26 08:29
版主大大
级别: 新手上路
UID: 13462
精华: 0
发帖: 33
金钱: 165 两
威望: 33 点
综合积分: 66 分
注册时间: 2010-01-25
最后登录: 2018-02-08
6楼  发表于: 2010-01-26 11:10
上边那个似乎是路径问题哦
现在好了,不过还是很麻烦的问题
# dd if=/dev/mydev/zero of=img bs=1k count=12k
12288+0 records in
12288+0 records out
# mkdosfs img   //这个要不要好像一样的
mkdosfs 2.11 (12 Mar 2005)
#g_file_storage.ko  s3c2410_udc.ko
# insmod /lib/modules/s3c2410_udc.ko
s3c2410_udc: debugfs dir creation failed -19
s3c2440-usbgadget s3c2440-usbgadget: S3C2440: increasing FIFO to 128 bytes
# insmod /lib/modules/g_file_storage.ko file=img stall=0 removable=1
g_file_storage gadget: File-backed Storage Gadget, version: 7 August 2007
g_file_storage gadget: Number of LUNs=1
g_file_storage gadget-lun0: ro=0, file: /usr/img
把板子的usb插入pc,pc端还是无法识别的usb设备,板子端是
usb 1-1: new full speed USB device using s3c2410-ohci and address 2
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 3
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 4
usb 1-1: device not accepting address 4, error -62
usb 1-1: new full speed USB device using s3c2410-ohci and address 5
usb 1-1: device not accepting address 5, error -62

我查了这个错误的资料,似乎都是开始移植usb host时初始化的时候不当造成的
我现在是用usb device怎么也出这个错呢??问下:
1.是不是需要在mach-smdk2410.c中对usb device部分也单独做初始化的一些配置?
2.我把usb host去掉然后编译内核后为什么插入pc后,pc检测不到呢?
级别: 侠客
UID: 3595
精华: 4
发帖: 53
金钱: 425 两
威望: 213 点
综合积分: 186 分
注册时间: 2009-01-20
最后登录: 2011-10-18
7楼  发表于: 2010-01-26 13:26
你用的是什么bootloader?这个好象是因为usb device被设成了usb host所致,你查一下s3c2440的手册,我不记得是修改哪一个寄存器值,把它设为usb device的了。
级别: 新手上路
UID: 13462
精华: 0
发帖: 33
金钱: 165 两
威望: 33 点
综合积分: 66 分
注册时间: 2010-01-25
最后登录: 2018-02-08
8楼  发表于: 2010-01-26 15:21
好的,我去看看,我用的是vivi
这个跟bootloader有关?
顺便想请教下,我看到plat-s3c24xx/devs.c中的   usb_gadget部分有这个
void __init s3c24xx_udc_set_platdata(struct s3c2410_udc_mach_info *pd)
我看到有相关的移植代码有要在mach-smdk2440.c中添加的里边有这个函数调用来初始化如下边,我想问下
case S3C2410_UDC_P_ENABLE :
case S3C2410_UDC_P_DISABLE :
这两个下边只是设置一个gpio口的高低电平做什么用?我现在的usb device连接里边没有用到这些gpio口呀???

s3c2410_gpio_cfgpin(S3C2410_GPG9, S3C2410_GPG9_OUTP);
        switch (cmd)
        {
            case S3C2410_UDC_P_ENABLE :
                
            s3c2410_gpio_setpin(S3C2410_GPG9, 1);   //set gpg9 output HIGH
                break;
            case S3C2410_UDC_P_DISABLE :
                s3c2410_gpio_setpin(S3C2410_GPG9, 0);   //set gpg9 output LOW
                break;
            case S3C2410_UDC_P_RESET :
                //FIXME!!!
                break;
            default:
                break;
        }
    }

static struct s3c2410_udc_mach_info smdk2410_udc_cfg __initdata = {
        .udc_command    = smdk2410_udc_pullup,
    };

static void __init sdmk2410_init(void)
{
.......
s3c24xx_udc_set_platdata(&smdk2410_udc_cfg); /* 初始化*/
.......
}
级别: 新手上路
UID: 13462
精华: 0
发帖: 33
金钱: 165 两
威望: 33 点
综合积分: 66 分
注册时间: 2010-01-25
最后登录: 2018-02-08
9楼  发表于: 2010-01-27 16:14
引用第7楼hugerat于2010-01-26 13:26发表的  :
你用的是什么bootloader?这个好象是因为usb device被设成了usb host所致,你查一下s3c2440的手册,我不记得是修改哪一个寄存器值,把它设为usb device的了。


我看了下,CLKCON跟MISCCR里边有usb device设置
MISCCR里边的我在mach-smdk2440.c
添加了s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST |
                 S3C2410_MISCCR_USBSUSPND0 |
                 S3C2410_MISCCR_USBSUSPND1, 0x0);
这样应该是对了,而且我在  s3c2410_udc.c里边看了两个寄存器的值,是没问题的。
现在还是不行,不过似乎确实是usb device没设好或者硬件问题

还有哪里有设置device 跟 host选择的地方么?
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go