OESF | ELSI | pdaXrom | OpenZaurus | Zaurus Themes | Community Links | Ibiblio

IPB

Welcome Guest ( Log In | Register )

> How To Load G_file_storage.ko? Error Occus
andyzn
post Jul 3 2006, 06:21 AM
Post #1





Group: Members
Posts: 13
Joined: 3-July 06
Member No.: 10,306



I have a board with USB slave 1.1, and Linux installed on it.

I have connected it with a PC through a USB cable.

And I want to make the PC "know" the device?

on the board(the kernel is 2.6.11):

1. start Linux

2. dd bs=1M count=8 if=/dev/zero /root/data (FAT32)

3. modprobe g_file_storage file=/root/data

HERE IS THE ERROR MESSAGE:
*****************************************
Using /lib/modules/2.6.11-XSBase27x/kernel/drivers/usb/gadget/g_file_storage.ko
insmod: cannot insert `/lib/modules/2.6.11-XSBase27x/kernel/drivers/usb/gadget/g
_file_storage.ko': Device or resource busy (-1): Device or resource busy
modprobe: failed to load module g_file_storage
*****************************************

which device is busy?

Or
what should I do before I "modprobe g_file_storage..."?
Go to the top of the page
 
+Quote Post
 
Start new topic
Replies
lardman
post Jul 11 2006, 06:05 AM
Post #2





Group: Members
Posts: 4,515
Joined: 25-October 03
From: Bath, UK
Member No.: 464



I'm not sure. You could always format it using the board before you load the mass-storage module.

I had some issues with WinXP recognising my Z as a mass-storage device, but not actually working a long while back when I was first fiddling with the storage_fd.o module. These issues seemed to just go away (or there may have been a patch - can't remember - try a search of this forum).


Si
Go to the top of the page
 
+Quote Post
andyzn
post Jul 11 2006, 09:58 PM
Post #3





Group: Members
Posts: 13
Joined: 3-July 06
Member No.: 10,306



That is interesting.
I changed the partition type to Win95 FAT32 (LBA) on the board:
and everything is OK now.

Command (m for help): p

Disk /root/back_file: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/root/back_file1 1 4 32098+ c Win95 FAT32 (LBA)


QUOTE(lardman @ Jul 11 2006, 06:05 AM)
I'm not sure. You could always format it using the board before you load the mass-storage module.

I had some issues with WinXP recognising my Z as a mass-storage device, but not actually working a long while back when I was first fiddling with the storage_fd.o module. These issues seemed to just go away (or there may have been a patch - can't remember - try a search of this forum).


Si
*
Go to the top of the page
 
+Quote Post
andyzn
post Jul 11 2006, 10:39 PM
Post #4





Group: Members
Posts: 13
Joined: 3-July 06
Member No.: 10,306



Goal: To simulate the flash of the board to be a USB DISK(In Host View).

Background: XScale Pxa27x Board, USB Slave 1.1, Linux 2.6 11, USB cable, a PC(as host) with Windows XP or Linux.

General: make use of GADGET DRIVER to specify to space in the flash,which is
used as "USB disk".

Step 1:

FILE_STORAGE.C NEED CHANGED

*****************************************************************
add '&' at two places, need a pointer accord to macro module_param_array.

module_param_array(file, charp, &mod_data.num_filenames, S_IRUGO);
MODULE_PARM_DESC(file, "names of backing files or devices");

module_param_array(ro, bool, &mod_data.num_ros, S_IRUGO);
MODULE_PARM_DESC(ro, "true to force read-only");
*****************************************************************
make use of this patch or change so code in usb/gadget/file_storage.c

--- kernel26/drivers/usb/gadget/file_storage.c.orig 2005-08-16 17:54:58 +0200
+++ kernel26/drivers/usb/gadget/file_storage.c 2005-08-16 18:01:15 +0200
@@ -288,6 +288,14 @@
#define hw_optimize(g) do {} while (0)
#endif

+/*
+ * PXA27X_UDC
+ */
+#ifdef CONFIG_USB_GADGET_PXA27X
+extern struct usb_ep* pxa27x_ep_config(struct usb_gadget *gadget,
+ struct usb_endpoint_descriptor *desc, int config, int interface, int alt);
+#endif
+

/*
* This driver assumes self-powered hardware and has no way for users to
@@ -3915,13 +3923,27 @@

/* Find all the endpoints we will use */
usb_ep_autoconfig_reset(gadget);
+#ifdef CONFIG_USB_GADGET_PXA27X
+ ep = pxa27x_ep_config (gadget, &fs_bulk_in_desc,
+ CONFIG_VALUE,
+ (int)intf_desc.bInterfaceNumber,
+ (int)intf_desc.bAlternateSetting);
+#else
ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc);
+#endif
if (!ep)
goto autoconf_fail;
ep->driver_data = fsg; // claim the endpoint
fsg->bulk_in = ep;

+#ifdef CONFIG_USB_GADGET_PXA27X
+ ep = pxa27x_ep_config (gadget, &fs_bulk_out_desc,
+ CONFIG_VALUE,
+ (int)intf_desc.bInterfaceNumber,
+ (int)intf_desc.bAlternateSetting);
+#else
ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc);
+#endif
if (!ep)
goto autoconf_fail;
ep->driver_data = fsg; // claim the endpoint

for someone who is not familiar with how to patch a file, change some code like this:
#include "pxa27x_udc.h" or "extern struct usb_ep* pxa27x_ep_config...." which could be found in pxa27x_udc.c
then replace usb_ep_autoconfig with pxa27x_ep_config in two places as the patch does.

Step 2:

COMPILE KERNEL, DOWNLOAD MODULES TO BOARD
In your linux host:
make menuconfig // remember to make gadgat file storage as module
make zImage
make modules
make modules_install //after this, go to /lib/modules/x.x.xx to find your module such as g_file_storage.ko

download the files in x.x.xx to your board, and place them in the same directory.

STEP 3:

CREATE A SPACE FOR USB STORAGE

vi /root/back_file
dd if=1M count=32 if=/dev/zero of=/root/back_file
fdisk -S 8 -H 16 -C 512 /root/back_file //I made it a Win95 FAT32 (LBA)

u could find content related here:
FSG

STEP 4:

INSERT THE MODULE AND TEST
insmod g_file_storage file=/root/back_file
when "using /lib/modules/x.xx.xx/kernel/driver/usb/gadget/g_file_storage.ko" is displayed, insert is finished.

make sure your board is connected by the USB cable with PC(host), my host is Widows XP. After ONE MINUTE, just like a USB DISK is inserted, a new driver is shown.(If not, go to the computer manager to see)

Finally, u could test the function of read and write.
It is OK for me,just like a USB DISK.

I hope this is helpful to some people.
I will be apreciate if u could give me some advice.
Thanks to lardman.
Thanks to everybody.
Go to the top of the page
 
+Quote Post

Posts in this topic
andyzn   How To Load G_file_storage.ko? Error Occus   Jul 3 2006, 06:21 AM
lardman   How do you get a terminal prompt, not over a usb e...   Jul 3 2006, 06:27 AM
andyzn   Today I found g_ether is builded in. SO I recompil...   Jul 5 2006, 12:14 AM
andyzn   Here is sth after dmesg: [root@emdoor bin]# dmesg...   Jul 5 2006, 12:35 AM
lardman   I don't know, but a quick google turned up som...   Jul 5 2006, 03:03 AM
andyzn   Thanks for that. But the patch dosen't work. ...   Jul 6 2006, 10:14 PM
lardman   What does filp indicate the error is? Your file m...   Jul 10 2006, 03:25 AM
andyzn   Oh, sorry. Actually it is [root@Bill ~]fdisk -S...   Jul 10 2006, 04:18 AM
andyzn   I have checked the error, error = PTR_ERR(filp) ...   Jul 10 2006, 08:06 PM
andyzn   after dmesg,below is the information while rebooti...   Jul 10 2006, 08:19 PM
andyzn   rootfs is not mounted while open /root/back_file,a...   Jul 10 2006, 10:44 PM
lardman   I didn't notice it before, but this can't ...   Jul 10 2006, 02:57 PM
andyzn   In gadget/gadget_chips.h #ifdef CONFIG_USB_GADGET...   Jul 10 2006, 07:29 PM
lardman   I was going to suggest that. Have you tried using...   Jul 11 2006, 01:05 AM
andyzn   I am happy to say, my windows host could recognize...   Jul 11 2006, 01:13 AM
lardman   Glad you've got it sorted Si   Jul 11 2006, 01:28 AM
andyzn   The host(windows XP) always says "it should b...   Jul 11 2006, 05:54 AM
lardman   I'm not sure. You could always format it using...   Jul 11 2006, 06:05 AM
andyzn   That is interesting. I changed the partition type ...   Jul 11 2006, 09:58 PM
andyzn   Goal: To simulate the flash of the board to be a U...   Jul 11 2006, 10:39 PM


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 1st October 2014 - 08:16 AM