Difference between revisions of "USB Gadget"
From ArmadeusWiki
(→Installation) |
(→Usage) |
||
Line 31: | Line 31: | ||
First, load the core controller driver on your board: | First, load the core controller driver on your board: | ||
− | # | + | # modprobe imx_udc |
+ | usb: imx_udc version: 0.5 | ||
===To emulate a mass storage device:=== | ===To emulate a mass storage device:=== | ||
* create or get a "backing storage file", for example: [[http://artemys25.free.fr/armadeus/binaires/backing_file.gz]] | * create or get a "backing storage file", for example: [[http://artemys25.free.fr/armadeus/binaires/backing_file.gz]] | ||
* copy this file (uncompressed) in the '''/tmp''' directory of your rootfs (see NetworkConfig if necessary) | * copy this file (uncompressed) in the '''/tmp''' directory of your rootfs (see NetworkConfig if necessary) | ||
+ | # cp /mnt/nfs/backing_file.gz /tmp/ | ||
+ | # gunzip /tmp/backing_file.gz | ||
+ | |||
* load g_file_storage module: | * load g_file_storage module: | ||
− | # | + | # modprobe g_file_storage file=/tmp/backing_file |
+ | g_file_storage gadget: File-backed Storage Gadget, version: 28 November 2005 | ||
+ | g_file_storage gadget: Number of LUNs=1 | ||
+ | g_file_storage gadget-lun0: ro=0, file: /tmp/backing_file | ||
* connect target's USB cable to your PC and, | * connect target's USB cable to your PC and, | ||
− | On Linux: | + | On your Linux Host: |
− | * as root, launch dmesg and find the /dev/sdaX device assigned to your board | + | * as root, launch ''dmesg'' and find the ''/dev/sdaX'' device assigned to your board: |
+ | ... usb 1-1.4: new full speed USB device using uhci_hcd and address 7 | ||
+ | ... usb 1-1.4: configuration #1 chosen from 1 choice | ||
+ | ... scsi1 : SCSI emulation for USB Mass Storage devices | ||
+ | ... Vendor: Linux Model: File-Stor Gadget Rev: 0314 | ||
+ | ... Type: Direct-Access ANSI SCSI revision: 02 | ||
+ | ... SCSI device sda: 8192 512-byte hdwr sectors (4 MB) | ||
+ | ... sda: Write Protect is off | ||
+ | ... SCSI device sda: 8192 512-byte hdwr sectors (4 MB) | ||
+ | ... sda: Write Protect is off | ||
+ | ... sda: sda1 | ||
+ | ... sd 1:0:0:0: Attached scsi disk sda | ||
+ | ... sd 1:0:0:0: Attached scsi generic sg0 type 0 | ||
+ | |||
* then mount the device and enjoy file sharing: | * then mount the device and enjoy file sharing: | ||
[root@toto]# mount /dev/sda1 /mnt/tmp | [root@toto]# mount /dev/sda1 /mnt/tmp | ||
Line 48: | Line 68: | ||
===To emulate a serial port:=== | ===To emulate a serial port:=== | ||
# mknod /dev/ttygserial c 127 0 (only needed the first time you want to use it, if not already existing) | # mknod /dev/ttygserial c 127 0 (only needed the first time you want to use it, if not already existing) | ||
− | # | + | # modprobe g_serial |
+ | gs_bind: Gadget Serial v2.2 bound | ||
+ | gs_module_init: Gadget Serial v2.2 loaded | ||
==TBDL== | ==TBDL== |
Revision as of 23:08, 26 November 2007
Instructions to use the USB port of your Armadeus board to communicate with your PC
Contents
Introduction
You can connect your Armadeus board to a PC using its USB port and it can be enumerated as many USB devices (depending on the type of communication way you want to use):
- serial device
- net device
- mass storage device
Installation
- configure your Linux kernel:
[armadeus]$ make linux-menuconfig
in Device Drivers->USB support->USB Gadget Support, choose Support for USB Gadgets and activate all USB Gadget Drivers:
- save your configuration and then rebuild your kernel image:
[armadeus]$ make
now you should have following drivers in your kernel source tree:
drivers/usb/gadget/gadgetfs.ko For test drivers/usb/gadget/g_ether.ko Ethernet emulation on USB drivers/usb/gadget/g_file_storage.ko Mass storage drivers/usb/gadget/g_serial.ko Serial emulation on USB drivers/usb/gadget/g_zero.ko For test drivers/usb/gadget/imx_udc.ko i.MXL USB device Core Controller
- reflash your RootFS or manually copy imx_udc.ko, g_file_storage.ko & g_serial.ko to your target in /lib/modules/...
Usage
First, load the core controller driver on your board:
# modprobe imx_udc usb: imx_udc version: 0.5
To emulate a mass storage device:
- create or get a "backing storage file", for example: [[1]]
- copy this file (uncompressed) in the /tmp directory of your rootfs (see NetworkConfig if necessary)
# cp /mnt/nfs/backing_file.gz /tmp/ # gunzip /tmp/backing_file.gz
- load g_file_storage module:
# modprobe g_file_storage file=/tmp/backing_file g_file_storage gadget: File-backed Storage Gadget, version: 28 November 2005 g_file_storage gadget: Number of LUNs=1 g_file_storage gadget-lun0: ro=0, file: /tmp/backing_file
- connect target's USB cable to your PC and,
On your Linux Host:
- as root, launch dmesg and find the /dev/sdaX device assigned to your board:
... usb 1-1.4: new full speed USB device using uhci_hcd and address 7 ... usb 1-1.4: configuration #1 chosen from 1 choice ... scsi1 : SCSI emulation for USB Mass Storage devices ... Vendor: Linux Model: File-Stor Gadget Rev: 0314 ... Type: Direct-Access ANSI SCSI revision: 02 ... SCSI device sda: 8192 512-byte hdwr sectors (4 MB) ... sda: Write Protect is off ... SCSI device sda: 8192 512-byte hdwr sectors (4 MB) ... sda: Write Protect is off ... sda: sda1 ... sd 1:0:0:0: Attached scsi disk sda ... sd 1:0:0:0: Attached scsi generic sg0 type 0
- then mount the device and enjoy file sharing:
[root@toto]# mount /dev/sda1 /mnt/tmp [root@toto]# cd /mnt/tmp [root@toto]# showimage /mnt/tmp/test.jpg
To emulate a serial port:
# mknod /dev/ttygserial c 127 0 (only needed the first time you want to use it, if not already existing) # modprobe g_serial gs_bind: Gadget Serial v2.2 bound gs_module_init: Gadget Serial v2.2 loaded