summaryrefslogtreecommitdiff
path: root/nuttx/configs/open1788/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/configs/open1788/README.txt')
-rw-r--r--nuttx/configs/open1788/README.txt241
1 files changed, 140 insertions, 101 deletions
diff --git a/nuttx/configs/open1788/README.txt b/nuttx/configs/open1788/README.txt
index 2f7a3860c..c828a1812 100644
--- a/nuttx/configs/open1788/README.txt
+++ b/nuttx/configs/open1788/README.txt
@@ -1,9 +1,9 @@
README.txt
==========
-This README file discusses the port of NuttX to the WaveShare Open1788 board:
-See http://wvshare.com/product/Open1788-Standard.htm. This board features the
-NXP LPC1788 MCU
+ This README file discusses the port of NuttX to the WaveShare Open1788 board:
+ See http://wvshare.com/product/Open1788-Standard.htm. This board features the
+ NXP LPC1788 MCU
CONTENTS
========
@@ -11,6 +11,7 @@ CONTENTS
o LEDs
o Buttons
o FPU
+ o Serial Console
o Using OpenOCD with the Olimex ARM-USB-OCD
o Loading Code with the ISP Board
o Configuration
@@ -18,141 +19,179 @@ CONTENTS
LEDs
====
-The Open1788 base board has four user LEDs
-
- LED1 : Connected to P1[14]
- LED2 : Connected to P0[16]
- LED3 : Connected to P1[13]
- LED4 : Connected to P4[27]
-
-If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in
-any way using the defitions provided in the board.h header file.
-
-If CONFIG_ARCH_LEDs is defined, then NuttX will control the 3 LEDs on the
-WaveShare Open1788K. The following definitions describe how NuttX controls
-the LEDs:
- LED1 LED2 LED3 LED4
- LED_STARTED OFF OFF OFF OFF
- LED_HEAPALLOCATE ON OFF OFF OFF
- LED_IRQSENABLED OFF ON OFF OFF
- LED_STACKCREATED ON ON OFF OFF
- LED_INIRQ LED3 glows, on while in interupt
- LED_SIGNAL LED3 glows, on while in signal handler
- LED_ASSERTION LED3 glows, on while in assertion
- LED_PANIC LED3 Flashes at 2Hz
- LED_IDLE LED glows: ON while active; OFF while sleeping
+ The Open1788 base board has four user LEDs
+
+ LED1 : Connected to P1[14]
+ LED2 : Connected to P0[16]
+ LED3 : Connected to P1[13]
+ LED4 : Connected to P4[27]
+
+ If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in
+ any way using the defitions provided in the board.h header file.
+
+ If CONFIG_ARCH_LEDs is defined, then NuttX will control the 3 LEDs on the
+ WaveShare Open1788K. The following definitions describe how NuttX controls
+ the LEDs:
+ LED1 LED2 LED3 LED4
+ LED_STARTED OFF OFF OFF OFF
+ LED_HEAPALLOCATE ON OFF OFF OFF
+ LED_IRQSENABLED OFF ON OFF OFF
+ LED_STACKCREATED ON ON OFF OFF
+ LED_INIRQ LED3 glows, on while in interupt
+ LED_SIGNAL LED3 glows, on while in signal handler
+ LED_ASSERTION LED3 glows, on while in assertion
+ LED_PANIC LED3 Flashes at 2Hz
+ LED_IDLE LED glows: ON while active; OFF while sleeping
Buttons
=======
-The Open1788K supports several buttons:
+ The Open1788K supports several buttons:
- USER1 : Connected to P4[26]
- USER2 : Connected to P2[22]
- USER3 : Connected to P0[10]
+ USER1 : Connected to P4[26]
+ USER2 : Connected to P2[22]
+ USER3 : Connected to P0[10]
-And a Joystick
+ And a Joystick
- JOY_A : Connected to P2[25]
- JOY_B : Connected to P2[26]
- JOY_C : Connected to P2[23]
- JOY_D : Connected to P2[19]
- JOY_CTR : Connected to P0[14]
+ JOY_A : Connected to P2[25]
+ JOY_B : Connected to P2[26]
+ JOY_C : Connected to P2[23]
+ JOY_D : Connected to P2[19]
+ JOY_CTR : Connected to P0[14]
-These can be accessed using the definitions and interfaces defined in the
-board.h header file.
+ These can be accessed using the definitions and interfaces defined in the
+ board.h header file.
FPU
===
-FPU Configuration Options
--------------------------
+ FPU Configuration Options
+ -------------------------
-There are two version of the FPU support built into the LPC17xx port.
+ There are two version of the FPU support built into the LPC17xx port.
-1. Lazy Floating Point Register Save.
+ 1. Lazy Floating Point Register Save.
- This is an untested implementation that saves and restores FPU registers
- only on context switches. This means: (1) floating point registers are
- not stored on each context switch and, hence, possibly better interrupt
- performance. But, (2) since floating point registers are not saved,
- you cannot use floating point operations within interrupt handlers.
+ This is an untested implementation that saves and restores FPU registers
+ only on context switches. This means: (1) floating point registers are
+ not stored on each context switch and, hence, possibly better interrupt
+ performance. But, (2) since floating point registers are not saved,
+ you cannot use floating point operations within interrupt handlers.
- This logic can be enabled by simply adding the following to your .config
- file:
+ This logic can be enabled by simply adding the following to your .config
+ file:
- CONFIG_ARCH_FPU=y
+ CONFIG_ARCH_FPU=y
-2. Non-Lazy Floating Point Register Save
+ 2. Non-Lazy Floating Point Register Save
- Mike Smith has contributed an extensive re-write of the ARMv7-M exception
- handling logic. This includes verified support for the FPU. These changes
- have not yet been incorporated into the mainline and are still considered
- experimental. These FPU logic can be enabled with:
+ Mike Smith has contributed an extensive re-write of the ARMv7-M exception
+ handling logic. This includes verified support for the FPU. These changes
+ have not yet been incorporated into the mainline and are still considered
+ experimental. These FPU logic can be enabled with:
- CONFIG_ARCH_FPU=y
- CONFIG_ARMV7M_CMNVECTOR=y
+ CONFIG_ARCH_FPU=y
+ CONFIG_ARMV7M_CMNVECTOR=y
- You will probably also changes to the ld.script in if this option is selected.
- This should work:
+ You will probably also changes to the ld.script in if this option is selected.
+ This should work:
- -ENTRY(_stext)
- +ENTRY(__start) /* Treat __start as the anchor for dead code stripping */
- +EXTERN(_vectors) /* Force the vectors to be included in the output */
+ -ENTRY(_stext)
+ +ENTRY(__start) /* Treat __start as the anchor for dead code stripping */
+ +EXTERN(_vectors) /* Force the vectors to be included in the output */
-CFLAGS
-------
+ CFLAGS
+ ------
-Only the Atollic toolchain has built-in support for the Cortex-M4 FPU. You will see
-the following lines in each Make.defs file:
+ Only the Atollic toolchain has built-in support for the Cortex-M4 FPU. You will see
+ the following lines in each Make.defs file:
+
+ ifeq ($(CONFIG_STM32_ATOLLIC_LITE),y)
+ # Atollic toolchain under Windows
+ ...
+ ifeq ($(CONFIG_ARCH_FPU),y)
+ ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard
+ else
+ ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
+ endif
+ endif
+
+ If you are using a toolchain other than the Atollic toolchain, then to use the FPU
+ you will also have to modify the CFLAGS to enable compiler support for the ARMv7-M
+ FPU. As of this writing, there are not many GCC toolchains that will support the
+ ARMv7-M FPU.
+
+ As a minimum you will need to add CFLAG options to (1) enable hardware floating point
+ code generation, and to (2) select the FPU implementation. You might try the same
+ options as used with the Atollic toolchain in the Make.defs file:
- ifeq ($(CONFIG_STM32_ATOLLIC_LITE),y)
- # Atollic toolchain under Windows
- ...
- ifeq ($(CONFIG_ARCH_FPU),y)
ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard
- else
- ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
- endif
- endif
-If you are using a toolchain other than the Atollic toolchain, then to use the FPU
-you will also have to modify the CFLAGS to enable compiler support for the ARMv7-M
-FPU. As of this writing, there are not many GCC toolchains that will support the
-ARMv7-M FPU.
+ Configuration Changes
+ ---------------------
+
+ Below are all of the configuration changes that I had to make to configs/stm3240g-eval/nsh2
+ in order to successfully build NuttX using the Atollic toolchain WITH FPU support:
+
+ -CONFIG_ARCH_FPU=n : Enable FPU support
+ +CONFIG_ARCH_FPU=y
+
+ -CONFIG_STM32_CODESOURCERYW=y : Disable the CodeSourcery toolchain
+ +CONFIG_STM32_CODESOURCERYW=n
+
+ -CONFIG_STM32_ATOLLIC_LITE=n : Enable *one* the Atollic toolchains
+ CONFIG_STM32_ATOLLIC_PRO=n
+ -CONFIG_STM32_ATOLLIC_LITE=y : The "Lite" version
+ CONFIG_STM32_ATOLLIC_PRO=n : The "Pro" version
+
+ -CONFIG_INTELHEX_BINARY=y : Suppress generation FLASH download formats
+ +CONFIG_INTELHEX_BINARY=n : (Only necessary with the "Lite" version)
+
+ -CONFIG_HAVE_CXX=y : Suppress generation of C++ code
+ +CONFIG_HAVE_CXX=n : (Only necessary with the "Lite" version)
-As a minimum you will need to add CFLAG options to (1) enable hardware floating point
-code generation, and to (2) select the FPU implementation. You might try the same
-options as used with the Atollic toolchain in the Make.defs file:
+ See the section above on Toolchains, NOTE 2, for explanations for some of
+ the configuration settings. Some of the usual settings are just not supported
+ by the "Lite" version of the Atollic toolchain.
- ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard
+Serial Console
+==============
-Configuration Changes
----------------------
+ By Default, UART0 is used as the serial console in all configurations. This
+ may be connected to your computer via an external RS-232 driver or via the
+ WaveShare USB ISP/VCOM module.
-Below are all of the configuration changes that I had to make to configs/stm3240g-eval/nsh2
-in order to successfully build NuttX using the Atollic toolchain WITH FPU support:
+ As an option, UART1 can also be used for the serial console by reconfiguring
+ as follows:
- -CONFIG_ARCH_FPU=n : Enable FPU support
- +CONFIG_ARCH_FPU=y
+ System Type:
+ CONFIG_LPC17_UART0=n : Disable UART0 if it is no longer used
+ CONFIG_LPC17_UART1=y : Enable UART1
- -CONFIG_STM32_CODESOURCERYW=y : Disable the CodeSourcery toolchain
- +CONFIG_STM32_CODESOURCERYW=n
+ Drivers:
+ CONFIG_UART1_SERIAL_CONSOLE=y : Setup up the UART1 configuration
+ CONFIG_UART1_RXBUFSIZE=256
+ CONFIG_UART1_TXBUFSIZE=256
+ CONFIG_UART1_BAUD=115200
+ CONFIG_UART1_BITS=8
+ CONFIG_UART1_PARITY=0
+ CONFIG_UART1_2STOP=0
- -CONFIG_STM32_ATOLLIC_LITE=n : Enable *one* the Atollic toolchains
- CONFIG_STM32_ATOLLIC_PRO=n
- -CONFIG_STM32_ATOLLIC_LITE=y : The "Lite" version
- CONFIG_STM32_ATOLLIC_PRO=n : The "Pro" version
+ In this configuration using UART1, it is necessary to disable LED support
+ on the board. That is because UART1 RXD is set for pin p0.16, but so it
+ LED2. If you do not disable LED support then no incoming serial data will
+ be recevied.
- -CONFIG_INTELHEX_BINARY=y : Suppress generation FLASH download formats
- +CONFIG_INTELHEX_BINARY=n : (Only necessary with the "Lite" version)
+ Common Board Options
+ CONFIG_ARCH_LEDS=n : Disable LED support
- -CONFIG_HAVE_CXX=y : Suppress generation of C++ code
- +CONFIG_HAVE_CXX=n : (Only necessary with the "Lite" version)
+ You should also remove the LED2 jumper so that the RXD input does not
+ attempt to drive LED2 as well (this this does not seem to interfere with
+ data receipt).
-See the section above on Toolchains, NOTE 2, for explanations for some of
-the configuration settings. Some of the usual settings are just not supported
-by the "Lite" version of the Atollic toolchain.
+ NOTE: If you intend to use LEDs, then you might want to redesign some of
+ the LED logic in the src/ subdirectory so that it does not use LED2.
Using OpenOCD with the Olimex ARM-USB-OCD
=========================================