diff options
Diffstat (limited to 'demos')
| -rw-r--r-- | demos/STM32/RT-STM32F030R8-NUCLEO/.project | 2 | ||||
| -rw-r--r-- | demos/STM32/RT-STM32F030R8-NUCLEO/Makefile | 56 | ||||
| -rw-r--r-- | demos/STM32/RT-STM32F030R8-NUCLEO/chconf.h | 293 | ||||
| -rw-r--r-- | demos/STM32/RT-STM32F030R8-NUCLEO/debug/RT-STM32F030R8-NUCLEO (OpenOCD, Flash and Run).launch | 52 | ||||
| -rw-r--r-- | demos/STM32/RT-STM32F030R8-NUCLEO/halconf.h | 16 | ||||
| -rw-r--r-- | demos/STM32/RT-STM32F030R8-NUCLEO/main.c | 4 | ||||
| -rw-r--r-- | demos/STM32/RT-STM32F030R8-NUCLEO/mcuconf.h | 15 | 
7 files changed, 228 insertions, 210 deletions
| diff --git a/demos/STM32/RT-STM32F030R8-NUCLEO/.project b/demos/STM32/RT-STM32F030R8-NUCLEO/.project index 7dbfc4310..1b39e37c7 100644 --- a/demos/STM32/RT-STM32F030R8-NUCLEO/.project +++ b/demos/STM32/RT-STM32F030R8-NUCLEO/.project @@ -27,7 +27,7 @@  		<link>
  			<name>board</name>
  			<type>2</type>
 -			<locationURI>CHIBIOS/boards/ST_NUCLEO_F030R8</locationURI>
 +			<locationURI>CHIBIOS/os/hal/boards/ST_NUCLEO_F030R8</locationURI>
  		</link>
  		<link>
  			<name>os</name>
 diff --git a/demos/STM32/RT-STM32F030R8-NUCLEO/Makefile b/demos/STM32/RT-STM32F030R8-NUCLEO/Makefile index 94e71c5c6..3eb564744 100644 --- a/demos/STM32/RT-STM32F030R8-NUCLEO/Makefile +++ b/demos/STM32/RT-STM32F030R8-NUCLEO/Makefile @@ -30,7 +30,7 @@ endif  # Enable this if you want link time optimizations (LTO)
  ifeq ($(USE_LTO),)
 -  USE_LTO = no
 +  USE_LTO = yes
  endif
  # If enabled, this option allows to compile the application in THUMB mode.
 @@ -51,6 +51,18 @@ endif  # Architecture or project specific options
  #
 +# Stack size to be allocated to the Cortex-M process stack. This stack is
 +# the stack used by the main() thread.
 +ifeq ($(USE_PROCESS_STACKSIZE),)
 +  USE_PROCESS_STACKSIZE = 0x200
 +endif
 +
 +# Stack size to the allocated to the Cortex-M main/exceptions stack. This
 +# stack is used for processing interrupts and exceptions.
 +ifeq ($(USE_EXCEPTIONS_STACKSIZE),)
 +  USE_EXCEPTIONS_STACKSIZE = 0x400
 +endif
 +
  #
  # Architecture or project specific options
  ##############################################################################
 @@ -63,13 +75,14 @@ endif  PROJECT = ch
  # Imported source files and paths
 -CHIBIOS = ../..
 -include $(CHIBIOS)/boards/ST_NUCLEO_F030R8/board.mk
 -include $(CHIBIOS)/os/hal/platforms/STM32F0xx/platform.mk
 +CHIBIOS = ../../..
  include $(CHIBIOS)/os/hal/hal.mk
 -include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F0xx/port.mk
 -include $(CHIBIOS)/os/kernel/kernel.mk
 -include $(CHIBIOS)/test/test.mk
 +include $(CHIBIOS)/os/hal/boards/ST_NUCLEO_F030R8/board.mk
 +include $(CHIBIOS)/os/hal/ports/STM32/STM32F0xx/platform.mk
 +include $(CHIBIOS)/os/hal/osal/rt/osal.mk
 +include $(CHIBIOS)/os/rt/rt.mk
 +include $(CHIBIOS)/os/rt/ports/ARMCMx/compilers/GCC/mk/port_stm32f0xx.mk
 +include $(CHIBIOS)/test/rt/test.mk
  # Define linker script file here
  LDSCRIPT= $(PORTLD)/STM32F030x8.ld
 @@ -80,6 +93,7 @@ CSRC = $(PORTSRC) \         $(KERNSRC) \
         $(TESTSRC) \
         $(HALSRC) \
 +       $(OSALSRC) \
         $(PLATFORMSRC) \
         $(BOARDSRC) \
         main.c
 @@ -112,7 +126,7 @@ TCPPSRC =  ASMSRC = $(PORTASM)
  INCDIR = $(PORTINC) $(KERNINC) $(TESTINC) \
 -         $(HALINC) $(PLATFORMINC) $(BOARDINC) \
 +         $(HALINC) $(OSALINC) $(PLATFORMINC) $(BOARDINC) \
           $(CHIBIOS)/os/various
  #
 @@ -136,6 +150,7 @@ LD   = $(TRGT)gcc  #LD   = $(TRGT)g++
  CP   = $(TRGT)objcopy
  AS   = $(TRGT)gcc -x assembler-with-cpp
 +AR   = $(TRGT)ar
  OD   = $(TRGT)objdump
  SZ   = $(TRGT)size
  HEX  = $(CP) -O ihex
 @@ -158,29 +173,6 @@ CPPWARN = -Wall -Wextra  ##############################################################################
  ##############################################################################
 -# Start of default section
 -#
 -
 -# List all default C defines here, like -D_DEBUG=1
 -DDEFS =
 -
 -# List all default ASM defines here, like -D_DEBUG=1
 -DADEFS =
 -
 -# List all default directories to look for include files here
 -DINCDIR =
 -
 -# List the default directory to look for the libraries here
 -DLIBDIR =
 -
 -# List all default libraries here
 -DLIBS =
 -
 -#
 -# End of default section
 -##############################################################################
 -
 -##############################################################################
  # Start of user section
  #
 @@ -203,5 +195,5 @@ ULIBS =  # End of user defines
  ##############################################################################
 -RULESPATH = $(CHIBIOS)/os/ports/GCC/ARMCMx
 +RULESPATH = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC
  include $(RULESPATH)/rules.mk
 diff --git a/demos/STM32/RT-STM32F030R8-NUCLEO/chconf.h b/demos/STM32/RT-STM32F030R8-NUCLEO/chconf.h index f943ea80c..ab15c99f7 100644 --- a/demos/STM32/RT-STM32F030R8-NUCLEO/chconf.h +++ b/demos/STM32/RT-STM32F030R8-NUCLEO/chconf.h @@ -1,5 +1,5 @@  /*
 -    ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006-2014 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 @@ -30,19 +30,42 @@  /*===========================================================================*/
  /**
 - * @name Kernel parameters and options
 + * @name System timers settings
   * @{
   */
  /*===========================================================================*/
  /**
 + * @brief   System time counter resolution.
 + * @note    Allowed values are 16 or 32 bits.
 + */
 +#define CH_CFG_ST_RESOLUTION                16
 +
 +/**
   * @brief   System tick frequency.
   * @details Frequency of the system timer that drives the system ticks. This
   *          setting also defines the system tick time unit.
   */
 -#if !defined(CH_FREQUENCY) || defined(__DOXYGEN__)
 -#define CH_FREQUENCY                    1000
 -#endif
 +#define CH_CFG_ST_FREQUENCY                 1000
 +
 +/**
 + * @brief   Time delta constant for the tick-less mode.
 + * @note    If this value is zero then the system uses the classic
 + *          periodic tick. This value represents the minimum number
 + *          of ticks that is safe to specify in a timeout directive.
 + *          The value one is not valid, timeouts are rounded up to
 + *          this value.
 + */
 +#define CH_CFG_ST_TIMEDELTA                 2
 +
 +/** @} */
 +
 +/*===========================================================================*/
 +/**
 + * @name Kernel parameters and options
 + * @{
 + */
 +/*===========================================================================*/
  /**
   * @brief   Round robin interval.
 @@ -51,13 +74,12 @@   *          disables the preemption for threads with equal priority and the
   *          round robin becomes cooperative. Note that higher priority
   *          threads can still preempt, the kernel is always preemptive.
 - *
   * @note    Disabling the round robin preemption makes the kernel more compact
   *          and generally faster.
 + * @note    The round robin preemption is not supported in tickless mode and
 + *          must be set to zero in that case.
   */
 -#if !defined(CH_TIME_QUANTUM) || defined(__DOXYGEN__)
 -#define CH_TIME_QUANTUM                 20
 -#endif
 +#define CH_CFG_TIME_QUANTUM                 0
  /**
   * @brief   Managed RAM size.
 @@ -68,28 +90,17 @@   *
   * @note    In order to let the OS manage the whole RAM the linker script must
   *          provide the @p __heap_base__ and @p __heap_end__ symbols.
 - * @note    Requires @p CH_USE_MEMCORE.
 + * @note    Requires @p CH_CFG_USE_MEMCORE.
   */
 -#if !defined(CH_MEMCORE_SIZE) || defined(__DOXYGEN__)
 -#define CH_MEMCORE_SIZE                 0
 -#endif
 +#define CH_CFG_MEMCORE_SIZE                 0
  /**
   * @brief   Idle thread automatic spawn suppression.
   * @details When this option is activated the function @p chSysInit()
 - *          does not spawn the idle thread automatically. The application has
 - *          then the responsibility to do one of the following:
 - *          - Spawn a custom idle thread at priority @p IDLEPRIO.
 - *          - Change the main() thread priority to @p IDLEPRIO then enter
 - *            an endless loop. In this scenario the @p main() thread acts as
 - *            the idle thread.
 - *          .
 - * @note    Unless an idle thread is spawned the @p main() thread must not
 - *          enter a sleep state.
 - */
 -#if !defined(CH_NO_IDLE_THREAD) || defined(__DOXYGEN__)
 -#define CH_NO_IDLE_THREAD               FALSE
 -#endif
 + *          does not spawn the idle thread. The application @p main()
 + *          function becomes the idle thread and must implement an
 + *          infinite loop. */
 +#define CH_CFG_NO_IDLE_THREAD               FALSE
  /** @} */
 @@ -108,9 +119,7 @@   * @note    This is not related to the compiler optimization options.
   * @note    The default is @p TRUE.
   */
 -#if !defined(CH_OPTIMIZE_SPEED) || defined(__DOXYGEN__)
 -#define CH_OPTIMIZE_SPEED               TRUE
 -#endif
 +#define CH_CFG_OPTIMIZE_SPEED               TRUE
  /** @} */
 @@ -122,14 +131,21 @@  /*===========================================================================*/
  /**
 + * @brief   Time Measurement APIs.
 + * @details If enabled then the time measurement APIs are included in
 + *          the kernel.
 + *
 + * @note    The default is @p TRUE.
 + */
 +#define CH_CFG_USE_TM                       FALSE
 +
 +/**
   * @brief   Threads registry APIs.
   * @details If enabled then the registry APIs are included in the kernel.
   *
   * @note    The default is @p TRUE.
   */
 -#if !defined(CH_USE_REGISTRY) || defined(__DOXYGEN__)
 -#define CH_USE_REGISTRY                 TRUE
 -#endif
 +#define CH_CFG_USE_REGISTRY                 TRUE
  /**
   * @brief   Threads synchronization APIs.
 @@ -138,9 +154,7 @@   *
   * @note    The default is @p TRUE.
   */
 -#if !defined(CH_USE_WAITEXIT) || defined(__DOXYGEN__)
 -#define CH_USE_WAITEXIT                 TRUE
 -#endif
 +#define CH_CFG_USE_WAITEXIT                 TRUE
  /**
   * @brief   Semaphores APIs.
 @@ -148,43 +162,36 @@   *
   * @note    The default is @p TRUE.
   */
 -#if !defined(CH_USE_SEMAPHORES) || defined(__DOXYGEN__)
 -#define CH_USE_SEMAPHORES               TRUE
 -#endif
 +#define CH_CFG_USE_SEMAPHORES               TRUE
  /**
   * @brief   Semaphores queuing mode.
   * @details If enabled then the threads are enqueued on semaphores by
   *          priority rather than in FIFO order.
   *
 - * @note    The default is @p FALSE. Enable this if you have special requirements.
 - * @note    Requires @p CH_USE_SEMAPHORES.
 + * @note    The default is @p FALSE. Enable this if you have special
 + *          requirements.
 + * @note    Requires @p CH_CFG_USE_SEMAPHORES.
   */
 -#if !defined(CH_USE_SEMAPHORES_PRIORITY) || defined(__DOXYGEN__)
 -#define CH_USE_SEMAPHORES_PRIORITY      FALSE
 -#endif
 +#define CH_CFG_USE_SEMAPHORES_PRIORITY      FALSE
  /**
 - * @brief   Atomic semaphore API.
 - * @details If enabled then the semaphores the @p chSemSignalWait() API
 - *          is included in the kernel.
 + * @brief   Mutexes APIs.
 + * @details If enabled then the mutexes APIs are included in the kernel.
   *
   * @note    The default is @p TRUE.
 - * @note    Requires @p CH_USE_SEMAPHORES.
   */
 -#if !defined(CH_USE_SEMSW) || defined(__DOXYGEN__)
 -#define CH_USE_SEMSW                    TRUE
 -#endif
 +#define CH_CFG_USE_MUTEXES                  TRUE
  /**
 - * @brief   Mutexes APIs.
 - * @details If enabled then the mutexes APIs are included in the kernel.
 + * @brief   Enables recursive behavior on mutexes.
 + * @note    Recursive mutexes are heavier and have an increased
 + *          memory footprint.
   *
 - * @note    The default is @p TRUE.
 + * @note    The default is @p FALSE.
 + * @note    Requires @p CH_CFG_USE_MUTEXES.
   */
 -#if !defined(CH_USE_MUTEXES) || defined(__DOXYGEN__)
 -#define CH_USE_MUTEXES                  TRUE
 -#endif
 +#define CH_CFG_USE_MUTEXES_RECURSIVE        FALSE
  /**
   * @brief   Conditional Variables APIs.
 @@ -192,11 +199,9 @@   *          in the kernel.
   *
   * @note    The default is @p TRUE.
 - * @note    Requires @p CH_USE_MUTEXES.
 + * @note    Requires @p CH_CFG_USE_MUTEXES.
   */
 -#if !defined(CH_USE_CONDVARS) || defined(__DOXYGEN__)
 -#define CH_USE_CONDVARS                 TRUE
 -#endif
 +#define CH_CFG_USE_CONDVARS                 TRUE
  /**
   * @brief   Conditional Variables APIs with timeout.
 @@ -204,11 +209,9 @@   *          specification are included in the kernel.
   *
   * @note    The default is @p TRUE.
 - * @note    Requires @p CH_USE_CONDVARS.
 + * @note    Requires @p CH_CFG_USE_CONDVARS.
   */
 -#if !defined(CH_USE_CONDVARS_TIMEOUT) || defined(__DOXYGEN__)
 -#define CH_USE_CONDVARS_TIMEOUT         TRUE
 -#endif
 +#define CH_CFG_USE_CONDVARS_TIMEOUT         TRUE
  /**
   * @brief   Events Flags APIs.
 @@ -216,9 +219,7 @@   *
   * @note    The default is @p TRUE.
   */
 -#if !defined(CH_USE_EVENTS) || defined(__DOXYGEN__)
 -#define CH_USE_EVENTS                   TRUE
 -#endif
 +#define CH_CFG_USE_EVENTS                   TRUE
  /**
   * @brief   Events Flags APIs with timeout.
 @@ -226,11 +227,9 @@   *          are included in the kernel.
   *
   * @note    The default is @p TRUE.
 - * @note    Requires @p CH_USE_EVENTS.
 + * @note    Requires @p CH_CFG_USE_EVENTS.
   */
 -#if !defined(CH_USE_EVENTS_TIMEOUT) || defined(__DOXYGEN__)
 -#define CH_USE_EVENTS_TIMEOUT           TRUE
 -#endif
 +#define CH_CFG_USE_EVENTS_TIMEOUT           TRUE
  /**
   * @brief   Synchronous Messages APIs.
 @@ -239,21 +238,18 @@   *
   * @note    The default is @p TRUE.
   */
 -#if !defined(CH_USE_MESSAGES) || defined(__DOXYGEN__)
 -#define CH_USE_MESSAGES                 TRUE
 -#endif
 +#define CH_CFG_USE_MESSAGES                 TRUE
  /**
   * @brief   Synchronous Messages queuing mode.
   * @details If enabled then messages are served by priority rather than in
   *          FIFO order.
   *
 - * @note    The default is @p FALSE. Enable this if you have special requirements.
 - * @note    Requires @p CH_USE_MESSAGES.
 + * @note    The default is @p FALSE. Enable this if you have special
 + *          requirements.
 + * @note    Requires @p CH_CFG_USE_MESSAGES.
   */
 -#if !defined(CH_USE_MESSAGES_PRIORITY) || defined(__DOXYGEN__)
 -#define CH_USE_MESSAGES_PRIORITY        FALSE
 -#endif
 +#define CH_CFG_USE_MESSAGES_PRIORITY        FALSE
  /**
   * @brief   Mailboxes APIs.
 @@ -261,11 +257,9 @@   *          included in the kernel.
   *
   * @note    The default is @p TRUE.
 - * @note    Requires @p CH_USE_SEMAPHORES.
 + * @note    Requires @p CH_CFG_USE_SEMAPHORES.
   */
 -#if !defined(CH_USE_MAILBOXES) || defined(__DOXYGEN__)
 -#define CH_USE_MAILBOXES                TRUE
 -#endif
 +#define CH_CFG_USE_MAILBOXES                TRUE
  /**
   * @brief   I/O Queues APIs.
 @@ -273,9 +267,7 @@   *
   * @note    The default is @p TRUE.
   */
 -#if !defined(CH_USE_QUEUES) || defined(__DOXYGEN__)
 -#define CH_USE_QUEUES                   TRUE
 -#endif
 +#define CH_CFG_USE_QUEUES                   TRUE
  /**
   * @brief   Core Memory Manager APIs.
 @@ -284,9 +276,7 @@   *
   * @note    The default is @p TRUE.
   */
 -#if !defined(CH_USE_MEMCORE) || defined(__DOXYGEN__)
 -#define CH_USE_MEMCORE                  TRUE
 -#endif
 +#define CH_CFG_USE_MEMCORE                  TRUE
  /**
   * @brief   Heap Allocator APIs.
 @@ -294,27 +284,11 @@   *          in the kernel.
   *
   * @note    The default is @p TRUE.
 - * @note    Requires @p CH_USE_MEMCORE and either @p CH_USE_MUTEXES or
 - *          @p CH_USE_SEMAPHORES.
 + * @note    Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
 + *          @p CH_CFG_USE_SEMAPHORES.
   * @note    Mutexes are recommended.
   */
 -#if !defined(CH_USE_HEAP) || defined(__DOXYGEN__)
 -#define CH_USE_HEAP                     TRUE
 -#endif
 -
 -/**
 - * @brief   C-runtime allocator.
 - * @details If enabled the the heap allocator APIs just wrap the C-runtime
 - *          @p malloc() and @p free() functions.
 - *
 - * @note    The default is @p FALSE.
 - * @note    Requires @p CH_USE_HEAP.
 - * @note    The C-runtime may or may not require @p CH_USE_MEMCORE, see the
 - *          appropriate documentation.
 - */
 -#if !defined(CH_USE_MALLOC_HEAP) || defined(__DOXYGEN__)
 -#define CH_USE_MALLOC_HEAP              FALSE
 -#endif
 +#define CH_CFG_USE_HEAP                     TRUE
  /**
   * @brief   Memory Pools Allocator APIs.
 @@ -323,9 +297,7 @@   *
   * @note    The default is @p TRUE.
   */
 -#if !defined(CH_USE_MEMPOOLS) || defined(__DOXYGEN__)
 -#define CH_USE_MEMPOOLS                 TRUE
 -#endif
 +#define CH_CFG_USE_MEMPOOLS                 TRUE
  /**
   * @brief   Dynamic Threads APIs.
 @@ -333,12 +305,10 @@   *          in the kernel.
   *
   * @note    The default is @p TRUE.
 - * @note    Requires @p CH_USE_WAITEXIT.
 - * @note    Requires @p CH_USE_HEAP and/or @p CH_USE_MEMPOOLS.
 + * @note    Requires @p CH_CFG_USE_WAITEXIT.
 + * @note    Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
   */
 -#if !defined(CH_USE_DYNAMIC) || defined(__DOXYGEN__)
 -#define CH_USE_DYNAMIC                  TRUE
 -#endif
 +#define CH_CFG_USE_DYNAMIC                  TRUE
  /** @} */
 @@ -350,15 +320,20 @@  /*===========================================================================*/
  /**
 + * @brief   Debug option, kernel statistics.
 + *
 + * @note    The default is @p FALSE.
 + */
 +#define CH_DBG_STATISTICS                   FALSE
 +
 +/**
   * @brief   Debug option, system state check.
   * @details If enabled the correct call protocol for system APIs is checked
   *          at runtime.
   *
   * @note    The default is @p FALSE.
   */
 -#if !defined(CH_DBG_SYSTEM_STATE_CHECK) || defined(__DOXYGEN__)
 -#define CH_DBG_SYSTEM_STATE_CHECK       FALSE
 -#endif
 +#define CH_DBG_SYSTEM_STATE_CHECK           FALSE
  /**
   * @brief   Debug option, parameters checks.
 @@ -367,9 +342,7 @@   *
   * @note    The default is @p FALSE.
   */
 -#if !defined(CH_DBG_ENABLE_CHECKS) || defined(__DOXYGEN__)
 -#define CH_DBG_ENABLE_CHECKS            FALSE
 -#endif
 +#define CH_DBG_ENABLE_CHECKS                FALSE
  /**
   * @brief   Debug option, consistency checks.
 @@ -379,9 +352,7 @@   *
   * @note    The default is @p FALSE.
   */
 -#if !defined(CH_DBG_ENABLE_ASSERTS) || defined(__DOXYGEN__)
 -#define CH_DBG_ENABLE_ASSERTS           FALSE
 -#endif
 +#define CH_DBG_ENABLE_ASSERTS               FALSE
  /**
   * @brief   Debug option, trace buffer.
 @@ -390,9 +361,7 @@   *
   * @note    The default is @p FALSE.
   */
 -#if !defined(CH_DBG_ENABLE_TRACE) || defined(__DOXYGEN__)
 -#define CH_DBG_ENABLE_TRACE             FALSE
 -#endif
 +#define CH_DBG_ENABLE_TRACE                 FALSE
  /**
   * @brief   Debug option, stack checks.
 @@ -404,9 +373,7 @@   * @note    The default failure mode is to halt the system with the global
   *          @p panic_msg variable set to @p NULL.
   */
 -#if !defined(CH_DBG_ENABLE_STACK_CHECK) || defined(__DOXYGEN__)
 -#define CH_DBG_ENABLE_STACK_CHECK       FALSE
 -#endif
 +#define CH_DBG_ENABLE_STACK_CHECK           FALSE
  /**
   * @brief   Debug option, stacks initialization.
 @@ -416,22 +383,18 @@   *
   * @note    The default is @p FALSE.
   */
 -#if !defined(CH_DBG_FILL_THREADS) || defined(__DOXYGEN__)
 -#define CH_DBG_FILL_THREADS             FALSE
 -#endif
 +#define CH_DBG_FILL_THREADS                 FALSE
  /**
   * @brief   Debug option, threads profiling.
 - * @details If enabled then a field is added to the @p Thread structure that
 + * @details If enabled then a field is added to the @p thread_t structure that
   *          counts the system ticks occurred while executing the thread.
   *
 - * @note    The default is @p TRUE.
 - * @note    This debug option is defaulted to TRUE because it is required by
 - *          some test cases into the test suite.
 + * @note    The default is @p FALSE.
 + * @note    This debug option is not currently compatible with the
 + *          tickless mode.
   */
 -#if !defined(CH_DBG_THREADS_PROFILING) || defined(__DOXYGEN__)
 -#define CH_DBG_THREADS_PROFILING        TRUE
 -#endif
 +#define CH_DBG_THREADS_PROFILING            FALSE
  /** @} */
 @@ -444,12 +407,10 @@  /**
   * @brief   Threads descriptor structure extension.
 - * @details User fields added to the end of the @p Thread structure.
 + * @details User fields added to the end of the @p thread_t structure.
   */
 -#if !defined(THREAD_EXT_FIELDS) || defined(__DOXYGEN__)
 -#define THREAD_EXT_FIELDS                                                   \
 +#define CH_CFG_THREAD_EXTRA_FIELDS                                          \
    /* Add threads custom fields here.*/
 -#endif
  /**
   * @brief   Threads initialization hook.
 @@ -458,11 +419,9 @@   * @note    It is invoked from within @p chThdInit() and implicitly from all
   *          the threads creation APIs.
   */
 -#if !defined(THREAD_EXT_INIT_HOOK) || defined(__DOXYGEN__)
 -#define THREAD_EXT_INIT_HOOK(tp) {                                          \
 +#define CH_CFG_THREAD_INIT_HOOK(tp) {                                       \
    /* Add threads initialization code here.*/                                \
  }
 -#endif
  /**
   * @brief   Threads finalization hook.
 @@ -472,53 +431,61 @@   * @note    It is also invoked when the threads simply return in order to
   *          terminate.
   */
 -#if !defined(THREAD_EXT_EXIT_HOOK) || defined(__DOXYGEN__)
 -#define THREAD_EXT_EXIT_HOOK(tp) {                                          \
 +#define CH_CFG_THREAD_EXIT_HOOK(tp) {                                       \
    /* Add threads finalization code here.*/                                  \
  }
 -#endif
  /**
   * @brief   Context switch hook.
   * @details This hook is invoked just before switching between threads.
   */
 -#if !defined(THREAD_CONTEXT_SWITCH_HOOK) || defined(__DOXYGEN__)
 -#define THREAD_CONTEXT_SWITCH_HOOK(ntp, otp) {                              \
 +#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) {                              \
    /* System halt code here.*/                                               \
  }
 -#endif
 +
 +/**
 + * @brief   Idle thread enter hook.
 + * @note    This hook is invoked within a critical zone, no OS functions
 + *          should be invoked from here.
 + * @note    This macro can be used to activate a power saving mode.
 + */
 +#define CH_CFG_IDLE_ENTER_HOOK() {                                         \
 +}
 +
 +/**
 + * @brief   Idle thread leave hook.
 + * @note    This hook is invoked within a critical zone, no OS functions
 + *          should be invoked from here.
 + * @note    This macro can be used to deactivate a power saving mode.
 + */
 +#define CH_CFG_IDLE_LEAVE_HOOK() {                                         \
 +}
  /**
   * @brief   Idle Loop hook.
   * @details This hook is continuously invoked by the idle thread loop.
   */
 -#if !defined(IDLE_LOOP_HOOK) || defined(__DOXYGEN__)
 -#define IDLE_LOOP_HOOK() {                                                  \
 +#define CH_CFG_IDLE_LOOP_HOOK() {                                           \
    /* Idle loop code here.*/                                                 \
  }
 -#endif
  /**
   * @brief   System tick event hook.
   * @details This hook is invoked in the system tick handler immediately
   *          after processing the virtual timers queue.
   */
 -#if !defined(SYSTEM_TICK_EVENT_HOOK) || defined(__DOXYGEN__)
 -#define SYSTEM_TICK_EVENT_HOOK() {                                          \
 +#define CH_CFG_SYSTEM_TICK_HOOK() {                                         \
    /* System tick event code here.*/                                         \
  }
 -#endif
  /**
   * @brief   System halt hook.
   * @details This hook is invoked in case to a system halting error before
   *          the system is halted.
   */
 -#if !defined(SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
 -#define SYSTEM_HALT_HOOK() {                                                \
 +#define CH_CFG_SYSTEM_HALT_HOOK(reason) {                                   \
    /* System halt code here.*/                                               \
  }
 -#endif
  /** @} */
 diff --git a/demos/STM32/RT-STM32F030R8-NUCLEO/debug/RT-STM32F030R8-NUCLEO (OpenOCD, Flash and Run).launch b/demos/STM32/RT-STM32F030R8-NUCLEO/debug/RT-STM32F030R8-NUCLEO (OpenOCD, Flash and Run).launch new file mode 100644 index 000000000..0a8beb859 --- /dev/null +++ b/demos/STM32/RT-STM32F030R8-NUCLEO/debug/RT-STM32F030R8-NUCLEO (OpenOCD, Flash and Run).launch @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 +<launchConfiguration type="org.eclipse.cdt.debug.gdbjtag.launchConfigurationType">
 +<stringAttribute key="bad_container_name" value="\RT-STM32F030R8-NUCLEO\debug"/>
 +<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.delay" value="1"/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="true"/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="true"/>
 +<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value=""/>
 +<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
 +<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value="set remotetimeout 20
