diff --git a/demos/LPC21xx/RT-LPC214x-OLIMEX/Makefile b/demos/LPC21xx/RT-LPC214x-OLIMEX/Makefile index 57620a023..9573e335c 100644 --- a/demos/LPC21xx/RT-LPC214x-OLIMEX/Makefile +++ b/demos/LPC21xx/RT-LPC214x-OLIMEX/Makefile @@ -111,6 +111,8 @@ PROJECT = ch # Imported source files and paths CHIBIOS = ../../.. +# Licensing files. +include $(CHIBIOS)/os/license/license.mk # Startup files. include $(CHIBIOS)/os/common/startup/ARM/compilers/GCC/mk/startup_lpc214x.mk # HAL-OSAL files (optional). @@ -131,19 +133,13 @@ LDSCRIPT= $(STARTUPLD)/LPC2148.ld # C sources that can be compiled in ARM or THUMB mode depending on the global # setting. -CSRC = $(STARTUPSRC) \ - $(KERNSRC) \ - $(PORTSRC) \ - $(OSALSRC) \ - $(HALSRC) \ - $(PLATFORMSRC) \ - $(BOARDSRC) \ +CSRC = $(ALLCSRC) \ $(TESTSRC) \ main.c # C++ sources that can be compiled in ARM or THUMB mode depending on the global # setting. -CPPSRC = +CPPSRC = $(ALLCPPSRC) # C sources to be compiled in ARM mode regardless of the global setting. # NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler @@ -165,14 +161,14 @@ TCSRC = # option that results in lower performance and larger code size. TCPPSRC = -# List ASM source files here -ASMSRC = -ASMXSRC = $(STARTUPASM) $(PORTASM) $(OSALASM) +# List ASM source files here. +ASMSRC = $(ALLASMSRC) -INCDIR = $(CHIBIOS)/os/license \ - $(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \ - $(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \ - $(CHIBIOS)/os/various +# List ASM with preprocessor source files here. +ASMXSRC = $(ALLXASMSRC) + +# Inclusion directories. +INCDIR = $(CONFDIR) $(ALLINC) $(TESTINC) # # Project, sources and paths diff --git a/os/common/startup/ARM/compilers/GCC/crt1.c b/os/common/startup/ARM/compilers/GCC/crt1.c index d6fb548d9..846bc1f83 100644 --- a/os/common/startup/ARM/compilers/GCC/crt1.c +++ b/os/common/startup/ARM/compilers/GCC/crt1.c @@ -24,6 +24,18 @@ #include +/** + * @brief Architecture-dependent core initialization. + * @details This hook is invoked immediately after the stack initialization + * and before the DATA and BSS segments initialization. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __core_init(void) {} + /** * @brief Early initialization. * @details This hook is invoked immediately after the stack initialization diff --git a/os/hal/ports/LPC/LPC214x/hal_spi_lld.h b/os/hal/ports/LPC/LPC214x/hal_spi_lld.h index fd9ef578a..addbfe335 100644 --- a/os/hal/ports/LPC/LPC214x/hal_spi_lld.h +++ b/os/hal/ports/LPC/LPC214x/hal_spi_lld.h @@ -31,6 +31,11 @@ /* Driver constants. */ /*===========================================================================*/ +/** + * @brief Circular mode support flag. + */ +#define SPI_SUPPORTS_CIRCULAR FALSE + /** * @brief Hardware FIFO depth. */ @@ -61,7 +66,7 @@ * @details The default action is to stop the system. */ #if !defined(LPC214x_SPI_SSP_ERROR_HOOK) || defined(__DOXYGEN__) -#define LPC214x_SPI_SSP_ERROR_HOOK() osalSysHalt() +#define LPC214x_SPI_SSP_ERROR_HOOK() osalSysHalt("overflow") #endif /*===========================================================================*/ @@ -76,122 +81,34 @@ /* Driver data structures and types. */ /*===========================================================================*/ -/** - * @brief Type of a structure representing an SPI driver. - */ -typedef struct SPIDriver SPIDriver; - -/** - * @brief SPI notification callback type. - * - * @param[in] spip pointer to the @p SPIDriver object triggering the - * callback - */ -typedef void (*spicallback_t)(SPIDriver *spip); - -/** - * @brief Driver configuration structure. - */ -typedef struct { - /** - * @brief Operation complete callback or @p NULL. - */ - spicallback_t end_cb; -#if (SPI_SELECT_MODE == SPI_SELECT_MODE_LINE) || defined(__DOXYGEN__) - /** - * @brief The chip select line. - */ - ioline_t ssline; -#endif -#if (SPI_SELECT_MODE == SPI_SELECT_MODE_PORT) || defined(__DOXYGEN__) - /** - * @brief The chip select port. - */ - ioportid_t ssport; - /** - * @brief The chip select port mask. - */ - ioportmask_t ssmask; -#endif -#if (SPI_SELECT_MODE == SPI_SELECT_MODE_PAD) || defined(__DOXYGEN__) - /** - * @brief The chip select port. - */ - ioportid_t ssport; - /** - * @brief The chip select pad number. - */ - uint_fast8_t sspad; -#endif - /* End of the mandatory fields.*/ - /** - * @brief SSP CR0 initialization data. - */ - uint16_t cr0; - /** - * @brief SSP CPSR initialization data. - */ - uint32_t cpsr; -} SPIConfig; - -/** - * @brief Structure representing a SPI driver. - */ -struct SPIDriver { - /** - * @brief Driver state. - */ - spistate_t state; - /** - * @brief Current configuration data. - */ - const SPIConfig *config; -#if SPI_USE_WAIT || defined(__DOXYGEN__) - /** - * @brief Waiting thread. - */ - Thread *thread; -#endif /* SPI_USE_WAIT */ -#if SPI_USE_MUTUAL_EXCLUSION || defined(__DOXYGEN__) -#if CH_USE_MUTEXES || defined(__DOXYGEN__) - /** - * @brief Mutex protecting the bus. - */ - Mutex mutex; -#elif CH_USE_SEMAPHORES - Semaphore semaphore; -#endif -#endif /* SPI_USE_MUTUAL_EXCLUSION */ -#if defined(SPI_DRIVER_EXT_FIELDS) - SPI_DRIVER_EXT_FIELDS -#endif - /* End of the mandatory fields.*/ - /** - * @brief Pointer to the SSP registers block. - */ - SSP *ssp; - /** - * @brief Number of bytes yet to be received. - */ - uint32_t rxcnt; - /** - * @brief Receive pointer or @p NULL. - */ - void *rxptr; - /** - * @brief Number of bytes yet to be transmitted. - */ - uint32_t txcnt; - /** - * @brief Transmit pointer or @p NULL. - */ - const void *txptr; -}; - /*===========================================================================*/ /* Driver macros. */ /*===========================================================================*/ +/** + * @brief Low level fields of the SPI driver structure. + */ +#define spi_lld_driver_fields \ + /* Pointer to the SSP registers block.*/ \ + SSP *ssp; \ + /* Number of bytes yet to be received.*/ \ + uint32_t rxcnt; \ + /* Receive pointer or @p NULL.*/ \ + void *rxptr; \ + /* Number of bytes yet to be transmitted.*/ \ + uint32_t txcnt; \ + /* Transmit pointer or @p NULL.*/ \ + const void *txptr + +/** + * @brief Low level fields of the SPI configuration structure. + */ +#define spi_lld_config_fields \ + /* SSP CR0 initialization data.*/ \ + uint16_t cr0; \ + /* SSP CPSR initialization data.*/ \ + uint32_t cpsr + /*===========================================================================*/ /* External declarations. */ /*===========================================================================*/