Move apps/examples/cdcacm to apps/system/cdcacm

This commit is contained in:
Gregory Nutt 2013-09-25 17:23:03 -06:00
parent edde864e45
commit 4bfd7f7f5e
17 changed files with 179 additions and 97 deletions

View File

@ -196,7 +196,7 @@
backspace or a DEL character as a backspace (i.e., deleting the character
to the left of the cursor). This makes NSH less dependent on particular
keyboard mappings of the Backspace key. Submitted by Mike Smith.
* apps/examples/cdcacm: An example that illustrates how the CDC/ACM driver
* apps/system/cdcacm: An example that illustrates how the CDC/ACM driver
may to connected and disconnected through software control.
* apps/examples/nsh/nsh_main.c: If available, call up_cxxinitialize() to
initialize all statically defined C++ classes.
@ -664,3 +664,4 @@
* apps/system/stackmonitor: Add a daemon that can be used to
monitor stack usage by all threads (2013-9-24).
* system/usbmsc: Move examples/usbmsc to system/usbmsc (2013-9-25).
* system/cdcacm: Move examples/cdcacm to system/cdcacm (2013-9-25).

View File

@ -7,7 +7,6 @@ source "$APPSDIR/examples/adc/Kconfig"
source "$APPSDIR/examples/buttons/Kconfig"
source "$APPSDIR/examples/can/Kconfig"
source "$APPSDIR/examples/cc3000/Kconfig"
source "$APPSDIR/examples/cdcacm/Kconfig"
source "$APPSDIR/examples/composite/Kconfig"
source "$APPSDIR/examples/cxxtest/Kconfig"
source "$APPSDIR/examples/dhcpd/Kconfig"

View File

@ -50,10 +50,6 @@ ifeq ($(CONFIG_EXAMPLES_CC3000BASIC),y)
CONFIGURED_APPS += examples/cc3000
endif
ifeq ($(CONFIG_EXAMPLES_CDCACM),y)
CONFIGURED_APPS += examples/cdcacm
endif
ifeq ($(CONFIG_EXAMPLES_COMPOSITE),y)
CONFIGURED_APPS += examples/composite
endif

View File

@ -37,7 +37,7 @@
# Sub-directories
SUBDIRS = adc buttons can cc3000 cdcacm composite cxxtest dhcpd discover elf
SUBDIRS = adc buttons can cc3000 composite cxxtest dhcpd discover elf
SUBDIRS += flash_test ftpc ftpd hello helloxx hidkbd igmp json keypadtest
SUBDIRS += lcdrw mm modbus mount mtdpart nettest nrf24l01_term nsh null
SUBDIRS += nx nxconsole nxffs nxflat nxhello nximage nxlines nxtext ostest
@ -53,7 +53,7 @@ SUBDIRS += xmlrpc
CNTXTDIRS = pwm
ifeq ($(CONFIG_NSH_BUILTIN_APPS),y)
CNTXTDIRS += adc can cc3000 cdcacm composite cxxtest dhcpd discover flash_test
CNTXTDIRS += adc can cc3000 composite cxxtest dhcpd discover flash_test
CNTXTDIRS += ftpd hello helloxx json keypadtestmodbus lcdrw mtdpart nettest
CNTXTDIRS += nx nxhello nximage nxlines nxtext nrf24l01_term ostest relays
CNTXTDIRS += qencoder slcd smart_test tcpecho telnetd tiff touchscreen

View File

@ -131,50 +131,6 @@ examples/cc3000
This is a test for the TI CC3000 wireless networking module.
examples/cdcacm
^^^^^^^^^^^^^^^
This very simple example shows how a USB CDC/ACM serial can be dynamically
connected and disconnected from a host. This example can only be used as
an NSH built-int command. If built-in, then two new NSH commands will be
supported:
1. sercon - Connect the CDC/ACM serial device
2. serdis - Disconnect the CDC/ACM serial device
Configuration prequisites (not complete):
CONFIG_USBDEV=y : USB device support must be enabled
CONFIG_CDCACM=y : The CDC/ACM driver must be built
CONFIG_NSH_BUILTIN_APPS : NSH built-in application support must be enabled
Configuration options specific to this example:
CONFIG_EXAMPLES_CDCACM_DEVMINOR : The minor number of the CDC/ACM device.
: i.e., the 'x' in /dev/ttyACMx
If CONFIG_USBDEV_TRACE is enabled (or CONFIG_DEBUG and CONFIG_DEBUG_USB, or
CONFIG_USBDEV_TRACE), then the example code will also initialize the USB trace
output. The amount of trace output can be controlled using:
CONFIG_EXAMPLES_CDCACM_TRACEINIT
Show initialization events
CONFIG_EXAMPLES_CDCACM_TRACECLASS
Show class driver events
CONFIG_EXAMPLES_CDCACM_TRACETRANSFERS
Show data transfer events
CONFIG_EXAMPLES_CDCACM_TRACECONTROLLER
Show controller events
CONFIG_EXAMPLES_CDCACM_TRACEINTERRUPTS
Show interrupt-related events.
Note: This example is only enables or disable USB CDC/ACM via the NSH
'sercon' and 'serdis' command. It will enable and disable tracing per
the settings before enabling and after disabling the CDC/ACM device. It
will not, however, monitor buffered trace data in the interim. If
CONFIG_USBDEV_TRACE is defined (and the debug options are not), other
application logic will need to monitor the buffered trace data.
examples/composite
^^^^^^^^^^^^^^^^^^

