incubator-nuttx/boards/arm/efm32/olimex-efm32g880f128-stk
chao.an b88561299b make/expression: improving up asm/C/C++ compile times
In the current compilation environment, the recursive assignment(=) for compile
flags will be delayed until every file is actually need to be compile.

For example:
--------------------------------------------------------------------------------
arch/arm/src/Makefile:

INCLUDES += ${shell $(INCDIR) "$(CC)" $(ARCH_SRCDIR)$(DELIM)chip}
INCLUDES += ${shell $(INCDIR) "$(CC)" $(ARCH_SRCDIR)$(DELIM)common}
INCLUDES += ${shell $(INCDIR) "$(CC)" $(ARCH_SRCDIR)$(DELIM)$(ARCH_SUBDIR)}
INCLUDES += ${shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)sched}

CPPFLAGS += $(INCLUDES) $(EXTRAFLAGS)
CFLAGS += $(INCLUDES) $(EXTRAFLAGS)
CXXFLAGS += $(INCLUDES) $(EXTRAFLAGS)
AFLAGS += $(INCLUDES) $(EXTRAFLAGS)
--------------------------------------------------------------------------------

All compilation options will be included recursively,
which will be delayed until the compilation options are actually used:

tools/Config.mk:

--------------------------------------------------------------------------------
define COMPILE
  @echo "CC: $1"
  $(Q) $(CC) -c $(CFLAGS) $($(strip $1)_CFLAGS) $1 -o $2
endef
--------------------------------------------------------------------------------

All compile flags to be reexecuted $(INCDIR) as long as one file needs to be compiled,
but in fact, the compilation options have not changed in the current directory.

So the we recommand to change the syntax of assignment
From
    Recursive (=)
To
    Simple    (:=)

In this way, we can ensure that all compilation options are expanded only once and reducing repeated works.

