diff options
Diffstat (limited to 'nuttx')
-rw-r--r-- | nuttx/ChangeLog | 10 | ||||
-rw-r--r-- | nuttx/Documentation/NuttShell.html | 32 | ||||
-rw-r--r-- | nuttx/configs/stm3210e-eval/src/stm3210e-internal.h | 26 | ||||
-rw-r--r-- | nuttx/configs/stm3210e-eval/src/up_boot.c | 8 | ||||
-rw-r--r-- | nuttx/configs/stm3220g-eval/src/stm3220g-internal.h | 12 | ||||
-rw-r--r-- | nuttx/configs/stm3220g-eval/src/up_boot.c | 12 | ||||
-rw-r--r-- | nuttx/configs/stm3240g-eval/src/stm3240g-internal.h | 14 | ||||
-rw-r--r-- | nuttx/configs/stm3240g-eval/src/up_boot.c | 12 | ||||
-rwxr-xr-x | nuttx/configs/stm32f4discovery/README.txt | 36 | ||||
-rw-r--r-- | nuttx/configs/stm32f4discovery/nsh/defconfig | 23 | ||||
-rw-r--r-- | nuttx/configs/stm32f4discovery/src/stm32f4discovery-internal.h | 10 | ||||
-rw-r--r-- | nuttx/configs/stm32f4discovery/src/up_boot.c | 192 | ||||
-rw-r--r-- | nuttx/drivers/usbdev/cdcacm.c | 13 | ||||
-rw-r--r-- | nuttx/drivers/usbdev/pl2303.c | 13 |
14 files changed, 291 insertions, 122 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog index 8a2877ba4..129f60488 100644 --- a/nuttx/ChangeLog +++ b/nuttx/ChangeLog @@ -2809,5 +2809,11 @@ STM32F4Discovery for than an external, SSD1289-based LCD. * configs/stm32f4discovery/nxlines: Add an STM32F4Discovery configuration to thest the SSD1289-based LCD. - - + * configs/stm3240g-eval/src: Add USB GPIO initialization logic needed + in board-specific boot logic. + * configs/stm32f4discovery/src: Add USB GPIO initialization logic needed + in board-specific boot logic. + * drivers/usbdev/pl2303.c and cdcacm.c: Fix the request size used for sending + packets. It was not using the maximum request size, but instead the previous + request size. As a result, packets get smaller, and smaller, and ... This + is an important USB serial fix. diff --git a/nuttx/Documentation/NuttShell.html b/nuttx/Documentation/NuttShell.html index 409d191a7..c601271c4 100644 --- a/nuttx/Documentation/NuttShell.html +++ b/nuttx/Documentation/NuttShell.html @@ -8,7 +8,7 @@ <tr align="center" bgcolor="#e4e4e4"> <td> <h1><big><font color="#3c34ec"><i>NuttShell (NSH)</i></font></big></h1> - <p>Last Updated: March 6, 2012</p> + <p>Last Updated: May 25, 2012</p> </td> </tr> </table> @@ -2196,6 +2196,36 @@ nsh> <code>CONFIG_CDCACM</code> and <code>CONFIG_CDCACM_CONSOLE</code>. Sets up the CDC/ACM serial device as a console device at <code>/dev/console</code>. </li> + <li> + <code>CONFIG_NSH_USBCONSOLE</code>. + If defined, then the an arbitrary USB device may be used to as the NSH console. + In this case, <code>CONFIG_NSH_CONDEV</code> must be defined to indicate which USB device to use as the console. + The advantage of using a device other that /dev/console is that normal debug output can not use /dev/console while NSH uses <code>CONFIG_NSH_USBCONDEV</code>. + <p> + <code>CONFIG_NSH_USBCONDEV</code>. + If <code>CONFIG_NSH_USBCONSOLE</code> is set to 'y', then <code>CONFIG_NSH_USBCONDEV</code> must also be set to select the USB device used to support the NSH console. + This should be set to the quoted name of a readable/write-able USB driver such as: <code>CONFIG_NSH_USBCONDEV="/dev/ttyACM0"</code>. + </p> + </li> + </ul> + <p> + If there are more than one USB slots, then a USB device minor number may also need to be provided: + </p> + <ul> + <li> + <code>CONFIG_NSH_UBSDEV_MINOR</code>. + The minor device number of the USB device. Default: 0 + </li> + </ul> + <p> + If USB tracing is enabled, then NSH will initialize USB tracing as requested by the following: + </p> + <ul> + <li> + <code>CONFIG_NSH_UBSDEV_TRACEINIT</code>. + Bit set with each bit enabling a trace option (see <code>include/nuttx/usb/usbdev_trace.h</code>). + Default: Only USB errors are traced. + </li> </ul> </td> </tr> diff --git a/nuttx/configs/stm3210e-eval/src/stm3210e-internal.h b/nuttx/configs/stm3210e-eval/src/stm3210e-internal.h index 5cb5e91af..8b9deb8ee 100644 --- a/nuttx/configs/stm3210e-eval/src/stm3210e-internal.h +++ b/nuttx/configs/stm3210e-eval/src/stm3210e-internal.h @@ -167,7 +167,7 @@ extern const uint16_t g_commonconfig[NCOMMON_CONFIG]; * ************************************************************************************/ -extern void weak_function stm32_spiinitialize(void); +void weak_function stm32_spiinitialize(void); /************************************************************************************ * Name: stm32_usbinitialize @@ -177,7 +177,7 @@ extern void weak_function stm32_spiinitialize(void); * ************************************************************************************/ -extern void weak_function stm32_usbinitialize(void); +void weak_function stm32_usbinitialize(void); /************************************************************************************ * Name: stm32_extcontextsave @@ -188,7 +188,7 @@ extern void weak_function stm32_usbinitialize(void); ************************************************************************************/ #ifdef CONFIG_STM32_FSMC -extern void stm32_extcontextsave(struct extmem_save_s *save); +void stm32_extcontextsave(struct extmem_save_s *save); /************************************************************************************ * Name: stm32_extcontextrestore @@ -198,7 +198,7 @@ extern void stm32_extcontextsave(struct extmem_save_s *save); * ************************************************************************************/ -extern void stm32_extcontextrestore(struct extmem_save_s *restore); +void stm32_extcontextrestore(struct extmem_save_s *restore); /************************************************************************************ * Name: stm32_extmemgpios @@ -208,7 +208,7 @@ extern void stm32_extcontextrestore(struct extmem_save_s *restore); * ************************************************************************************/ -extern void stm32_extmemgpios(const uint16_t *gpios, int ngpios); +void stm32_extmemgpios(const uint16_t *gpios, int ngpios); /************************************************************************************ * Name: stm32_enablefsmc @@ -218,7 +218,7 @@ extern void stm32_extmemgpios(const uint16_t *gpios, int ngpios); * ************************************************************************************/ -extern void stm32_enablefsmc(void); +void stm32_enablefsmc(void); /************************************************************************************ * Name: stm32_disablefsmc @@ -228,7 +228,7 @@ extern void stm32_enablefsmc(void); * ************************************************************************************/ -extern void stm32_disablefsmc(void); +void stm32_disablefsmc(void); /************************************************************************************ * Name: stm32_selectnor @@ -238,7 +238,7 @@ extern void stm32_disablefsmc(void); * ************************************************************************************/ -extern void stm32_selectnor(void); +void stm32_selectnor(void); /************************************************************************************ * Name: stm32_deselectnor @@ -248,7 +248,7 @@ extern void stm32_selectnor(void); * ************************************************************************************/ -extern void stm32_deselectnor(void); +void stm32_deselectnor(void); /************************************************************************************ * Name: stm32_selectsram @@ -258,7 +258,7 @@ extern void stm32_deselectnor(void); * ************************************************************************************/ -extern void stm32_selectsram(void); +void stm32_selectsram(void); /************************************************************************************ * Name: stm32_deselectsram @@ -268,7 +268,7 @@ extern void stm32_selectsram(void); * ************************************************************************************/ -extern void stm32_deselectsram(void); +void stm32_deselectsram(void); /************************************************************************************ * Name: stm32_selectlcd @@ -278,7 +278,7 @@ extern void stm32_deselectsram(void); * ************************************************************************************/ -extern void stm32_selectlcd(void); +void stm32_selectlcd(void); /************************************************************************************ * Name: stm32_deselectlcd @@ -288,7 +288,7 @@ extern void stm32_selectlcd(void); * ************************************************************************************/ -extern void stm32_deselectlcd(void); +void stm32_deselectlcd(void); #endif /* CONFIG_STM32_FSMC */ diff --git a/nuttx/configs/stm3210e-eval/src/up_boot.c b/nuttx/configs/stm3210e-eval/src/up_boot.c index 5f111f9bb..576094c5e 100644 --- a/nuttx/configs/stm3210e-eval/src/up_boot.c +++ b/nuttx/configs/stm3210e-eval/src/up_boot.c @@ -88,10 +88,10 @@ void stm32_boardinitialize(void) } #endif - /* Initialize USB is 1) USBDEV is selected, 2) the USB controller is not - * disabled, and 3) the weak function stm32_usbinitialize() has been brought - * into the build. - */ + /* Initialize USB is 1) USBDEV is selected, 2) the USB controller is not + * disabled, and 3) the weak function stm32_usbinitialize() has been brought + * into the build. + */ #if defined(CONFIG_USBDEV) && defined(CONFIG_STM32_USB) if (stm32_usbinitialize) diff --git a/nuttx/configs/stm3220g-eval/src/stm3220g-internal.h b/nuttx/configs/stm3220g-eval/src/stm3220g-internal.h index a317d92aa..187040ed5 100644 --- a/nuttx/configs/stm3220g-eval/src/stm3220g-internal.h +++ b/nuttx/configs/stm3220g-eval/src/stm3220g-internal.h @@ -164,7 +164,17 @@ * ****************************************************************************************************/ -extern void weak_function stm32_spiinitialize(void); +void weak_function stm32_spiinitialize(void); + +/************************************************************************************ + * Name: stm32_usbinitialize + * + * Description: + * Called to setup USB-related GPIO pins for the STM3210E-EVAL board. + * + ************************************************************************************/ + +void weak_function stm32_usbinitialize(void); #endif /* __ASSEMBLY__ */ #endif /* __CONFIGS_STM3220G_EVAL_SRC_STM3220G_INTERNAL_H */ diff --git a/nuttx/configs/stm3220g-eval/src/up_boot.c b/nuttx/configs/stm3220g-eval/src/up_boot.c index 20303ceaf..290f41233 100644 --- a/nuttx/configs/stm3220g-eval/src/up_boot.c +++ b/nuttx/configs/stm3220g-eval/src/up_boot.c @@ -88,6 +88,18 @@ void stm32_boardinitialize(void) stm32_selectsram(); #endif + /* Initialize USB is 1) USBDEV is selected, 2) the OTG FS controller is not + * disabled, and 3) the weak function stm32_usbinitialize() has been brought + * into the build. + */ + +#if defined(CONFIG_USBDEV) && defined(CONFIG_STM32_OTGFS) + if (stm32_usbinitialize) + { + stm32_usbinitialize(); + } +#endif + /* Configure on-board LEDs if LED support has been selected. */ #ifdef CONFIG_ARCH_LEDS diff --git a/nuttx/configs/stm3240g-eval/src/stm3240g-internal.h b/nuttx/configs/stm3240g-eval/src/stm3240g-internal.h index 70f3f6079..3dfd79912 100644 --- a/nuttx/configs/stm3240g-eval/src/stm3240g-internal.h +++ b/nuttx/configs/stm3240g-eval/src/stm3240g-internal.h @@ -213,6 +213,16 @@ void weak_function stm32_spiinitialize(void); /************************************************************************************ + * Name: stm32_usbinitialize + * + * Description: + * Called to setup USB-related GPIO pins for the STM3210E-EVAL board. + * + ************************************************************************************/ + +void weak_function stm32_usbinitialize(void); + +/************************************************************************************ * Name: stm32_extmemgpios * * Description: @@ -323,7 +333,7 @@ void stm32_deselectsram(void); ************************************************************************************/ #ifdef CONFIG_STM32_FSMC -extern void stm32_selectlcd(void); +void stm32_selectlcd(void); #endif /************************************************************************************ @@ -335,7 +345,7 @@ extern void stm32_selectlcd(void); ************************************************************************************/ #ifdef CONFIG_STM32_FSMC -extern void stm32_deselectlcd(void); +void stm32_deselectlcd(void); #endif #endif /* __ASSEMBLY__ */ diff --git a/nuttx/configs/stm3240g-eval/src/up_boot.c b/nuttx/configs/stm3240g-eval/src/up_boot.c index 063f6a32b..7322878e8 100644 --- a/nuttx/configs/stm3240g-eval/src/up_boot.c +++ b/nuttx/configs/stm3240g-eval/src/up_boot.c @@ -88,6 +88,18 @@ void stm32_boardinitialize(void) stm32_selectsram(); #endif + /* Initialize USB is 1) USBDEV is selected, 2) the OTG FS controller is not + * disabled, and 3) the weak function stm32_usbinitialize() has been brought + * into the build. + */ + +#if defined(CONFIG_USBDEV) && defined(CONFIG_STM32_OTGFS) + if (stm32_usbinitialize) + { + stm32_usbinitialize(); + } +#endif + /* Configure on-board LEDs if LED support has been selected. */ #ifdef CONFIG_ARCH_LEDS diff --git a/nuttx/configs/stm32f4discovery/README.txt b/nuttx/configs/stm32f4discovery/README.txt index 0d1f6a2ff..f5343e405 100755 --- a/nuttx/configs/stm32f4discovery/README.txt +++ b/nuttx/configs/stm32f4discovery/README.txt @@ -578,8 +578,13 @@ MAPPING TO STM32 F4: for the parallel interface if PC0 is held high (or floating). PC0 enables the STMPS2141STR IC power switch that drives the OTG FS host VBUS. 4 Also the reset pin for the CS43L22 audio Codec. - -MAPPING of similar LCD in Arduino (write-only): + +NOTE: The configuration to test this LCD configuration is available at +configs/stm32f4discover/nxlines. As of this writing, I have not seen the +LCD working so I probaby have some things wrong. + +I might need to use a bit-baning interface. Below is the pin configurationf +of a similar LCD to support a (write-only), bit banging interface: LCD PIN BOARD CONNECTION LEDA 5V @@ -593,8 +598,9 @@ MAPPING of similar LCD in Arduino (write-only): CS Pin configured as output RSET Pin configured as output -Arduino bit banging interface: +The following summarize the bit banging oprations: + /* Rese the LCD */ void Reset(void) { Set RSET output @@ -604,6 +610,7 @@ Arduino bit banging interface: Set RSET output } + /* Write 16-bits of whatever */ void Write16(uint8_t ms, uint8_t ls) { Set port A to ms @@ -613,19 +620,22 @@ Arduino bit banging interface: Set WR pin } + /* Set the index register to an LCD register address */ void Index(uint8_t address) { Clear RS Write16(0, address); } + /* Write data to the LCD register or GRAM memory */ void WriteData(uin16_t data) { Set RS Write16(data >> 8, data & 0xff); } - void WriteRegiser(uint8_t address, uint16_t data) + /* Write to a register */ + void WriteRegister(uint8_t address, uint16_t data) { Index(address); WriteData(data); @@ -901,8 +911,9 @@ Where <subdir> is one of the following: examples/ostest. By default, this project assumes that you are using the DFU bootloader. - CONFIG_STM32_CODESOURCERYW=y : CodeSourcery under Windows + Default toolchain: + CONFIG_STM32_CODESOURCERYL=y : CodeSourcery under Linux / Mac OS X If you use the Atollic toolchain, then the FPU test can be enabled in the examples/ostest by adding the following your NuttX configuration file: @@ -937,6 +948,8 @@ Where <subdir> is one of the following: Configures the NuttShell (nsh) located at apps/examples/nsh. The Configuration enables both the serial and telnet NSH interfaces. + Default toolchain: + CONFIG_STM32_CODESOURCERYL=y : CodeSourcery under Linux / Mac OS X NOTES: @@ -984,6 +997,13 @@ Where <subdir> is one of the following: The IWDG timer has a range of about 35 seconds and should not be an issue. + 4. USB Support (CDC/ACM device) + + CONFIG_STM32_OTGFS=y : STM32 OTG FS support + 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 + nxlines: ------ An example using the NuttX graphics system (NX). This example focuses on @@ -999,3 +1019,9 @@ Where <subdir> is one of the following: some issues with how some of the dedicated FSMC pins are used on the boards. This configuration may not be useful and may only serve as an illustration of how to build for th SSD1289 LCD. + + Default toolchain: + + CONFIG_STM32_CODESOURCERYW=y : CodeSourcery under Windows + + NOTE: As of this writing, I have not seen the LCD work! diff --git a/nuttx/configs/stm32f4discovery/nsh/defconfig b/nuttx/configs/stm32f4discovery/nsh/defconfig index 2cc4383b5..75b8ac871 100644 --- a/nuttx/configs/stm32f4discovery/nsh/defconfig +++ b/nuttx/configs/stm32f4discovery/nsh/defconfig @@ -1213,6 +1213,24 @@ CONFIG_EXAMPLES_OSTEST_NBARRIER_THREADS=3 # CONFIG_NSH_ROMFSETC - Use startup script in /etc # CONFIG_NSH_CONSOLE - Use serial console front end # CONFIG_NSH_TELNET - Use telnetd console front end +# CONFIG_NSH_USBCONSOLE - If defined, then the an arbitrary USB device may be +# used to as the NSH console. In this case, CONFIG_NSH_CONDEV must be +# defined to indicate which USB device to use as the console. +# CONFIG_NSH_USBCONDEV - If CONFIG_NSH_USBCONSOLE is set to 'y', then +# CONFIG_NSH_USBCONDEV must also be set to select the USB device used to +# support the NSH console. This should be set to the quoted name of a +# readable/write-able USB driver such as: CONFIG_NSH_USBCONDEV="/dev/ttyACM0". +# CONFIG_NSH_UBSDEV_MINOR - The minor device number of the USB device. +# Default: 0 +# CONFIG_NSH_UBSDEV_TRACEINIT - Bit set with each bit enabling a trace option +# (see include/nuttx/usb/usbdev_trace.h). Default: Only USB errors are traced. +# CONFIG_NSH_CONDEV - If CONFIG_NSH_CONSOLE is set to 'y', then CONFIG_NSH_CONDEV +# may also be set to select the serial device used to support the NSH console. +# This should be set to the quoted name of a readable/write-able character +# driver such as: CONFIG_NSH_CONDEV="/dev/ttyS1". This is useful, for example, +# to separate the NSH command line from the system console when the system +# console is used to provide debug output. Default: stdin and stdout (probably +# "/dev/console") # CONFIG_NSH_ARCHINIT - Platform provides architecture # specific initialization (nsh_archinitialize()). # @@ -1244,6 +1262,11 @@ CONFIG_NSH_DISABLEBG=n CONFIG_NSH_ROMFSETC=n CONFIG_NSH_CONSOLE=y CONFIG_NSH_TELNET=n +CONFIG_NSH_USBCONSOLE=n +CONFIG_NSH_USBCONDEV="/dev/ttyACM0" +CONFIG_NSH_UBSDEV_MINOR=0 +#CONFIG_NSH_UBSDEV_TRACEINIT +#CONFIG_NSH_CONDEV CONFIG_NSH_ARCHINIT=n CONFIG_NSH_IOBUFFER_SIZE=512 CONFIG_NSH_DHCPC=n diff --git a/nuttx/configs/stm32f4discovery/src/stm32f4discovery-internal.h b/nuttx/configs/stm32f4discovery/src/stm32f4discovery-internal.h index 7939ffd30..f2afd74d5 100644 --- a/nuttx/configs/stm32f4discovery/src/stm32f4discovery-internal.h +++ b/nuttx/configs/stm32f4discovery/src/stm32f4discovery-internal.h @@ -132,6 +132,16 @@ void weak_function stm32_spiinitialize(void); /************************************************************************************ + * Name: stm32_usbinitialize + * + * Description: + * Called to setup USB-related GPIO pins for the STM3210E-EVAL board. + * + ************************************************************************************/ + +void weak_function stm32_usbinitialize(void); + +/************************************************************************************ * Name: stm32_extmemgpios * * Description: diff --git a/nuttx/configs/stm32f4discovery/src/up_boot.c b/nuttx/configs/stm32f4discovery/src/up_boot.c index 791f0e5e7..736e23f0f 100644 --- a/nuttx/configs/stm32f4discovery/src/up_boot.c +++ b/nuttx/configs/stm32f4discovery/src/up_boot.c @@ -1,90 +1,102 @@ -/************************************************************************************
- * configs/stm32f4discovery/src/up_boot.c
- * arch/arm/src/board/up_boot.c
- *
- * Copyright (C) 2011 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 <debug.h>
-
-#include <arch/board/board.h>
-
-#include "up_arch.h"
-#include "stm32f4discovery-internal.h"
-
-/************************************************************************************
- * Definitions
- ************************************************************************************/
-
-/************************************************************************************
- * Private Functions
- ************************************************************************************/
-
-/************************************************************************************
- * Public Functions
- ************************************************************************************/
-
-/************************************************************************************
- * Name: stm32_boardinitialize
- *
- * Description:
- * All STM32 architectures must provide the following entry point. This entry point
- * is called early in the intitialization -- after all memory has been configured
- * and mapped but before any devices have been initialized.
- *
- ************************************************************************************/
-
-void stm32_boardinitialize(void)
-{
- /* Configure SPI chip selects if 1) SPI is not disabled, and 2) the weak function
- * stm32_spiinitialize() has been brought into the link.
- */
-
-#if defined(CONFIG_STM32_SPI1) || defined(CONFIG_STM32_SPI2) || defined(CONFIG_STM32_SPI3)
- if (stm32_spiinitialize)
- {
- stm32_spiinitialize();
- }
-#endif
-
- /* Configure on-board LEDs if LED support has been selected. */
-
-#ifdef CONFIG_ARCH_LEDS
- up_ledinit();
-#endif
-}
+/************************************************************************************ + * configs/stm32f4discovery/src/up_boot.c + * arch/arm/src/board/up_boot.c + * + * Copyright (C) 2011 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 <debug.h> + +#include <arch/board/board.h> + +#include "up_arch.h" +#include "stm32f4discovery-internal.h" + +/************************************************************************************ + * Definitions + ************************************************************************************/ + +/************************************************************************************ + * Private Functions + ************************************************************************************/ + +/************************************************************************************ + * Public Functions + ************************************************************************************/ + +/************************************************************************************ + * Name: stm32_boardinitialize + * + * Description: + * All STM32 architectures must provide the following entry point. This entry point + * is called early in the intitialization -- after all memory has been configured + * and mapped but before any devices have been initialized. + * + ************************************************************************************/ + +void stm32_boardinitialize(void) +{ + /* Configure SPI chip selects if 1) SPI is not disabled, and 2) the weak function + * stm32_spiinitialize() has been brought into the link. + */ + +#if defined(CONFIG_STM32_SPI1) || defined(CONFIG_STM32_SPI2) || defined(CONFIG_STM32_SPI3) + if (stm32_spiinitialize) + { + stm32_spiinitialize(); + } +#endif + + /* Initialize USB is 1) USBDEV is selected, 2) the OTG FS controller is not + * disabled, and 3) the weak function stm32_usbinitialize() has been brought + * into the build. + */ + +#if defined(CONFIG_USBDEV) && defined(CONFIG_STM32_OTGFS) + if (stm32_usbinitialize) + { + stm32_usbinitialize(); + } +#endif + + /* Configure on-board LEDs if LED support has been selected. */ + +#ifdef CONFIG_ARCH_LEDS + up_ledinit(); +#endif +} diff --git a/nuttx/drivers/usbdev/cdcacm.c b/nuttx/drivers/usbdev/cdcacm.c index 24903b504..97c9d7c77 100644 --- a/nuttx/drivers/usbdev/cdcacm.c +++ b/nuttx/drivers/usbdev/cdcacm.c @@ -318,6 +318,7 @@ static int cdcacm_sndpacket(FAR struct cdcacm_dev_s *priv) FAR struct usbdev_ep_s *ep; FAR struct usbdev_req_s *req; FAR struct cdcacm_req_s *reqcontainer; + uint16_t reqlen; irqstate_t flags; int len; int ret = OK; @@ -337,7 +338,7 @@ static int cdcacm_sndpacket(FAR struct cdcacm_dev_s *priv) ep = priv->epbulkin; /* Loop until either (1) we run out or write requests, or (2) cdcacm_fillrequest() - * is unable to fill the request with data (i.e., untilthere is no more data + * is unable to fill the request with data (i.e., until there is no more data * to be sent). */ @@ -345,6 +346,14 @@ static int cdcacm_sndpacket(FAR struct cdcacm_dev_s *priv) priv->serdev.xmit.head, priv->serdev.xmit.tail, priv->nwrq, sq_empty(&priv->reqlist)); + /* Get the maximum number of bytes that will fit into one bulk IN request */ + +#ifdef CONFIG_CDCACM_BULKREQLEN + reqlen = MAX(CONFIG_CDCACM_BULKREQLEN, ep->maxpacket); +#else + reqlen = ep->maxpacket; +#endif + while (!sq_empty(&priv->reqlist)) { /* Peek at the request in the container at the head of the list */ @@ -354,7 +363,7 @@ static int cdcacm_sndpacket(FAR struct cdcacm_dev_s *priv) /* Fill the request with serial TX data */ - len = cdcacm_fillrequest(priv, req->buf, req->len); + len = cdcacm_fillrequest(priv, req->buf, reqlen); if (len > 0) { /* Remove the empty container from the request list */ diff --git a/nuttx/drivers/usbdev/pl2303.c b/nuttx/drivers/usbdev/pl2303.c index a1ba667f5..8bd94ddd0 100644 --- a/nuttx/drivers/usbdev/pl2303.c +++ b/nuttx/drivers/usbdev/pl2303.c @@ -567,6 +567,7 @@ static int usbclass_sndpacket(FAR struct pl2303_dev_s *priv) FAR struct usbdev_ep_s *ep; FAR struct usbdev_req_s *req; FAR struct pl2303_req_s *reqcontainer; + uint16_t reqlen; irqstate_t flags; int len; int ret = OK; @@ -586,7 +587,7 @@ static int usbclass_sndpacket(FAR struct pl2303_dev_s *priv) ep = priv->epbulkin; /* Loop until either (1) we run out or write requests, or (2) usbclass_fillrequest() - * is unable to fill the request with data (i.e., untilthere is no more data + * is unable to fill the request with data (i.e., until there is no more data * to be sent). */ @@ -594,6 +595,14 @@ static int usbclass_sndpacket(FAR struct pl2303_dev_s *priv) priv->serdev.xmit.head, priv->serdev.xmit.tail, priv->nwrq, sq_empty(&priv->reqlist)); + /* Get the maximum number of bytes that will fit into one bulk IN request */ + +#ifdef CONFIG_PL2303_BULKREQLEN + reqlen = MAX(CONFIG_CDCACM_BULKREQLEN, ep->maxpacket); +#else + reqlen = ep->maxpacket; +#endif + while (!sq_empty(&priv->reqlist)) { /* Peek at the request in the container at the head of the list */ @@ -603,7 +612,7 @@ static int usbclass_sndpacket(FAR struct pl2303_dev_s *priv) /* Fill the request with serial TX data */ - len = usbclass_fillrequest(priv, req->buf, req->len); + len = usbclass_fillrequest(priv, req->buf, reqlen); if (len > 0) { /* Remove the empty container from the request list */ |