View File

@ -3,6 +3,10 @@
# see misc/tools/kconfig-language.txt.
#
menu "USB CDC/ACM Class Commands"
source "$APPSDIR/system/cdcacm/Kconfig"
endmenu
menu "Custom Free Memory Command"
source "$APPSDIR/system/free/Kconfig"
endmenu
@ -51,7 +55,7 @@ menu "Stack Monitor"
source "$APPSDIR/system/stackmonitor/Kconfig"
endmenu
menu "USB Mass Storage Class"
menu "USB Mass Storage Class Commands"
source "$APPSDIR/system/usbmsc/Kconfig"
endmenu

View File

@ -34,6 +34,10 @@
#
############################################################################
ifeq ($(CONFIG_SYSTEM_CDCACM),y)
CONFIGURED_APPS += system/cdcacm
endif
ifeq ($(CONFIG_SYSTEM_FREE),y)
CONFIGURED_APPS += system/free
endif

View File

@ -37,8 +37,8 @@
# Sub-directories containing system task
SUBDIRS = flash_eraseall free i2c install poweroff ramtest ramtron readline
SUBDIRS += sdcard stackmonitor sysinfo usbmonitor usbmsc zmodem
SUBDIRS = cdcacm flash_eraseall free i2c install poweroff ramtest ramtron
SUBDIRS += readline sdcard stackmonitor sysinfo usbmonitor usbmsc zmodem
# Create the list of installed runtime modules (INSTALLED_DIRS)

View File

@ -3,16 +3,19 @@
# see misc/tools/kconfig-language.txt.
#
config EXAMPLES_CDCACM
bool "CDC/ACM example"
config SYSTEM_CDCACM
bool "CDC/ACM class controls"
default n
depends on CDCACM
depends on CDCACM && !KERNEL_BUILD
---help---
Enable the USB CDC/ACM class driver example
Enable the USB CDC/ACM class controls. These controls include:
if EXAMPLES_CDCACM
sercon: Connect the mass storage device to the host
serdis: Disconnect the mass storage device to the host
config EXAMPLES_CDCACM_DEVMINOR
if SYSTEM_CDCACM
config SYSTEM_CDCACM_DEVMINOR
int "CDC/ACM Minor Device Number"
default 0
---help---
@ -20,53 +23,53 @@ config EXAMPLES_CDCACM_DEVMINOR
For example, N in /dev/ttyACMN. Used for registering the serial
driver. Default is zero.
config EXAMPLES_CDCACM_TRACEINIT
config SYSTEM_CDCACM_TRACEINIT
bool "USB Trace Initialization"
default n
depends on USBDEV_TRACE || DEBUG_USB
---help---
If USBDEV_TRACE is enabled (or DEBUG and DEBUG_USB),
then the example code will also manage the USB trace output. The
then the add-on code will also manage the USB trace output. The
amount of trace output can be controlled this configuration value:
This setting will show USB initialization events
config EXAMPLES_CDCACM_TRACECLASS
config SYSTEM_CDCACM_TRACECLASS
bool "USB Trace Class"
default n
depends on USBDEV_TRACE || DEBUG_USB
---help---
If USBDEV_TRACE is enabled (or DEBUG and DEBUG_USB),
then the example code will also manage the USB trace output. The
then the add-on code will also manage the USB trace output. The
amount of trace output can be controlled this configuration value:
This setting will show USB class driver events
config EXAMPLES_CDCACM_TRACETRANSFERS
config SYSTEM_CDCACM_TRACETRANSFERS
bool "USB Trace Transfers"
default n
depends on USBDEV_TRACE || DEBUG_USB
---help---
If USBDEV_TRACE is enabled (or DEBUG and DEBUG_USB),
then the example code will also manage the USB trace output. The
then the add-on code will also manage the USB trace output. The
amount of trace output can be controlled this configuration value:
This setting will show USB data transfer events
config EXAMPLES_CDCACM_TRACECONTROLLER
config SYSTEM_CDCACM_TRACECONTROLLER
bool "USB Trace Device Controller Events"
default n
depends on USBDEV_TRACE || DEBUG_USB
---help---
If USBDEV_TRACE is enabled (or DEBUG and DEBUG_USB),
then the example code will also manage the USB trace output. The
then the add-on code will also manage the USB trace output. The
amount of trace output can be controlled this configuration value:
This setting will show USB device controller events
config EXAMPLES_CDCACM_TRACEINTERRUPTS
config SYSTEM_CDCACM_TRACEINTERRUPTS
bool "USB Trace Device Controller Interrupt Events"
default n
depends on USBDEV_TRACE || DEBUG_USB
---help---
If USBDEV_TRACE is enabled (or DEBUG and DEBUG_USB),
then the example code will also manage the USB trace output. The
then the add-on code will also manage the USB trace output. The
amount of trace output can be controlled this configuration value:
This setting will show USB device controller interrupt-related events.

