nuttx/boards/arm/stm32f7/stm32f769i-disco
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 libc/stdio: Allocate file_struct dynamically 2020-09-11 17:58:17 +08:00
include Refine the preprocessor conditional guard style (#190) 2020-01-31 19:07:39 +01:00
kernel sched: Rename task_startup to nxtask_startup 2020-07-01 07:55:33 -06:00
scripts make/expression: improving up asm/C/C++ compile times 2020-11-02 07:53:53 -08:00
src boards/arm/stm32f7/stm32f769i-disco: Apply NxStyle fixes 2020-06-24 10:51:02 -03:00
Kconfig
README.txt Remove exra whitespace from files (#189) 2020-01-31 09:24:49 -06:00

README
======

This README discusses issues unique to NuttX configurations for the
STMicro STM32F769I-DISCO development board featuring the STM32F769NIH6
MCU. The STM32F769NIH6 is a 216MHz Cortex-M7 operating with 2048K Flash
memory and 512Kb SRAM. The board features:

  - On-board ST-LINK/V2 for programming and debugging,
  - Mbed-enabled (mbed.org)
  - 4-inch 800x472 color LCD-TFT with capacitive touch screen
  - SAI audio codec
  - Audio line in and line out jack
  - Two ST MEMS microphones
  - SPDIF RCA input connector
  - Two pushbuttons (user and reset)
  - 512-Mbit Quad-SPI Flash memory
  - 128-Mbit SDRAM
  - Connector for microSD card
  - RF-EEPROM daughterboard connector
  - USB OTG HS with Micro-AB connectors
  - Ethernet connector compliant with IEEE-802.3-2002 and PoE

Refer to the http://www.st.com website for further information about this
board (search keyword: stm32f769i-disco)

Contents
========

  - STATUS
  - Development Environment
  - LEDs and Buttons
  - Serial Console
  - Configurations

STATUS
======

  2019-06: PWM support has been tested as working.

  2017-07:  The basic NSH configuration is functional using a serial
    console on USART1, which is connected to the "virtual com port"
    of the ST/LINK USB adapter.

  2017-07:  STM32 F7 Ethernet appears to be functional, but has had
    only light testing.

  Work in progress: Use LCD over DSI interface, rest of board.

Development Environment
=======================

  The Development environments for the STM32F769I-DISCO board are identical
  to the environments for other STM32F boards.  For full details on the
  environment options and setup, see the README.txt file in the
  boards/arm/stm32f7/stm32f769i-disco directory.

LEDs and Buttons
================

  LEDs
  ----
  The STM32F769I-DISCO board has numerous LEDs but only one, LD3 located
  near the reset button, that can be controlled by software.

  LD3 is controlled by PI1 which is also the SPI2_SCK at the Arduino
  interface.  One end of LD3 is grounded so a high output on PI1 will
  illuminate the LED.

  This LED is not used by the board port unless CONFIG_ARCH_LEDS is defined.
  In that case, the usage by the board port is defined in include/board.h
  and src/stm32_leds.c. The LEDs are used to encode OS-related events as
  follows:

    SYMBOL              Meaning                 LD3
    ------------------- ----------------------- ------
    LED_STARTED         NuttX has been started  OFF
    LED_HEAPALLOCATE    Heap has been allocated OFF
    LED_IRQSENABLED     Interrupts enabled      OFF
    LED_STACKCREATED    Idle stack created      ON
    LED_INIRQ           In an interrupt         N/C
    LED_SIGNAL          In a signal handler     N/C
    LED_ASSERTION       An assertion failed     N/C
    LED_PANIC           The system has crashed  FLASH

  Thus is LD3 is statically on, NuttX has successfully  booted and is,
  apparently, running normally.  If LD3 is flashing at approximately
  2Hz, then a fatal error has been detected and the system has halted.

  Buttons
  -------
  Pushbutton B1, labelled "User", is connected to GPIO PI11.  A high
  value will be sensed when the button is depressed.

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

  Use the serial interface the ST/LINK provides to the USB host.

Configurations
==============

  Common Configuration Information
  --------------------------------
  Each STM32F769I-DISCO configuration is maintained in a sub-directory and
  can be selected as follow:

    tools/configure.sh stm32f769i-disco:<subdir>

  Where <subdir> is one of the sub-directories listed below.

Configuration Directories
-------------------------

  nsh:
  ---
    Configures the NuttShell (NSH) located at apps/examples/nsh.  The
    Configuration enables the serial interfaces on UART1.
    Otherwise nothing is enabled, so that config is a starting point
    for initial testing.
    Support for builtin applications is enabled, but in the base
    configuration no builtin applications are selected.

    1. This config supports the PWM test (apps/examples/pwm) but this must
       be manually enabled by selecting:

       CONFIG_PWM=y              : Enable the generic PWM infrastructure
       CONFIG_EXAMPLES_PWM=y     : Enable the PWM example app

       And these for enabling the STM32 timer PWM channel:

       CONFIG_STM32F7_TIM1=y
       CONFIG_STM32F7_TIM1_PWM=y
       CONFIG_STM32F7_TIM1_CHANNEL=4

  nsh-ehternet:
  ---
    Same as above but a lot more hardware peripherals enabled,
    in particular ethernet, as well as networking stuff.