nuttx/boards/arm/efm32/olimex-efm32g880f128-stk
cuiziwei 4ec7af779d nuttx/boards:init_array.* needs to be executed in order
When I try to set priorities in certain programs, such as init_priority(HIGH_PRIORITY), I've noticed that during linking, there's no guarantee that the programs will be compiled in the sequence I've specified based on priority. This has led to some runtime errors in my program.

I realized that in the ld file, when initializing dynamic arrays, there's no assurance of initializing init_array.* before init_array. This has resulted in runtime errors in the program. Consequently, I've rearranged the init_array.* in the ld file of NuttX to be placed before init_array and added a SORT operation to init_array.* to ensure accurate initialization based on priorities during linking.
2023-08-29 22:54:37 +08:00
..
configs/nsh
include
scripts nuttx/boards:init_array.* needs to be executed in order 2023-08-29 22:54:37 +08:00
src
Kconfig
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_ARM_TOOLCHAIN_GNU_EABI=y      : GNU EABI toolchain for Windows