View File

@ -1,5 +1,5 @@
############################################################################
# apps/examples/cdcacm/Makefile
# apps/system/cdcacm/Makefile
#
# Copyright (C) 2012 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
@ -37,7 +37,7 @@
-include $(TOPDIR)/Make.defs
include $(APPDIR)/Make.defs
# USB CDC/ACM serial mass storage example
# USB CDC/ACM serial mass storage add-on
ASRCS =
CSRCS = cdcacm_main.c

43
system/cdcacm/README.txt Executable file
View File

@ -0,0 +1,43 @@
system/cdcacm
^^^^^^^^^^^^^^^
This very simple add-on allows the USB CDC/ACM serial device can be dynamically
connected and disconnected from a host. This add-on can only be used as
an NSH built-in command. If built-in, then two new NSH commands will be
supported:
1. sercon - Connect the CDC/ACM serial device
2. serdis - Disconnect the CDC/ACM serial device
Configuration prequisites (not complete):
CONFIG_USBDEV=y : USB device support must be enabled
CONFIG_CDCACM=y : The CDC/ACM driver must be built
CONFIG_NSH_BUILTIN_APPS : NSH built-in application support must be enabled
Configuration options specific to this add-on:
CONFIG_SYSTEM_CDCACM_DEVMINOR : The minor number of the CDC/ACM device.
: i.e., the 'x' in /dev/ttyACMx
If CONFIG_USBDEV_TRACE is enabled (or CONFIG_DEBUG and CONFIG_DEBUG_USB, or
CONFIG_USBDEV_TRACE), then the add-on code will also initialize the USB trace
output. The amount of trace output can be controlled using:
CONFIG_SYSTEM_CDCACM_TRACEINIT
Show initialization events
CONFIG_SYSTEM_CDCACM_TRACECLASS
Show class driver events
CONFIG_SYSTEM_CDCACM_TRACETRANSFERS
Show data transfer events
CONFIG_SYSTEM_CDCACM_TRACECONTROLLER
Show controller events
CONFIG_SYSTEM_CDCACM_TRACEINTERRUPTS
Show interrupt-related events.
Note: This add-on is only enables or disable USB CDC/ACM via the NSH
'sercon' and 'serdis' command. It will enable and disable tracing per
the settings before enabling and after disabling the CDC/ACM device. It
will not, however, monitor buffered trace data in the interim. If
CONFIG_USBDEV_TRACE is defined (and the debug options are not), other
application logic will need to monitor the buffered trace data.

View File

