4d79a5cbaf
Co-authored-by: Daniel Agar <daniel@agar.ca> Signed-off-by: chao an <anchao@xiaomi.com> |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
Kconfig | ||
Make.defs | ||
Makefile | ||
README.md | ||
usbmsc_main.c | ||
usbmsc.h |
System / usbmsc
USB storage driver
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 board_usbmsc_initialize(void);
This function will be called by the system/usbmsc
indirectly via the boardctl
BOARDIOC_USBDEV_CONTROL
command in order to do the actual registration of the
block device drivers. For examples of the implementation of
board_usbmsc_initialize()
see
boards/arm/lpc214x/mcu123-lpc214x/src/up_usbmsc.c
or
boards/arm/stm32/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_BOARDCTL
– Enables theboardctl()
interfaces. -
CONFIG_BOARDCTL_USBDEVCTRL
– Enables theBOARDIOC_USBDEV_CONTROL
boardctl()
command. -
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 be1
,2
, or3
. Default is1
. -
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
andCONFIG_SYSTEM_USBMSC_DEVPATH2
Similar parameters that would have to be provided ifCONFIG_SYSTEM_USBMSC_NLUNS
is2
or3
. No defaults. -
CONFIG_SYSTEM_USBMSC_DEVMINOR3
andCONFIG_SYSTEM_USBMSC_DEVPATH3
Similar parameters that would have to be provided ifCONFIG_SYSTEM_USBMSC_NLUNS
is3
. 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_FEATURES
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_BUILD_PROTECTED
or
CONFIG_BUILD_KERNEL
).