2013-01-18 23:42:37 +01:00
|
|
|
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
|
|
|
|
|
|
|
|
CONTENTS
|
|
|
|
========
|
|
|
|
|
2013-02-08 01:17:54 +01:00
|
|
|
o FPU
|
2013-01-18 23:42:37 +01:00
|
|
|
o Configuration
|
|
|
|
|
2013-02-08 01:17:54 +01:00
|
|
|
FPU
|
|
|
|
===
|
|
|
|
|
|
|
|
FPU Configuration Options
|
|
|
|
-------------------------
|
|
|
|
|
|
|
|
There are two version of the FPU support built into the LPC17xx port.
|
|
|
|
|
|
|
|
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 logic can be enabled by simply adding the following to your .config
|
|
|
|
file:
|
|
|
|
|
|
|
|
CONFIG_ARCH_FPU=y
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
-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
|
|
|
|
------
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
2013-01-18 23:42:37 +01:00
|
|
|
CONFIGURURATION
|
|
|
|
===============
|
|
|
|
|
|
|
|
ostest
|
|
|
|
------
|
|
|
|
This configuration directory, performs a simple OS test using
|
|
|
|
apps/examples/ostest.
|
|
|
|
|
|
|
|
NOTES:
|
|
|
|
|
|
|
|
1. This configuration uses the mconf-based configuration tool. To
|
|
|
|
change this configuration using that tool, you should:
|
|
|
|
|
|
|
|
a. Build and install the kconfig-mconf tool. See nuttx/README.txt
|
|
|
|
and misc/tools/
|
|
|
|
|
|
|
|
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
|
|
|
reconfiguration process.
|
|
|
|
|
|
|
|
2. Uses the older, OABI, buildroot toolchain. But that is easily
|
|
|
|
reconfigured:
|
|
|
|
|
|
|
|
CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=y : Buildroot toolchain
|
|
|
|
CONFIG_ARMV7M_OABI_TOOLCHAIN=y : Older, OABI toolchain
|
|
|
|
|
|
|
|
|