summaryrefslogtreecommitdiff
path: root/nuttx/configs
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-11-29 14:30:09 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-11-29 14:31:42 -0600
commitd01744da847c701c5f31c5fd3c5c890d0b930811 (patch)
tree1e38c920a07ffcb1e4f611388638cb0eeaa60df0 /nuttx/configs
parentc89c2fdc075f24867fdd4df7086e4091dcc8911b (diff)
downloadpx4-nuttx-d01744da847c701c5f31c5fd3c5c890d0b930811.tar.gz
px4-nuttx-d01744da847c701c5f31c5fd3c5c890d0b930811.tar.bz2
px4-nuttx-d01744da847c701c5f31c5fd3c5c890d0b930811.zip
LPC31 EHCI: Verified that driver works with keyboard (low-speed, interrupt endpoints)
Diffstat (limited to 'nuttx/configs')
-rw-r--r--nuttx/configs/olimex-lpc-h3131/README.txt211
-rw-r--r--nuttx/configs/olimex-lpc-h3131/nsh/defconfig10
2 files changed, 202 insertions, 19 deletions
diff --git a/nuttx/configs/olimex-lpc-h3131/README.txt b/nuttx/configs/olimex-lpc-h3131/README.txt
index 46f0b1e44..bfd20d9db 100644
--- a/nuttx/configs/olimex-lpc-h3131/README.txt
+++ b/nuttx/configs/olimex-lpc-h3131/README.txt
@@ -658,24 +658,150 @@ Configurations
support in the NSH configuration, please modify the NuttX
configuration as follows:
- Drivers -> USB Host Driver Support
- CONFIG_USBHOST=y : General USB host support
- CONFIG_USBHOST_MSC=y : Mass storage class support
- CONFIG_USBHOST_HIDKBD=? : HID keyboard class support
- CONFIG_USBHOST_INT_DISABLE=y : Not needed
- CONFIG_USBHOST_ISOC_DISABLE=y : Not needed
+ a) Basic USB Host support
+
+ Drivers -> USB Host Driver Support
+ CONFIG_USBHOST=y : General USB host support
+ CONFIG_USBHOST_INT_DISABLE=y : Not needed (unless you use the keyboard)
+ CONFIG_USBHOST_ISOC_DISABLE=y : Not needed (or supported)
+
+ System Type -> Peripherals
+ CONFIG_LPC31_USBOTG=y : Enable the USB OTG peripheral
+
+ System Type -> USB host configuration
+ CONFIG_LPC31_EHCI_BUFSIZE=128
+ CONFIG_LPC31_EHCI_PREALLOCATE=y
+
+ Library Routines
+ CONFIG_SCHED_WORKQUEUE=y : Work queue support is needed
+ CONFIG_SCHED_WORKSTACKSIZE=1536
+
+ b. USB Mass Storage Class. With this class enabled, you can support
+ connection of USB FLASH storage drives. Support for the USB
+ mass storage class is enabled like this:
+
+ Drivers -> USB Host Driver Support
+ CONFIG_USBHOST_MSC=y : Mass storage class support
+
+ The MSC class will work like this. When you first start NSH, you
+ can look at the available devices like this:
+
+ NuttShell (NSH) NuttX-6.31
+ nsh> ls -l /dev
+ /dev:
+ crw-rw-rw- 0 console
+ crw-rw-rw- 0 null
+ crw-rw-rw- 0 ttyS0
+
+ The crw-rw-rw- indicates a readable, write-able character device.
+
+ nsh> ls -l /dev
+ /dev:
+ crw-rw-rw- 0 console
+ crw-rw-rw- 0 null
+ brw-rw-rw- 0 sda
+ crw-rw-rw- 0 ttyS0
+
+ The brw-rw-rw- indicates a readable, write-able block device.
+ This block device can then be mounted like this:
+
+ nsh> mount -t vfat /dev/sda /mnt/flash
+
+ The USB FLASH drive contents are then visible under /mnt/flash and
+ can be operated on with normal file system commands like:
+
+ nsh> mount -t vfat /dev/sda /mnt/flash
+ nsh> cat /mnt/flash/filec.c
+ etc.
+
+ It is recommended that the drive by unmounted BEFORE it is
+ removed. That is not always possible so if the USB FLASH is
+ removed BEFORE the drive is unmounted, the device at /dev/sda will
+ persist in an unusable stack until it is unmounted with the
+ following command (NOTE: If the FLASH drive is re-inserted in
+ this state, it will appear as /dev/sdb):
+
+ nsh> umount /mnt/flash
+
+ c. HID Keyboard support. The following support will enable support
+ for certain keyboard devices (only the so-called "boot" keyboard
+ class is supported):
+
+ Drivers -> USB Host Driver Support
+ CONFIG_USBHOST_HIDKBD=y : HID keyboard class support
- System Type -> Peripherals
- CONFIG_LPC31_USBOTG=y : Enable the USB OTG peripheral
+ Drivers -> USB Host Driver Support
+ CONFIG_USBHOST_INT_DISABLE=n : Interrupt endpoint support needed
- System Type -> USB host configuration
- CONFIG_LPC31_EHCI_BUFSIZE=128
- CONFIG_LPC31_EHCI_PREALLOCATE=y
+ In this case, when the HID keyboard is installed, you see a new
+ character device called /dev/kbda.
- Library Routines
- CONFIG_SCHED_WORKQUEUE=y : Work queue support is needed
+ There is a HID keyboard test example that can be enabled with the
+ following settings. NOTE: In this case, NSH is disabled because
+ the HID keyboard test is a standalone test.
- The USB monitor can also be enabled:
+ This selects the HIDKBD example:
+
+ Application Configuration -> Examples
+ CONFIG_EXAMPLES_HIDKBD=y
+ CONFIG_EXAMPLES_HIDKBD_DEVNAME="/dev/kbda"
+
+ RTOS Features
+ CONFIG_USER_ENTRYPOINT="hidkbd_main"
+
+ These settings disable NSH:
+
+ Application Configuration -> Examples
+ CONFIG_EXAMPLES_NSH=n
+
+ Application Configuration -> NSH Library
+ CONFIG_NSH_LIBRARY=y
+
+ Using the HID Keyboard example: Anything typed on the keyboard
+ should be echoed on the serial console. Here is some sample of
+ a session:
+
+ Initialization
+
+ hidkbd_main: Register class drivers
+ hidkbd_main: Initialize USB host keyboard driver
+ hidkbd_main: Start hidkbd_waiter
+ hidkbd_waiter: Running
+
+ The test example will periodically attempt to open /dev/kbda
+
+ Opening device /dev/kbda
+ Failed: 2
+ Opening device /dev/kbda
+ Failed: 2
+ etc.
+
+ The open will fail each time because there is no keyboard
+ attached. When a USB keyboard is attached, the open of /dev/kbda
+ will succeed and the test will begin echoing data to the serial
+ console:
+
+ hidkbd_waiter: connected
+ Opening device /dev/kbda
+ Device /dev/kbda opened
+
+ For example, this text was entered from the keyboard:
+
+ Now is the time for all good men to come to the aid of their party.
+
+ Then when the device is removed, the test will resume attempting
+ to open the driver until the next time it is connected
+
+ Closing device /dev/kbda: -1
+ Opening device /dev/kbda
+ Failed: 19
+ hidkbd_waiter: disconnected
+
+ Opening device /dev/kbda
+ Failed: 2
+ etc.
+
+ d. The USB monitor can also be enabled:
Drivers -> USB Host Driver Support
CONFIG_USBHOST_TRACE=y
@@ -692,3 +818,60 @@ Configurations
SRAM with debug/tracing enabled by carefully going through the
configuration and reducing stack sizes, disabling unused OS features,
disabling un-necessary NSH commands, etc.
+
+ 5. Making the Configuration Smaller. This configuration runs out of
+ internal SRAM. If you enable many features, then your code image
+ may outgrow the available SRAM; even if the code can be loaded into
+ SRAM, it may still fail at runtime due to insufficient memory.
+
+ Since SDRAM is not currently working (see above) and NAND support
+ has not be integrated, the only really option is to put NSH "on a
+ diet" to reduct the size so that it will fit into memory.
+
+ Here are a few things you can do:
+
+ 1. Try using smaller stack sizes,
+
+ 2. Disable operating system features. Here some that can go:
+
+ CONFIG_DISABLE_ENVIRON=y
+ CONFIG_DISABLE_MQUEUE=y
+ CONFIG_DISABLE_POSIX_TIMERS=y
+ CONFIG_DISABLE_PTHREAD=y
+ CONFIG_MQ_MAXMSGSIZE=0
+ CONFIG_NPTHREAD_KEYS=0
+ CONFIG_NUNGET_CHARS=0
+ CONFIG_PREALLOC_MQ_MSGS=0
+
+ 3. Disable NSH commands. I can life fine without these:
+
+ CONFIG_NSH_DISABLE_ADDROUTE=y
+ CONFIG_NSH_DISABLE_CD=y
+ CONFIG_NSH_DISABLE_CMP=y
+ CONFIG_NSH_DISABLE_CP=y
+ CONFIG_NSH_DISABLE_DD=y
+ CONFIG_NSH_DISABLE_DELROUTE=y
+ CONFIG_NSH_DISABLE_EXEC=y
+ CONFIG_NSH_DISABLE_EXIT=y
+ CONFIG_NSH_DISABLE_GET=y
+ CONFIG_NSH_DISABLE_HEXDUMP=y
+ CONFIG_NSH_DISABLE_IFCONFIG=y
+ CONFIG_NSH_DISABLE_LOSETUP=y
+ CONFIG_NSH_DISABLE_MB=y
+ CONFIG_NSH_DISABLE_MH=y
+ CONFIG_NSH_DISABLE_MKFIFO=y
+ CONFIG_NSH_DISABLE_MKRD=y
+ CONFIG_NSH_DISABLE_NSFMOUNT=y
+ CONFIG_NSH_DISABLE_PING=y
+ CONFIG_NSH_DISABLE_PUT=y
+ CONFIG_NSH_DISABLE_PWD=y
+ CONFIG_NSH_DISABLE_RM=y
+ CONFIG_NSH_DISABLE_RMDIR=y
+ CONFIG_NSH_DISABLE_SET=y
+ CONFIG_NSH_DISABLE_SH=y
+ CONFIG_NSH_DISABLE_SLEEP=y
+ CONFIG_NSH_DISABLE_TEST=y
+ CONFIG_NSH_DISABLE_UNSET=y
+ CONFIG_NSH_DISABLE_USLEEP=y
+ CONFIG_NSH_DISABLE_WGET=y
+ CONFIG_NSH_DISABLE_XD=y
diff --git a/nuttx/configs/olimex-lpc-h3131/nsh/defconfig b/nuttx/configs/olimex-lpc-h3131/nsh/defconfig
index 03f97e7fc..3fde4e9e1 100644
--- a/nuttx/configs/olimex-lpc-h3131/nsh/defconfig
+++ b/nuttx/configs/olimex-lpc-h3131/nsh/defconfig
@@ -264,10 +264,10 @@ CONFIG_PREALLOC_TIMERS=4
#
# Stack and heap information
#
-CONFIG_IDLETHREAD_STACKSIZE=1024
-CONFIG_USERMAIN_STACKSIZE=2048
+CONFIG_IDLETHREAD_STACKSIZE=768
+CONFIG_USERMAIN_STACKSIZE=1536
CONFIG_PTHREAD_STACK_MIN=256
-CONFIG_PTHREAD_STACK_DEFAULT=2048
+CONFIG_PTHREAD_STACK_DEFAULT=1536
#
# Device Drivers
@@ -406,7 +406,7 @@ CONFIG_MM_REGIONS=1
#
# Standard C Library Options
#
-CONFIG_STDIO_BUFFER_SIZE=64
+CONFIG_STDIO_BUFFER_SIZE=48
CONFIG_STDIO_LINEBUFFER=y
CONFIG_NUNGET_CHARS=2
CONFIG_LIB_HOMEDIR="/"
@@ -420,7 +420,7 @@ CONFIG_LIB_RAND_ORDER=1
CONFIG_EOL_IS_EITHER_CRLF=y
# CONFIG_LIBC_EXECFUNCS is not set
CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=1024
-CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=2048
+CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=1536
# CONFIG_LIBC_STRERROR is not set
# CONFIG_LIBC_PERROR_STDOUT is not set
CONFIG_ARCH_LOWPUTC=y