summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-03-13 23:47:11 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-03-13 23:47:11 +0000
commit3f0eacb1397adfef5c6f8445fa1f28ccd18e616b (patch)
treeb2a8df3837e91d709c8d1f49ba387dc18dcf25e8
parent4db6969af9fbe458d1d7d68bb2c918bc97e88c4d (diff)
downloadpx4-nuttx-3f0eacb1397adfef5c6f8445fa1f28ccd18e616b.tar.gz
px4-nuttx-3f0eacb1397adfef5c6f8445fa1f28ccd18e616b.tar.bz2
px4-nuttx-3f0eacb1397adfef5c6f8445fa1f28ccd18e616b.zip
Tinkering with USB MSC device on PIC32 -- doesn't work
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4488 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r--nuttx/configs/pic32-starterkit/README.txt56
-rw-r--r--nuttx/configs/pic32-starterkit/nsh/defconfig9
-rw-r--r--nuttx/configs/pic32-starterkit/nsh2/defconfig9
-rw-r--r--nuttx/configs/pic32-starterkit/ostest/defconfig9
-rw-r--r--nuttx/configs/pic32-starterkit/src/Makefile4
-rw-r--r--nuttx/configs/pic32-starterkit/src/up_usbmsc.c95
6 files changed, 173 insertions, 9 deletions
diff --git a/nuttx/configs/pic32-starterkit/README.txt b/nuttx/configs/pic32-starterkit/README.txt
index 29dcafbd8..ffbffde78 100644
--- a/nuttx/configs/pic32-starterkit/README.txt
+++ b/nuttx/configs/pic32-starterkit/README.txt
@@ -1115,3 +1115,59 @@ Where <subdir> is one of the following:
NOTES:
See the notes for the nsh configuration. Most also apply to the nsh2
configuration.
+
+ Using a RAM disk and the USB MSC device with nsh and nsh2
+ ---------------------------------------------------------
+ Here is an experimental change to either examples/nsh or examples/nsh2
+ that will create a RAM disk and attempt to export that RAM disk as a
+ USB mass storage device.
+
+ 1. Changes to nuttx/.config
+
+ a) Enable support for the PIC32 USB device
+
+ -CONFIG_PIC32MX_USBDEV=n
+ +CONFIG_PIC32MX_USBDEV=y
+
+ b) Enable NuttX USB device support
+
+ -CONFIG_USBDEV=n
+ +CONFIG_USBDEV=y
+
+ c) Enable the USB MSC class driver
+
+ -CONFIG_USBMSC=n
+ +CONFIG_USBMSC=y
+
+ d) Use a RAM disk (instead of an SD card) as the USB MSC logical unit:
+
+ -CONFIG_EXAMPLES_USBMSC_DEVPATH1="/dev/mmcsd0"
+ +CONFIG_EXAMPLES_USBMSC_DEVPATH1="/dev/ram0"
+
+ 2. Changes to nuttx/.config.
+
+ a) Enable building of the examples/usbstorage:
+
+ -# CONFIGURED_APPS += examples/usbstorage
+ + CONFIGURED_APPS += examples/usbstorage
+
+ 3. When NSH first comes up, you must manually create the RAM disk
+ before exporting it:
+
+ a) Create a 64Kb RAM disk at /dev/ram0:
+
+ nsh> mkrd -s 512 128
+
+ b) Put a FAT file system on the RAM disk:
+
+ nsh> mkfatfs /dev/ram0
+
+ b) Now the 'msconn' command will connect to the host and
+ export /dev/ram0 as the USB logical unit:
+
+ nsh> msconn
+
+ NOTE: This modification is experimental and does not yet
+ work properly! However, the configuration is worth remembering
+ for future USB MSC testing.
+
diff --git a/nuttx/configs/pic32-starterkit/nsh/defconfig b/nuttx/configs/pic32-starterkit/nsh/defconfig
index 337c96bfd..9dcdf6a37 100644
--- a/nuttx/configs/pic32-starterkit/nsh/defconfig
+++ b/nuttx/configs/pic32-starterkit/nsh/defconfig
@@ -876,7 +876,7 @@ CONFIG_USBDEV_TRACE_NRECORDS=128
CONFIG_PL2303=n
CONFIG_PL2303_EPINTIN=1
CONFIG_PL2303_EPBULKOUT=2
-CONFIG_PL2303_EPBULKIN=5
+CONFIG_PL2303_EPBULKIN=3
CONFIG_PL2303_NWRREQS=4
CONFIG_PL2303_NRDREQS=4
CONFIG_PL2303_VENDORID=0x067b
@@ -983,8 +983,8 @@ CONFIG_CDCACM_CONSOLE=n
#
CONFIG_USBMSC=n
CONFIG_USBMSC_EP0MAXPACKET=64
-CONFIG_USBMSC_EPBULKOUT=2
-CONFIG_USBMSC_EPBULKIN=5
+CONFIG_USBMSC_EPBULKOUT=1
+CONFIG_USBMSC_EPBULKIN=2
CONFIG_USBMSC_NRDREQS=2
CONFIG_USBMSC_NWRREQS=2
CONFIG_USBMSC_BULKINREQLEN=256
@@ -1329,6 +1329,8 @@ CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=n
#
# Settings for examples/usbstorage
#
+# CONFIG_EXAMPLES_USBMSC_BUILTIN
+# Build the USBMSC storage example as an NSH built-in application.
# CONFIG_EXAMPLES_USBMSC_NLUNS
# Defines the number of logical units (LUNs) exported by the USB storage
# driver. Each LUN corresponds to one exported block driver (or partition
@@ -1361,6 +1363,7 @@ CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=n
# CONFIG_EXAMPLES_USBMSC_TRACEINTERRUPTS
# Show interrupt-related events.
#
+CONFIG_EXAMPLES_USBMSC_BUILTIN=y
CONFIG_EXAMPLES_USBMSC_NLUNS=1
CONFIG_EXAMPLES_USBMSC_DEVMINOR1=0
CONFIG_EXAMPLES_USBMSC_DEVPATH1="/dev/mmcsd0"
diff --git a/nuttx/configs/pic32-starterkit/nsh2/defconfig b/nuttx/configs/pic32-starterkit/nsh2/defconfig
index bbd9cd75b..f5bff6ffa 100644
--- a/nuttx/configs/pic32-starterkit/nsh2/defconfig
+++ b/nuttx/configs/pic32-starterkit/nsh2/defconfig
@@ -876,7 +876,7 @@ CONFIG_USBDEV_TRACE_NRECORDS=128
CONFIG_PL2303=n
CONFIG_PL2303_EPINTIN=1
CONFIG_PL2303_EPBULKOUT=2
-CONFIG_PL2303_EPBULKIN=5
+CONFIG_PL2303_EPBULKIN=3
CONFIG_PL2303_NWRREQS=4
CONFIG_PL2303_NRDREQS=4
CONFIG_PL2303_VENDORID=0x067b
@@ -983,8 +983,8 @@ CONFIG_CDCACM_CONSOLE=n
#
CONFIG_USBMSC=n
CONFIG_USBMSC_EP0MAXPACKET=64
-CONFIG_USBMSC_EPBULKOUT=2
-CONFIG_USBMSC_EPBULKIN=5
+CONFIG_USBMSC_EPBULKOUT=1
+CONFIG_USBMSC_EPBULKIN=2
CONFIG_USBMSC_NRDREQS=2
CONFIG_USBMSC_NWRREQS=2
CONFIG_USBMSC_BULKINREQLEN=256
@@ -1329,6 +1329,8 @@ CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=n
#
# Settings for examples/usbstorage
#
+# CONFIG_EXAMPLES_USBMSC_BUILTIN
+# Build the USBMSC storage example as an NSH built-in application.
# CONFIG_EXAMPLES_USBMSC_NLUNS
# Defines the number of logical units (LUNs) exported by the USB storage
# driver. Each LUN corresponds to one exported block driver (or partition
@@ -1361,6 +1363,7 @@ CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=n
# CONFIG_EXAMPLES_USBMSC_TRACEINTERRUPTS
# Show interrupt-related events.
#
+CONFIG_EXAMPLES_USBMSC_BUILTIN=y
CONFIG_EXAMPLES_USBMSC_NLUNS=1
CONFIG_EXAMPLES_USBMSC_DEVMINOR1=0
CONFIG_EXAMPLES_USBMSC_DEVPATH1="/dev/mmcsd0"
diff --git a/nuttx/configs/pic32-starterkit/ostest/defconfig b/nuttx/configs/pic32-starterkit/ostest/defconfig
index fae414269..ec433ec4e 100644
--- a/nuttx/configs/pic32-starterkit/ostest/defconfig
+++ b/nuttx/configs/pic32-starterkit/ostest/defconfig
@@ -878,7 +878,7 @@ CONFIG_USBDEV_TRACE_NRECORDS=128
CONFIG_PL2303=n
CONFIG_PL2303_EPINTIN=1
CONFIG_PL2303_EPBULKOUT=2
-CONFIG_PL2303_EPBULKIN=5
+CONFIG_PL2303_EPBULKIN=3
CONFIG_PL2303_NWRREQS=4
CONFIG_PL2303_NRDREQS=4
CONFIG_PL2303_VENDORID=0x067b
@@ -985,8 +985,8 @@ CONFIG_CDCACM_CONSOLE=n
#
CONFIG_USBMSC=n
CONFIG_USBMSC_EP0MAXPACKET=64
-CONFIG_USBMSC_EPBULKOUT=2
-CONFIG_USBMSC_EPBULKIN=5
+CONFIG_USBMSC_EPBULKOUT=1
+CONFIG_USBMSC_EPBULKIN=2
CONFIG_USBMSC_NRDREQS=2
CONFIG_USBMSC_NWRREQS=2
CONFIG_USBMSC_BULKINREQLEN=256
@@ -1331,6 +1331,8 @@ CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=n
#
# Settings for examples/usbstorage
#
+# CONFIG_EXAMPLES_USBMSC_BUILTIN
+# Build the USBMSC storage example as an NSH built-in application.
# CONFIG_EXAMPLES_USBMSC_NLUNS
# Defines the number of logical units (LUNs) exported by the USB storage
# driver. Each LUN corresponds to one exported block driver (or partition
@@ -1363,6 +1365,7 @@ CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=n
# CONFIG_EXAMPLES_USBMSC_TRACEINTERRUPTS
# Show interrupt-related events.
#
+CONFIG_EXAMPLES_USBMSC_BUILTIN=n
CONFIG_EXAMPLES_USBMSC_NLUNS=1
CONFIG_EXAMPLES_USBMSC_DEVMINOR1=0
CONFIG_EXAMPLES_USBMSC_DEVPATH1="/dev/mmcsd0"
diff --git a/nuttx/configs/pic32-starterkit/src/Makefile b/nuttx/configs/pic32-starterkit/src/Makefile
index a7355239f..4c086b209 100644
--- a/nuttx/configs/pic32-starterkit/src/Makefile
+++ b/nuttx/configs/pic32-starterkit/src/Makefile
@@ -51,6 +51,10 @@ ifeq ($(CONFIG_NSH_ARCHINIT),y)
CSRCS += up_nsh.c
endif
+ifeq ($(CONFIG_USBMSC),y)
+CSRCS += up_usbmsc.c
+endif
+
AOBJS = $(ASRCS:.S=$(OBJEXT))
COBJS = $(CSRCS:.c=$(OBJEXT))
diff --git a/nuttx/configs/pic32-starterkit/src/up_usbmsc.c b/nuttx/configs/pic32-starterkit/src/up_usbmsc.c
new file mode 100644
index 000000000..c645c0fe5
--- /dev/null
+++ b/nuttx/configs/pic32-starterkit/src/up_usbmsc.c
@@ -0,0 +1,95 @@
+/****************************************************************************
+ * configs/pic32-starterkit/src/up_usbmsc.c
+ *
+ * Copyright (C) 2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include "starterkit_internal.h"
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+/* Configuration ************************************************************/
+
+/* Debug ********************************************************************/
+
+#ifdef CONFIG_CPP_HAVE_VARARGS
+# ifdef CONFIG_DEBUG
+# define message(...) lib_lowprintf(__VA_ARGS__)
+# define msgflush()
+# else
+# define message(...) printf(__VA_ARGS__)
+# define msgflush() fflush(stdout)
+# endif
+#else
+# ifdef CONFIG_DEBUG
+# define message lib_lowprintf
+# define msgflush()
+# else
+# define message printf
+# define msgflush() fflush(stdout)
+# endif
+#endif
+
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: usbmsc_archinitialize
+ *
+ * Description:
+ * Perform architecture specific initialization as needed to establish
+ * the mass storage device that will be exported by the USB MSC device.
+ *
+ ****************************************************************************/
+
+int usbmsc_archinitialize(void)
+{
+ /* If examples/usbmsc is built as an NSH command, then SD slot should
+ * already have been initized in nsh_archinitialize() (see up_nsh.c). In
+ * this case, there is nothing further to be done here.
+ */
+
+#ifndef CONFIG_EXAMPLES_USBMSC_BUILTIN
+# warning "Missing Logic"
+#endif /* CONFIG_EXAMPLES_USBMSC_BUILTIN */
+
+ return 0;
+}