@ -1,5 +1,5 @@
/****************************************************************************
* examples/cdcacm/cdcacm.h
* system/cdcacm/cdcacm.h
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@ -33,8 +33,8 @@
*
****************************************************************************/
#ifndef __EXAMPLES_CDCACM_CDCACM_H
#define __EXAMPLES_CDCACM_CDCACM_H
#ifndef __SYSTEM_CDCACM_CDCACM_H
#define __SYSTEM_CDCACM_CDCACM_H
/****************************************************************************
* Included Files
@ -61,18 +61,18 @@
#endif
#ifndef CONFIG_NSH_BUILTIN_APPS
# error "This example can only be built as an NSH built-in application"
# error "This add-on can only be built as an NSH built-in application"
#endif
/* Default configuration values */
#ifndef CONFIG_EXAMPLES_CDCACM_DEVMINOR
# define CONFIG_EXAMPLES_CDCACM_DEVMINOR 0
#ifndef CONFIG_SYSTEM_CDCACM_DEVMINOR
# define CONFIG_SYSTEM_CDCACM_DEVMINOR 0
#endif
/* Trace Configuration ******************************************************/
#ifdef CONFIG_EXAMPLES_CDCACM_TRACEINIT
#ifdef CONFIG_SYSTEM_CDCACM_TRACEINIT
# define TRACE_INIT_BITS (TRACE_INIT_BIT)
#else
# define TRACE_INIT_BITS (0)
@ -80,26 +80,26 @@
#define TRACE_ERROR_BITS (TRACE_DEVERROR_BIT|TRACE_CLSERROR_BIT)
#ifdef CONFIG_EXAMPLES_CDCACM_TRACECLASS
#ifdef CONFIG_SYSTEM_CDCACM_TRACECLASS
# define TRACE_CLASS_BITS (TRACE_CLASS_BIT|TRACE_CLASSAPI_BIT|TRACE_CLASSSTATE_BIT)
#else
# define TRACE_CLASS_BITS (0)
#endif
#ifdef CONFIG_EXAMPLES_CDCACM_TRACETRANSFERS
#ifdef CONFIG_SYSTEM_CDCACM_TRACETRANSFERS
# define TRACE_TRANSFER_BITS (TRACE_OUTREQQUEUED_BIT|TRACE_INREQQUEUED_BIT|TRACE_READ_BIT|\
TRACE_WRITE_BIT|TRACE_COMPLETE_BIT)
#else
# define TRACE_TRANSFER_BITS (0)
#endif
#ifdef CONFIG_EXAMPLES_CDCACM_TRACECONTROLLER
#ifdef CONFIG_SYSTEM_CDCACM_TRACECONTROLLER
# define TRACE_CONTROLLER_BITS (TRACE_EP_BIT|TRACE_DEV_BIT)
#else
# define TRACE_CONTROLLER_BITS (0)
#endif
#ifdef CONFIG_EXAMPLES_CDCACM_TRACEINTERRUPTS
#ifdef CONFIG_SYSTEM_CDCACM_TRACEINTERRUPTS
# define TRACE_INTERRUPT_BITS (TRACE_INTENTRY_BIT|TRACE_INTDECODE_BIT|TRACE_INTEXIT_BIT)
#else
# define TRACE_INTERRUPT_BITS (0)
@ -132,14 +132,14 @@
* Public Types
****************************************************************************/
/* All global variables used by this example are packed into a structure in
/* All global variables used by this add-on are packed into a structure in
* order to avoid name collisions.
*/
struct cdcacm_state_s
{
/* This is the handle that references to this particular USB storage driver
* instance. It is only needed if the USB mass storage device example is
/* This is the handle that references to this particular USB CDC/ACM driver
* instance. It is only needed if the USB CDC/ACM device add-on is
* built using CONFIG_NSH_BUILTIN_APPS. In this case, the value
* of the driver handle must be remembered between the 'sercon' and 'msdis'
* commands.
@ -152,7 +152,7 @@ struct cdcacm_state_s
* Public Data
****************************************************************************/
/* All global variables used by this example are packed into a structure in
/* All global variables used by this add-on are packed into a structure in
* order to avoid name collisions.
*/
@ -162,4 +162,4 @@ extern struct cdcacm_state_s g_cdcacm;
* Public Functions
****************************************************************************/
#endif /* __EXAMPLES_CDCACM_CDCACM_H */
#endif /* __SYSTEM_CDCACM_CDCACM_H */

View File

@ -1,5 +1,5 @@
/****************************************************************************
* examples/cdcacm/cdcacm_main.c
* system/cdcacm/cdcacm_main.c
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@ -57,7 +57,7 @@
* Private Data
****************************************************************************/
/* All global variables used by this example are packed into a structure in
/* All global variables used by this add-on are packed into a structure in
* order to avoid name collisions.
*/
@ -102,7 +102,7 @@ int sercon_main(int argc, char *argv[])
/* Initialize the USB CDC/ACM serial driver */
message("sercon: Registering CDC/ACM serial driver\n");
ret = cdcacm_initialize(CONFIG_EXAMPLES_CDCACM_DEVMINOR, &g_cdcacm.handle);
ret = cdcacm_initialize(CONFIG_SYSTEM_CDCACM_DEVMINOR, &g_cdcacm.handle);
if (ret < 0)
{
message("sercon: ERROR: Failed to create the CDC/ACM serial device: %d\n", -ret);

View File

@ -6,7 +6,7 @@
config SYSTEM_USBMSC
bool "USB mass storage class controls"
default n
depends on USBMSC
depends on USBMSC && !KERNEL_BUILD
---help---
Enable the USB mass storage class controls. These controls include:

76
system/usbmsc/README.txt Executable file
View File

@ -0,0 +1,76 @@
system/usbmsc
^^^^^^^^^^^^^^^
This add-on registers a block device driver, then exports the block
the device using the USB storage class driver. In order to use this
add-on, your board-specific logic must provide the function:
void usbmsc_archinitialize(void);
This function will be called by the system/usbmsc in order to
do the actual registration of the block device drivers. For examples
of the implementation of usbmsc_archinitialize() see
configs/mcu123-lpc124x/src/up_usbmsc.c or
configs/stm3210e-eval/src/usbmsc.c
Configuration options:
CONFIG_NSH_BUILTIN_APPS
This add-on can be built as two NSH "built-in" commands if this option
is selected: 'msconn' will connect the USB mass storage device; 'msdis'
will disconnect the USB storage device.
CONFIG_SYSTEM_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
of a block driver). May be 1, 2, or 3. Default is 1.
CONFIG_SYSTEM_USBMSC_DEVMINOR1
The minor device number of the block driver for the first LUN. For
example, N in /dev/mmcsdN. Used for registering the block driver. Default
is zero.
CONFIG_SYSTEM_USBMSC_DEVPATH1
The full path to the registered block driver. Default is "/dev/mmcsd0"
CONFIG_SYSTEM_USBMSC_DEVMINOR2 and CONFIG_SYSTEM_USBMSC_DEVPATH2
Similar parameters that would have to be provided if CONFIG_SYSTEM_USBMSC_NLUNS
is 2 or 3. No defaults.
CONFIG_SYSTEM_USBMSC_DEVMINOR3 and CONFIG_SYSTEM_USBMSC_DEVPATH3
Similar parameters that would have to be provided if CONFIG_SYSTEM_USBMSC_NLUNS
is 3. No defaults.
CONFIG_SYSTEM_USBMSC_DEBUGMM
Enables some debug tests to check for memory usage and memory leaks.
If CONFIG_USBDEV_TRACE is enabled (or CONFIG_DEBUG and CONFIG_DEBUG_USB), then
the code will also manage the USB trace output. The amount of trace output
can be controlled using:
CONFIG_SYSTEM_USBMSC_TRACEINIT
Show initialization events
CONFIG_SYSTEM_USBMSC_TRACECLASS
Show class driver events
CONFIG_SYSTEM_USBMSC_TRACETRANSFERS
Show data transfer events
CONFIG_SYSTEM_USBMSC_TRACECONTROLLER
Show controller events
CONFIG_SYSTEM_USBMSC_TRACEINTERRUPTS
Show interrupt-related events.
Error results are always shown in the trace output
NOTE 1: When built as an NSH add-on command (CONFIG_NSH_BUILTIN_APPS=y),
Caution should be used to assure that the SD drive (or other storage device) is
not in use when the USB storage device is configured. Specifically, the SD
driver should be unmounted like:
nsh> mount -t vfat /dev/mmcsd0 /mnt/sdcard # Card is mounted in NSH
...
nsh> umount /mnd/sdcard # Unmount before connecting USB!!!
nsh> msconn # Connect the USB storage device
...
nsh> msdis # Disconnect USB storate device
nsh> mount -t vfat /dev/mmcsd0 /mnt/sdcard # Restore the mount
Failure to do this could result in corruption of the SD card format.
NOTE 2: This add-on used internal USB device driver interfaces. As such,
it relies on internal OS interfaces that are not normally available to a
user-space program. As a result, this add-on cannot be used if a
NuttX is built as a protected, supervisor kernel (CONFIG_NUTTX_KERNEL).

View File

@ -1,7 +1,7 @@
/****************************************************************************
* system/usbmsc/usbmsc.h
*
* Copyright (C) 2008-2009, 2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2008-2009, 2012-2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -33,8 +33,8 @@
*
****************************************************************************/
#ifndef __EXAMPLES_USBSTORAGE_USBMSC_H
#define __EXAMPLES_USBSTORAGE_USBMSC_H
#ifndef __SYSTEM_USBMSC_USBMSC_H
#define __SYSTEM_USBMSC_USBMSC_H
/****************************************************************************
* Included Files
@ -177,4 +177,4 @@ extern struct usbmsc_state_s g_usbmsc;
extern int usbmsc_archinitialize(void);
#endif /* __EXAMPLES_USBSTORAGE_USBMSC_H */
#endif /* __SYSTEM_USBMSC_USBMSC_H */