monitor reset init
monitor sleep 50
"/>
 +<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/>
 +<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="Generic TCP/IP"/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
 +<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
 +<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="3333"/>
 +<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.runCommands" value=""/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="true"/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
 +<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
 +<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
 +<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="true"/>
 +<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useRemoteTarget" value="true"/>
 +<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEBUG_NAME" value="arm-none-eabi-gdb"/>
 +<stringAttribute key="org.eclipse.cdt.debug.mi.core.commandFactory" value="Standard"/>
 +<stringAttribute key="org.eclipse.cdt.debug.mi.core.protocol" value="mi"/>
 +<booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false"/>
 +<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="arm-none-eabi-gdb"/>
 +<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
 +<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
 +<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
 +<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><contentList/>"/>
 +<stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<globalVariableList/>
"/>
 +<stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<memoryBlockExpressionList/>
"/>
 +<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="./build/ch.elf"/>
 +<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="RT-STM32F030R8-NUCLEO"/>
 +<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
 +<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="0.1984968159"/>
 +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
 +<listEntry value="/RT-STM32F030R8-NUCLEO"/>
 +</listAttribute>
 +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
 +<listEntry value="4"/>
 +</listAttribute>
 +<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
 +<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
 +</listAttribute>
 +</launchConfiguration>
 diff --git a/demos/STM32/RT-STM32F030R8-NUCLEO/halconf.h b/demos/STM32/RT-STM32F030R8-NUCLEO/halconf.h index 3858828e6..351dd61e9 100644 --- a/demos/STM32/RT-STM32F030R8-NUCLEO/halconf.h +++ b/demos/STM32/RT-STM32F030R8-NUCLEO/halconf.h @@ -1,5 +1,5 @@  /*
 -    ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006-2014 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 @@ -31,13 +31,6 @@  #include "mcuconf.h"
  /**
 - * @brief   Enables the TM subsystem.
 - */
 -#if !defined(HAL_USE_TM) || defined(__DOXYGEN__)
 -#define HAL_USE_TM                  FALSE
 -#endif
 -
 -/**
   * @brief   Enables the PAL subsystem.
   */
  #if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
 @@ -80,6 +73,13 @@  #endif
  /**
 + * @brief   Enables the I2S subsystem.
 + */
 +#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
 +#define HAL_USE_I2S                 FALSE
 +#endif
 +
 +/**
   * @brief   Enables the ICU subsystem.
   */
  #if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
 diff --git a/demos/STM32/RT-STM32F030R8-NUCLEO/main.c b/demos/STM32/RT-STM32F030R8-NUCLEO/main.c index 06e9079f0..dea524833 100644 --- a/demos/STM32/RT-STM32F030R8-NUCLEO/main.c +++ b/demos/STM32/RT-STM32F030R8-NUCLEO/main.c @@ -21,8 +21,8 @@  /*
   * Red LED blinker thread, times are in milliseconds.
   */
 -static WORKING_AREA(waThread1, 128);
 -static msg_t Thread1(void *arg) {
 +static THD_WORKING_AREA(waThread1, 128);
 +static THD_FUNCTION(Thread1, arg) {
    (void)arg;
    chRegSetThreadName("blinker");
 diff --git a/demos/STM32/RT-STM32F030R8-NUCLEO/mcuconf.h b/demos/STM32/RT-STM32F030R8-NUCLEO/mcuconf.h index 5cc8add81..b0cc0fc8d 100644 --- a/demos/STM32/RT-STM32F030R8-NUCLEO/mcuconf.h +++ b/demos/STM32/RT-STM32F030R8-NUCLEO/mcuconf.h @@ -1,5 +1,5 @@  /*
 -    ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006-2014 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 @@ -89,11 +89,12 @@   */
  #define STM32_I2C_USE_I2C1                  FALSE
  #define STM32_I2C_USE_I2C2                  FALSE
 +#define STM32_I2C_BUSY_TIMEOUT              50
  #define STM32_I2C_I2C1_IRQ_PRIORITY         3
  #define STM32_I2C_I2C2_IRQ_PRIORITY         3
  #define STM32_I2C_I2C1_DMA_PRIORITY         1
  #define STM32_I2C_I2C2_DMA_PRIORITY         1
 -#define STM32_I2C_DMA_ERROR_HOOK(i2cp)      chSysHalt()
 +#define STM32_I2C_DMA_ERROR_HOOK(i2cp)      osalSysHalt("DMA failure")
  /*
   * ICU driver system settings.
 @@ -129,7 +130,13 @@  #define STM32_SPI_SPI2_DMA_PRIORITY         1
  #define STM32_SPI_SPI1_IRQ_PRIORITY         2
  #define STM32_SPI_SPI2_IRQ_PRIORITY         2
 -#define STM32_SPI_DMA_ERROR_HOOK(spip)      chSysHalt()
 +#define STM32_SPI_DMA_ERROR_HOOK(spip)      osalSysHalt("DMA failure")
 +
 +/*
 + * ST driver system settings.
 + */
 +#define STM32_ST_IRQ_PRIORITY               2
 +#define STM32_ST_USE_TIMER                  3
  /*
   * UART driver system settings.
 @@ -140,4 +147,4 @@  #define STM32_UART_USART2_IRQ_PRIORITY      3
  #define STM32_UART_USART1_DMA_PRIORITY      0
  #define STM32_UART_USART2_DMA_PRIORITY      0
 -#define STM32_UART_DMA_ERROR_HOOK(uartp)    chSysHalt()
 +#define STM32_UART_DMA_ERROR_HOOK(uartp)    osalSysHalt("DMA failure")
 | 