Signed-off-by: chao.an <anchao@xiaomi.com>
2020-11-02 07:53:53 -08:00
..
configs/nsh libc/stdio: Allocate file_struct dynamically 2020-09-11 17:58:17 +08:00
include Merged in alinjerpelea/nuttx (pull request #990) 2019-08-12 16:06:40 +00:00
scripts make/expression: improving up asm/C/C++ compile times 2020-11-02 07:53:53 -08:00
src Fix nxstyle issue 2020-06-07 19:28:10 +01:00
Kconfig Merged in alinjerpelea/nuttx (pull request #967) 2019-08-07 20:49:39 +00:00
README.txt arch/arm: Remove support for old redundant toolchains. 2020-05-13 18:41:10 +01:00

README.txt

README
======

  This README file discusses the port of NuttX to the Olimex EFM32G880F128-STK
  development board.  This board features:

    • EFM32G880F128
      - 32 bit Cortex-M3™
      - 128KiB Program Flash, 16KiB Bytes RAM
      - 85 GPIO, 8 Channel DMA
      - 12 bit ADC 1Msps
      - 3xUART/SPI, 2x low power UART
      - I2C
      - 3x 16bit TIMERS
      - 3x2 CC-PWM
      - SSC
      - RTC
      - WDT
      - Up to 32MHz operation
    • 32.768 kHz crystal
    • 32 MHz crystal
    • LCD custom display
    • DEBUG connector with ARM 2x10 pin layout for programming/debugging
      with ARM-JTAG-EW
    • UEXT connector
    • EXT extension connector
    • RS232 connector and driver
    • Power jack
    • Lithium coin battery holder
    • RESET circuit , RESET button
    • Four user buttons
    • Buzzer
    • On-board voltage regulator 3.3V with up to 800mA current
    • Power supply filtering capacitor
    • Extension headers for some of the uC ports + RST and power supply

STATUS
======

  I created this configuration with good intentions but was stopped because
  I do not have a SWD tool that I can use with the board -- and I am not
  likely to get one soon.

LEDs
====

  The EFM32G880F128-STK has no user controllable LEDs.

Buttons
=======

  The Olimex board has four buttons, BUT1-4.  Each is grounded and so should
  have a weak pull-up so that it will be sensed as "1" when open and "0"
  when closed.

  --------------------- ---------------------
  PIN                   CONNECTIONS
  --------------------- ---------------------
  PE0/PCNT0_S0IN/U0_TX  BUT1, EXT-18
  PE1/PCNT0_S1IN/U0_RX  BUT2, EXT-19
  PE2/ACMP0_O           BUT3, EXT-20
  E3/ACMP1_O            BUT4, EXT-21
  --------------------- ---------------------

Serial Console
==============

  Pin Availability
  ----------------
  The EFM32G890F128 support the following options for serial output.  NOTE
  (1) that not all of these pins are available for use as a serial console,
  however.  And (2) not all pins made available by the board.

    EFM32 PIN  GPIO NOTES/CONFLICTS/AVAILABILITY
    ------- -- ---- ----------------------------------------------
     US0_RX #0 PE11 SEG7 (LCD)
     US0_RX #1 PE6  COM2 (LCD)
     US0_RX #2 PC10 **AVAILABLE at EXT-12**

     US0_TX #0 PE10 SEG6 (LCD)
     US0_TX #1 PE7  COM3 (LCD)
     US0_TX #2 PC11 **AVAILABLE at EXT-13**
    ------- -- ----
     US1_RX #0 PC1  **AVAILABLE at EXT-5**
     US1_RX #1 PD1  MISO1, Available at UEXT-7

     US1_TX #0 PC0  **AVAILABLE at EXT-4**
     US1_TX #1 PD0  MOSI1, Available at UEXT-8
    ------- -- ----
     US2_RX #0 PC3  **AVAILABLE at EXT-7**
     US2_RX #1 PB4  SEG21 (LCD)

     US2_TX #0 PC2  **AVAILABLE at EXT-6**
     US2_TX #1 PB3  SEG20 (LCD)
    ------- -- ----
      U0_RX #0 PF7  SEG25 (LCD)
      U0_RX #1 PE1  **AVAILABLE at EXT-19**
      U0_RX #2 PA4  SEG18 (LCD)
      U0_RX #3 PC15 DBG_SWV

      U0_TX #0 PF6  SEG24 (LCD)
      U0_TX #1 PE0  **AVAILABLE at EXT-18**
      U0_TX #2 PA3  SEG17 (LCD)
      U0_TX #3 PC14 **AVAILABLE at EXT-16**
    ------- -- ----
    LEU0_RX #0 PD5  LEU0_RX, Available at UEXT-4
    LEU0_RX #1 PB14 HFXTAL_N
    LEU0_RX #2 PE15 SEG11 (LCD)

    LEU0_TX #0 PD4  LEU0_TX, Available at UEXT-3
    LEU0_TX #1 PB13 HFXTAL_P
    LEU0_TX #2 PE14 SEG10 (LCD)
    ------- -- ----
    LEU1_RX #0 PC7  LEU1_RX to DB-9 connector
    LEU1_RX #1 PA6  SEG19 (LCD)

    LEU1_TX #0 PC6  LEU1_TX to DB-9 connector
    LEU1_TX #1 PA5  SEG18 (LCD)
    ------- -- ----

   RS-232 Driver/DB-9 Connector
   ----------------------------
   LEUART1 is available on through an RS232 driver on DB-9 connector.
   Unfortunately, there is no LEUART serial driver available in NuttX as of
   this writing.

   Default Serial Console
   ----------------------
   LEUART1 is configured as the default serial console at 2400 8N1
   on pins PC6 and PC7.

Configurations
==============
  Each EFM32G880F128-STK configuration is maintained in a sub-director
  and can be selected as follow:

    tools/configure.sh olimex-efm32g880f128-stk:<subdir>

  Where <subdir> is one of the following:

  nsh:
  ---
    Configures the NuttShell (nsh) located at apps/examples/nsh.  The
    Configuration enables the serial interfaces on LEUART1.  Support for
    builtin applications is enabled, but in the base configuration no
    builtin applications are selected (see NOTES below).

    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
          see additional README.txt files in the NuttX tools repository.

       b. Execute 'make menuconfig' in nuttx/ in order to start the
          reconfiguration process.

    2. By default, this configuration uses the ARM EABI toolchain
       for Windows and builds under Cygwin (or probably MSYS).  That
       can easily be reconfigured, of course.

       CONFIG_HOST_WINDOWS=y                   : Builds under Windows
       CONFIG_WINDOWS_CYGWIN=y                 : Using Cygwin
       CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y     : GNU EABI toolchain for Windows