port to cibios 3.0
This commit is contained in:
parent
636f94d305
commit
5274ecbdc0
43
Makefile
43
Makefile
|
@ -32,7 +32,7 @@ endif
|
||||||
|
|
||||||
# Enable this if you want link time optimizations (LTO)
|
# Enable this if you want link time optimizations (LTO)
|
||||||
ifeq ($(USE_LTO),)
|
ifeq ($(USE_LTO),)
|
||||||
USE_LTO = no
|
USE_LTO = yes
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# If enabled, this option allows to compile the application in THUMB mode.
|
# If enabled, this option allows to compile the application in THUMB mode.
|
||||||
|
@ -54,6 +54,18 @@ USE_VERBOSE_COMPILE = yes
|
||||||
# Architecture or project specific options
|
# 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 = 0x400
|
||||||
|
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
|
||||||
|
|
||||||
# Enables the use of FPU on Cortex-M4 (no, softfp, hard).
|
# Enables the use of FPU on Cortex-M4 (no, softfp, hard).
|
||||||
ifeq ($(USE_FPU),)
|
ifeq ($(USE_FPU),)
|
||||||
#requred for elua
|
#requred for elua
|
||||||
|
@ -73,17 +85,16 @@ PROJECT = ch
|
||||||
CHIBIOSLUA ?= $(shell pwd)
|
CHIBIOSLUA ?= $(shell pwd)
|
||||||
# Imported source files and paths
|
# Imported source files and paths
|
||||||
CHIBIOS = $(CHIBIOSLUA)/../ChibiOS
|
CHIBIOS = $(CHIBIOSLUA)/../ChibiOS
|
||||||
include $(CHIBIOS)/boards/ST_STM32F4_DISCOVERY/board.mk
|
|
||||||
include $(CHIBIOS)/os/hal/platforms/STM32F4xx/platform.mk
|
|
||||||
include $(CHIBIOS)/os/hal/hal.mk
|
include $(CHIBIOS)/os/hal/hal.mk
|
||||||
include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F4xx/port.mk
|
include $(CHIBIOS)/os/hal/boards/ST_STM32F4_DISCOVERY/board.mk
|
||||||
include $(CHIBIOS)/os/kernel/kernel.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/STM32F4xx/platform.mk
|
||||||
include $(CHIBIOS)/test/test.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_stm32f4xx.mk
|
||||||
|
include $(CHIBIOS)/test/rt/test.mk
|
||||||
|
|
||||||
# Define linker script file here
|
# Define linker script file here
|
||||||
#LDSCRIPT= $(PORTLD)/STM32F407xG.ld
|
|
||||||
LDSCRIPT= STM32F407xG.ld
|
LDSCRIPT= STM32F407xG.ld
|
||||||
#LDSCRIPT= $(PORTLD)/STM32F407xG_CCM.ld
|
|
||||||
|
|
||||||
# C sources that can be compiled in ARM or THUMB mode depending on the global
|
# C sources that can be compiled in ARM or THUMB mode depending on the global
|
||||||
# setting.
|
# setting.
|
||||||
|
@ -91,11 +102,13 @@ CSRC = $(PORTSRC) \
|
||||||
$(KERNSRC) \
|
$(KERNSRC) \
|
||||||
$(TESTSRC) \
|
$(TESTSRC) \
|
||||||
$(HALSRC) \
|
$(HALSRC) \
|
||||||
|
$(OSALSRC) \
|
||||||
$(PLATFORMSRC) \
|
$(PLATFORMSRC) \
|
||||||
$(BOARDSRC) \
|
$(BOARDSRC) \
|
||||||
$(CHIBIOS)/os/various/devices_lib/accel/lis302dl.c \
|
$(CHIBIOS)/os/various/devices_lib/accel/lis302dl.c \
|
||||||
$(CHIBIOS)/os/various/shell.c \
|
$(CHIBIOS)/os/various/shell.c \
|
||||||
$(CHIBIOS)/os/various/chprintf.c \
|
$(CHIBIOS)/os/hal/lib/streams/memstreams.c \
|
||||||
|
$(CHIBIOS)/os/hal/lib/streams/chprintf.c \
|
||||||
usbcfg.c main.c
|
usbcfg.c main.c
|
||||||
|
|
||||||
# C++ sources that can be compiled in ARM or THUMB mode depending on the global
|
# C++ sources that can be compiled in ARM or THUMB mode depending on the global
|
||||||
|
@ -126,11 +139,11 @@ TCPPSRC =
|
||||||
ASMSRC = $(PORTASM) $(EXT_ASMSRC)
|
ASMSRC = $(PORTASM) $(EXT_ASMSRC)
|
||||||
|
|
||||||
INCDIR = $(PORTINC) $(KERNINC) $(TESTINC) \
|
INCDIR = $(PORTINC) $(KERNINC) $(TESTINC) \
|
||||||
$(HALINC) $(PLATFORMINC) $(BOARDINC) \
|
$(HALINC) $(OSALINC) $(PLATFORMINC) $(BOARDINC) \
|
||||||
$(CHIBIOSLUA) \
|
$(CHIBIOSLUA) \
|
||||||
$(EXT_INC) \
|
$(EXT_INC) \
|
||||||
$(CHIBIOS)/os/various/devices_lib/accel \
|
$(CHIBIOS)/os/various/devices_lib/accel \
|
||||||
$(CHIBIOS)/os/various
|
$(CHIBIOS)/os/hal/lib/streams $(CHIBIOS)/os/various $(CHIBIOS)/os
|
||||||
|
|
||||||
#
|
#
|
||||||
# Project, sources and paths
|
# Project, sources and paths
|
||||||
|
@ -153,6 +166,7 @@ LD = $(TRGT)gcc
|
||||||
#LD = $(TRGT)g++
|
#LD = $(TRGT)g++
|
||||||
CP = $(TRGT)objcopy
|
CP = $(TRGT)objcopy
|
||||||
AS = $(TRGT)gcc -x assembler-with-cpp
|
AS = $(TRGT)gcc -x assembler-with-cpp
|
||||||
|
AR = $(TRGT)ar
|
||||||
OD = $(TRGT)objdump
|
OD = $(TRGT)objdump
|
||||||
SZ = $(TRGT)size
|
SZ = $(TRGT)size
|
||||||
HEX = $(CP) -O ihex
|
HEX = $(CP) -O ihex
|
||||||
|
@ -179,7 +193,7 @@ CPPWARN = -Wall -Wextra
|
||||||
#
|
#
|
||||||
|
|
||||||
# List all default C defines here, like -D_DEBUG=1
|
# List all default C defines here, like -D_DEBUG=1
|
||||||
DDEFS = -DELUA_CPU_HEADER="\"cpu_chibios_cpu.h\"" -DELUA_BOARD_HEADER="\"board_stm32f4chibios.h\"" -DUSE_GIT_REVISION -DELUA_CPU=CHIBIOS_CPU -DELUA_BOARD=STM32F4CHIBIOS -DELUA_PLATFORM=CHIBIOS -D__BUFSIZ__=128 -DELUA_CPU_CHIBIOS_CPU -DELUA_BOARD_STM32F4CHIBIOS -DELUA_PLATFORM_CHIBIOS -DLUA_PACK_VALUE -DELUA_ENDIAN_LITTLE -DLUA_OPTIMIZE_MEMORY=2 -DFORCHIBIOS_CPU
|
DDEFS += -DELUA_CPU_HEADER="\"cpu_chibios_cpu.h\"" -DELUA_BOARD_HEADER="\"board_stm32f4chibios.h\"" -DUSE_GIT_REVISION -DELUA_CPU=CHIBIOS_CPU -DELUA_BOARD=STM32F4CHIBIOS -DELUA_PLATFORM=CHIBIOS -D__BUFSIZ__=128 -DELUA_CPU_CHIBIOS_CPU -DELUA_BOARD_STM32F4CHIBIOS -DELUA_PLATFORM_CHIBIOS -DLUA_PACK_VALUE -DELUA_ENDIAN_LITTLE -DLUA_OPTIMIZE_MEMORY=2 -DFORCHIBIOS_CPU
|
||||||
DDEFS += -DUSE_MULTIPLE_ALLOCATOR -DCHPRINTF_USE_FLOAT=TRUE
|
DDEFS += -DUSE_MULTIPLE_ALLOCATOR -DCHPRINTF_USE_FLOAT=TRUE
|
||||||
#~ DDEFS += -DUSE_SIMPLE_ALLOCATOR
|
#~ DDEFS += -DUSE_SIMPLE_ALLOCATOR
|
||||||
|
|
||||||
|
@ -222,11 +236,8 @@ ULIBS =
|
||||||
# End of user defines
|
# End of user defines
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
#RULESPATH = $(CHIBIOS)/os/ports/GCC/ARMCMx
|
#RULESPATH = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC
|
||||||
#include $(RULESPATH)/rules.mk
|
#include $(RULESPATH)/rules.mk
|
||||||
include $(CHIBIOSLUA)/ext/ext.mk
|
include $(CHIBIOSLUA)/ext/ext.mk
|
||||||
|
|
||||||
include ./rules.mk
|
include ./rules.mk
|
||||||
|
|
||||||
|
|
||||||
######## resource usage show ################
|
|
||||||
|
|
|
@ -1,108 +0,0 @@
|
||||||
/*
|
|
||||||
ChibiOS/RT - Copyright (C) 2006-2013 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.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "ch.h"
|
|
||||||
#include "hal.h"
|
|
||||||
|
|
||||||
#if HAL_USE_PAL || defined(__DOXYGEN__)
|
|
||||||
/**
|
|
||||||
* @brief PAL setup.
|
|
||||||
* @details Digital I/O ports static configuration as defined in @p board.h.
|
|
||||||
* This variable is used by the HAL when initializing the PAL driver.
|
|
||||||
*/
|
|
||||||
const PALConfig pal_default_config =
|
|
||||||
{
|
|
||||||
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,
|
|
||||||
VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
|
|
||||||
{VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,
|
|
||||||
VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH},
|
|
||||||
{VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,
|
|
||||||
VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH},
|
|
||||||
{VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,
|
|
||||||
VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH},
|
|
||||||
{VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,
|
|
||||||
VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH},
|
|
||||||
{VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,
|
|
||||||
VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH},
|
|
||||||
{VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,
|
|
||||||
VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH},
|
|
||||||
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,
|
|
||||||
VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
|
|
||||||
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,
|
|
||||||
VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH}
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Early initialization code.
|
|
||||||
* @details This initialization must be performed just after stack setup
|
|
||||||
* and before any other initialization.
|
|
||||||
*/
|
|
||||||
void __early_init(void) {
|
|
||||||
|
|
||||||
stm32_clock_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
#if HAL_USE_SDC || defined(__DOXYGEN__)
|
|
||||||
/**
|
|
||||||
* @brief SDC card detection.
|
|
||||||
*/
|
|
||||||
bool_t sdc_lld_is_card_inserted(SDCDriver *sdcp) {
|
|
||||||
|
|
||||||
(void)sdcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief SDC card write protection detection.
|
|
||||||
*/
|
|
||||||
bool_t sdc_lld_is_write_protected(SDCDriver *sdcp) {
|
|
||||||
|
|
||||||
(void)sdcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
#endif /* HAL_USE_SDC */
|
|
||||||
|
|
||||||
#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
|
|
||||||
/**
|
|
||||||
* @brief MMC_SPI card detection.
|
|
||||||
*/
|
|
||||||
bool_t mmc_lld_is_card_inserted(MMCDriver *mmcp) {
|
|
||||||
|
|
||||||
(void)mmcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief MMC_SPI card write protection detection.
|
|
||||||
*/
|
|
||||||
bool_t mmc_lld_is_write_protected(MMCDriver *mmcp) {
|
|
||||||
|
|
||||||
(void)mmcp;
|
|
||||||
/* TODO: Fill the implementation.*/
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Board-specific initialization code.
|
|
||||||
* @todo Add your board-specific code, if any.
|
|
||||||
*/
|
|
||||||
void boardInit(void) {
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +0,0 @@
|
||||||
# List of all the board related files.
|
|
||||||
BOARDSRC = ${CHIBIOS}/boards/ST_STM32F4_DISCOVERY/board.c
|
|
||||||
|
|
||||||
# Required include directories
|
|
||||||
BOARDINC = ${CHIBIOS}/boards/ST_STM32F4_DISCOVERY
|
|
File diff suppressed because it is too large
Load Diff
287
chconf.h
287
chconf.h
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
|
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with 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 32
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief System tick frequency.
|
* @brief System tick frequency.
|
||||||
* @details Frequency of the system timer that drives the system ticks. This
|
* @details Frequency of the system timer that drives the system ticks. This
|
||||||
* setting also defines the system tick time unit.
|
* setting also defines the system tick time unit.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_FREQUENCY) || defined(__DOXYGEN__)
|
#define CH_CFG_ST_FREQUENCY 10000
|
||||||
#define CH_FREQUENCY 1000
|
|
||||||
#endif
|
/**
|
||||||
|
* @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.
|
* @brief Round robin interval.
|
||||||
|
@ -51,13 +74,12 @@
|
||||||
* disables the preemption for threads with equal priority and the
|
* disables the preemption for threads with equal priority and the
|
||||||
* round robin becomes cooperative. Note that higher priority
|
* round robin becomes cooperative. Note that higher priority
|
||||||
* threads can still preempt, the kernel is always preemptive.
|
* threads can still preempt, the kernel is always preemptive.
|
||||||
*
|
|
||||||
* @note Disabling the round robin preemption makes the kernel more compact
|
* @note Disabling the round robin preemption makes the kernel more compact
|
||||||
* and generally faster.
|
* 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_CFG_TIME_QUANTUM 0
|
||||||
#define CH_TIME_QUANTUM 20
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Managed RAM size.
|
* @brief Managed RAM size.
|
||||||
|
@ -68,28 +90,17 @@
|
||||||
*
|
*
|
||||||
* @note In order to let the OS manage the whole RAM the linker script must
|
* @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.
|
* 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_CFG_MEMCORE_SIZE 0
|
||||||
#define CH_MEMCORE_SIZE 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Idle thread automatic spawn suppression.
|
* @brief Idle thread automatic spawn suppression.
|
||||||
* @details When this option is activated the function @p chSysInit()
|
* @details When this option is activated the function @p chSysInit()
|
||||||
* does not spawn the idle thread automatically. The application has
|
* does not spawn the idle thread. The application @p main()
|
||||||
* then the responsibility to do one of the following:
|
* function becomes the idle thread and must implement an
|
||||||
* - Spawn a custom idle thread at priority @p IDLEPRIO.
|
* infinite loop. */
|
||||||
* - Change the main() thread priority to @p IDLEPRIO then enter
|
#define CH_CFG_NO_IDLE_THREAD FALSE
|
||||||
* 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
|
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
@ -108,9 +119,7 @@
|
||||||
* @note This is not related to the compiler optimization options.
|
* @note This is not related to the compiler optimization options.
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_OPTIMIZE_SPEED) || defined(__DOXYGEN__)
|
#define CH_CFG_OPTIMIZE_SPEED TRUE
|
||||||
#define CH_OPTIMIZE_SPEED TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
@ -121,15 +130,22 @@
|
||||||
*/
|
*/
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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 TRUE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Threads registry APIs.
|
* @brief Threads registry APIs.
|
||||||
* @details If enabled then the registry APIs are included in the kernel.
|
* @details If enabled then the registry APIs are included in the kernel.
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_REGISTRY) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_REGISTRY TRUE
|
||||||
#define CH_USE_REGISTRY TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Threads synchronization APIs.
|
* @brief Threads synchronization APIs.
|
||||||
|
@ -138,9 +154,7 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_WAITEXIT) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_WAITEXIT TRUE
|
||||||
#define CH_USE_WAITEXIT TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Semaphores APIs.
|
* @brief Semaphores APIs.
|
||||||
|
@ -148,33 +162,18 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_SEMAPHORES) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_SEMAPHORES TRUE
|
||||||
#define CH_USE_SEMAPHORES TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Semaphores queuing mode.
|
* @brief Semaphores queuing mode.
|
||||||
* @details If enabled then the threads are enqueued on semaphores by
|
* @details If enabled then the threads are enqueued on semaphores by
|
||||||
* priority rather than in FIFO order.
|
* priority rather than in FIFO order.
|
||||||
*
|
*
|
||||||
* @note The default is @p FALSE. Enable this if you have special requirements.
|
* @note The default is @p FALSE. Enable this if you have special
|
||||||
* @note Requires @p CH_USE_SEMAPHORES.
|
* requirements.
|
||||||
|
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_SEMAPHORES_PRIORITY) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE
|
||||||
#define CH_USE_SEMAPHORES_PRIORITY FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Atomic semaphore API.
|
|
||||||
* @details If enabled then the semaphores the @p chSemSignalWait() API
|
|
||||||
* is 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
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Mutexes APIs.
|
* @brief Mutexes APIs.
|
||||||
|
@ -182,9 +181,17 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_MUTEXES) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_MUTEXES TRUE
|
||||||
#define CH_USE_MUTEXES TRUE
|
|
||||||
#endif
|
/**
|
||||||
|
* @brief Enables recursive behavior on mutexes.
|
||||||
|
* @note Recursive mutexes are heavier and have an increased
|
||||||
|
* memory footprint.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE.
|
||||||
|
* @note Requires @p CH_CFG_USE_MUTEXES.
|
||||||
|
*/
|
||||||
|
#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Conditional Variables APIs.
|
* @brief Conditional Variables APIs.
|
||||||
|
@ -192,11 +199,9 @@
|
||||||
* in the kernel.
|
* in the kernel.
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @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_CFG_USE_CONDVARS TRUE
|
||||||
#define CH_USE_CONDVARS TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Conditional Variables APIs with timeout.
|
* @brief Conditional Variables APIs with timeout.
|
||||||
|
@ -204,11 +209,9 @@
|
||||||
* specification are included in the kernel.
|
* specification are included in the kernel.
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @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_CFG_USE_CONDVARS_TIMEOUT TRUE
|
||||||
#define CH_USE_CONDVARS_TIMEOUT TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Events Flags APIs.
|
* @brief Events Flags APIs.
|
||||||
|
@ -216,9 +219,7 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_EVENTS) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_EVENTS TRUE
|
||||||
#define CH_USE_EVENTS TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Events Flags APIs with timeout.
|
* @brief Events Flags APIs with timeout.
|
||||||
|
@ -226,11 +227,9 @@
|
||||||
* are included in the kernel.
|
* are included in the kernel.
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @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_CFG_USE_EVENTS_TIMEOUT TRUE
|
||||||
#define CH_USE_EVENTS_TIMEOUT TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Synchronous Messages APIs.
|
* @brief Synchronous Messages APIs.
|
||||||
|
@ -239,21 +238,18 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_MESSAGES) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_MESSAGES TRUE
|
||||||
#define CH_USE_MESSAGES TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Synchronous Messages queuing mode.
|
* @brief Synchronous Messages queuing mode.
|
||||||
* @details If enabled then messages are served by priority rather than in
|
* @details If enabled then messages are served by priority rather than in
|
||||||
* FIFO order.
|
* FIFO order.
|
||||||
*
|
*
|
||||||
* @note The default is @p FALSE. Enable this if you have special requirements.
|
* @note The default is @p FALSE. Enable this if you have special
|
||||||
* @note Requires @p CH_USE_MESSAGES.
|
* requirements.
|
||||||
|
* @note Requires @p CH_CFG_USE_MESSAGES.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_MESSAGES_PRIORITY) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_MESSAGES_PRIORITY FALSE
|
||||||
#define CH_USE_MESSAGES_PRIORITY FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Mailboxes APIs.
|
* @brief Mailboxes APIs.
|
||||||
|
@ -261,11 +257,9 @@
|
||||||
* included in the kernel.
|
* included in the kernel.
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @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_CFG_USE_MAILBOXES TRUE
|
||||||
#define CH_USE_MAILBOXES TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief I/O Queues APIs.
|
* @brief I/O Queues APIs.
|
||||||
|
@ -273,9 +267,7 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_QUEUES) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_QUEUES TRUE
|
||||||
#define CH_USE_QUEUES TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Core Memory Manager APIs.
|
* @brief Core Memory Manager APIs.
|
||||||
|
@ -284,9 +276,7 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_MEMCORE) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_MEMCORE TRUE
|
||||||
#define CH_USE_MEMCORE TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Heap Allocator APIs.
|
* @brief Heap Allocator APIs.
|
||||||
|
@ -294,27 +284,11 @@
|
||||||
* in the kernel.
|
* in the kernel.
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
* @note Requires @p CH_USE_MEMCORE and either @p CH_USE_MUTEXES or
|
* @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
|
||||||
* @p CH_USE_SEMAPHORES.
|
* @p CH_CFG_USE_SEMAPHORES.
|
||||||
* @note Mutexes are recommended.
|
* @note Mutexes are recommended.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_HEAP) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_HEAP TRUE
|
||||||
#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
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Memory Pools Allocator APIs.
|
* @brief Memory Pools Allocator APIs.
|
||||||
|
@ -323,9 +297,7 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_MEMPOOLS) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_MEMPOOLS TRUE
|
||||||
#define CH_USE_MEMPOOLS TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Dynamic Threads APIs.
|
* @brief Dynamic Threads APIs.
|
||||||
|
@ -333,12 +305,10 @@
|
||||||
* in the kernel.
|
* in the kernel.
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
* @note Requires @p CH_USE_WAITEXIT.
|
* @note Requires @p CH_CFG_USE_WAITEXIT.
|
||||||
* @note Requires @p CH_USE_HEAP and/or @p CH_USE_MEMPOOLS.
|
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_USE_DYNAMIC) || defined(__DOXYGEN__)
|
#define CH_CFG_USE_DYNAMIC TRUE
|
||||||
#define CH_USE_DYNAMIC TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
@ -349,6 +319,13 @@
|
||||||
*/
|
*/
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Debug option, kernel statistics.
|
||||||
|
*
|
||||||
|
* @note The default is @p FALSE.
|
||||||
|
*/
|
||||||
|
#define CH_DBG_STATISTICS FALSE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Debug option, system state check.
|
* @brief Debug option, system state check.
|
||||||
* @details If enabled the correct call protocol for system APIs is checked
|
* @details If enabled the correct call protocol for system APIs is checked
|
||||||
|
@ -356,9 +333,7 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p FALSE.
|
* @note The default is @p FALSE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_DBG_SYSTEM_STATE_CHECK) || defined(__DOXYGEN__)
|
|
||||||
#define CH_DBG_SYSTEM_STATE_CHECK FALSE
|
#define CH_DBG_SYSTEM_STATE_CHECK FALSE
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Debug option, parameters checks.
|
* @brief Debug option, parameters checks.
|
||||||
|
@ -367,9 +342,7 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p FALSE.
|
* @note The default is @p FALSE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_DBG_ENABLE_CHECKS) || defined(__DOXYGEN__)
|
|
||||||
#define CH_DBG_ENABLE_CHECKS FALSE
|
#define CH_DBG_ENABLE_CHECKS FALSE
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Debug option, consistency checks.
|
* @brief Debug option, consistency checks.
|
||||||
|
@ -379,9 +352,7 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p FALSE.
|
* @note The default is @p FALSE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_DBG_ENABLE_ASSERTS) || defined(__DOXYGEN__)
|
|
||||||
#define CH_DBG_ENABLE_ASSERTS FALSE
|
#define CH_DBG_ENABLE_ASSERTS FALSE
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Debug option, trace buffer.
|
* @brief Debug option, trace buffer.
|
||||||
|
@ -390,9 +361,7 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p FALSE.
|
* @note The default is @p FALSE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_DBG_ENABLE_TRACE) || defined(__DOXYGEN__)
|
|
||||||
#define CH_DBG_ENABLE_TRACE FALSE
|
#define CH_DBG_ENABLE_TRACE FALSE
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Debug option, stack checks.
|
* @brief Debug option, stack checks.
|
||||||
|
@ -404,9 +373,7 @@
|
||||||
* @note The default failure mode is to halt the system with the global
|
* @note The default failure mode is to halt the system with the global
|
||||||
* @p panic_msg variable set to @p NULL.
|
* @p panic_msg variable set to @p NULL.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_DBG_ENABLE_STACK_CHECK) || defined(__DOXYGEN__)
|
|
||||||
#define CH_DBG_ENABLE_STACK_CHECK FALSE
|
#define CH_DBG_ENABLE_STACK_CHECK FALSE
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Debug option, stacks initialization.
|
* @brief Debug option, stacks initialization.
|
||||||
|
@ -416,22 +383,18 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p FALSE.
|
* @note The default is @p FALSE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_DBG_FILL_THREADS) || defined(__DOXYGEN__)
|
|
||||||
#define CH_DBG_FILL_THREADS FALSE
|
#define CH_DBG_FILL_THREADS FALSE
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Debug option, threads profiling.
|
* @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.
|
* counts the system ticks occurred while executing the thread.
|
||||||
*
|
*
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p FALSE.
|
||||||
* @note This debug option is defaulted to TRUE because it is required by
|
* @note This debug option is not currently compatible with the
|
||||||
* some test cases into the test suite.
|
* tickless mode.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_DBG_THREADS_PROFILING) || defined(__DOXYGEN__)
|
#define CH_DBG_THREADS_PROFILING FALSE
|
||||||
#define CH_DBG_THREADS_PROFILING TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
@ -444,12 +407,10 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Threads descriptor structure extension.
|
* @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 CH_CFG_THREAD_EXTRA_FIELDS \
|
||||||
#define THREAD_EXT_FIELDS \
|
|
||||||
/* Add threads custom fields here.*/
|
/* Add threads custom fields here.*/
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Threads initialization hook.
|
* @brief Threads initialization hook.
|
||||||
|
@ -458,11 +419,9 @@
|
||||||
* @note It is invoked from within @p chThdInit() and implicitly from all
|
* @note It is invoked from within @p chThdInit() and implicitly from all
|
||||||
* the threads creation APIs.
|
* the threads creation APIs.
|
||||||
*/
|
*/
|
||||||
#if !defined(THREAD_EXT_INIT_HOOK) || defined(__DOXYGEN__)
|
#define CH_CFG_THREAD_INIT_HOOK(tp) { \
|
||||||
#define THREAD_EXT_INIT_HOOK(tp) { \
|
|
||||||
/* Add threads initialization code here.*/ \
|
/* Add threads initialization code here.*/ \
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Threads finalization hook.
|
* @brief Threads finalization hook.
|
||||||
|
@ -472,53 +431,61 @@
|
||||||
* @note It is also invoked when the threads simply return in order to
|
* @note It is also invoked when the threads simply return in order to
|
||||||
* terminate.
|
* terminate.
|
||||||
*/
|
*/
|
||||||
#if !defined(THREAD_EXT_EXIT_HOOK) || defined(__DOXYGEN__)
|
#define CH_CFG_THREAD_EXIT_HOOK(tp) { \
|
||||||
#define THREAD_EXT_EXIT_HOOK(tp) { \
|
|
||||||
/* Add threads finalization code here.*/ \
|
/* Add threads finalization code here.*/ \
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Context switch hook.
|
* @brief Context switch hook.
|
||||||
* @details This hook is invoked just before switching between threads.
|
* @details This hook is invoked just before switching between threads.
|
||||||
*/
|
*/
|
||||||
#if !defined(THREAD_CONTEXT_SWITCH_HOOK) || defined(__DOXYGEN__)
|
#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \
|
||||||
#define THREAD_CONTEXT_SWITCH_HOOK(ntp, otp) { \
|
/* Context switch code here.*/ \
|
||||||
/* System halt code here.*/ \
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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() { \
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Idle Loop hook.
|
* @brief Idle Loop hook.
|
||||||
* @details This hook is continuously invoked by the idle thread loop.
|
* @details This hook is continuously invoked by the idle thread loop.
|
||||||
*/
|
*/
|
||||||
#if !defined(IDLE_LOOP_HOOK) || defined(__DOXYGEN__)
|
#define CH_CFG_IDLE_LOOP_HOOK() { \
|
||||||
#define IDLE_LOOP_HOOK() { \
|
|
||||||
/* Idle loop code here.*/ \
|
/* Idle loop code here.*/ \
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief System tick event hook.
|
* @brief System tick event hook.
|
||||||
* @details This hook is invoked in the system tick handler immediately
|
* @details This hook is invoked in the system tick handler immediately
|
||||||
* after processing the virtual timers queue.
|
* after processing the virtual timers queue.
|
||||||
*/
|
*/
|
||||||
#if !defined(SYSTEM_TICK_EVENT_HOOK) || defined(__DOXYGEN__)
|
#define CH_CFG_SYSTEM_TICK_HOOK() { \
|
||||||
#define SYSTEM_TICK_EVENT_HOOK() { \
|
|
||||||
/* System tick event code here.*/ \
|
/* System tick event code here.*/ \
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief System halt hook.
|
* @brief System halt hook.
|
||||||
* @details This hook is invoked in case to a system halting error before
|
* @details This hook is invoked in case to a system halting error before
|
||||||
* the system is halted.
|
* the system is halted.
|
||||||
*/
|
*/
|
||||||
#if !defined(SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||||
#define SYSTEM_HALT_HOOK() { \
|
|
||||||
/* System halt code here.*/ \
|
/* System halt code here.*/ \
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
|
|
@ -94,8 +94,7 @@ ELUA_SHELL_CSRC = $(ELUA)/src/shell/shell.c \
|
||||||
$(ELUA)/src/shell/shell_mkdir.c \
|
$(ELUA)/src/shell/shell_mkdir.c \
|
||||||
$(ELUA)/src/shell/shell_recv.c \
|
$(ELUA)/src/shell/shell_recv.c \
|
||||||
$(ELUA)/src/shell/shell_ver.c \
|
$(ELUA)/src/shell/shell_ver.c \
|
||||||
$(ELUA)/src/shell/shell_wofmt.c \
|
$(ELUA)/src/shell/shell_wofmt.c
|
||||||
$(ELUA)/src/shell/vi.c
|
|
||||||
|
|
||||||
|
|
||||||
ELUA_uIP_CSRC = $(ELUA)/src/uip/uip_arp.c \
|
ELUA_uIP_CSRC = $(ELUA)/src/uip/uip_arp.c \
|
||||||
|
@ -112,7 +111,6 @@ ELUA_PLATFORM1_CSRC = $(CHIBIOSLUA)/ext/platform_chibios/platform.c
|
||||||
ELUA_PLATFORM2_CSRC = $(ELUA)/src/platform/arm_cortex_interrupts.c
|
ELUA_PLATFORM2_CSRC = $(ELUA)/src/platform/arm_cortex_interrupts.c
|
||||||
|
|
||||||
ELUA_EXT_CSRC = $(CHIBIOSLUA)/ext/elua_chibios_mod.c \
|
ELUA_EXT_CSRC = $(CHIBIOSLUA)/ext/elua_chibios_mod.c \
|
||||||
$(CHIBIOSLUA)/ext/elua_zumo.c \
|
|
||||||
$(CHIBIOSLUA)/ext/ch_lua.c
|
$(CHIBIOSLUA)/ext/ch_lua.c
|
||||||
|
|
||||||
# $(ELUA)/src/platform/arm_utils.s \
|
# $(ELUA)/src/platform/arm_utils.s \
|
||||||
|
@ -133,7 +131,7 @@ ELUA_SHELL_OBJS = $(addprefix $(BUILDDIR)/obj/, $(notdir $(ELUA_SHELL_CSRC:.c=
|
||||||
ELUA_uIP_OBJS = $(addprefix $(BUILDDIR)/obj/, $(notdir $(ELUA_uIP_CSRC:.c=.o.elua_uip)))
|
ELUA_uIP_OBJS = $(addprefix $(BUILDDIR)/obj/, $(notdir $(ELUA_uIP_CSRC:.c=.o.elua_uip)))
|
||||||
ELUA_PLATFORM_OBJS= $(addprefix $(BUILDDIR)/obj/, $(notdir $(ELUA_PLATFORM_CSRC:.c=.o.elua_platform)))
|
ELUA_PLATFORM_OBJS= $(addprefix $(BUILDDIR)/obj/, $(notdir $(ELUA_PLATFORM_CSRC:.c=.o.elua_platform)))
|
||||||
ELUA_FATFS_OBJS= $(addprefix $(BUILDDIR)/obj/, $(notdir $(ELUA_FATFS_CSRC:.c=.o.elua_fatfs)))
|
ELUA_FATFS_OBJS= $(addprefix $(BUILDDIR)/obj/, $(notdir $(ELUA_FATFS_CSRC:.c=.o.elua_fatfs)))
|
||||||
ELUA_EXT_OBJS= $(BUILDDIR)/obj/ch_lua.o.ext $(BUILDDIR)/obj/elua_chibios_mod.o.ext $(BUILDDIR)/obj/elua_zumo.o.ext $(BUILDDIR)/obj/platform.o.PLATFORM1 $(BUILDDIR)/obj/arm_cortex_interrupts.o.PLATFORM2
|
ELUA_EXT_OBJS= $(BUILDDIR)/obj/ch_lua.o.ext $(BUILDDIR)/obj/elua_chibios_mod.o.ext $(BUILDDIR)/obj/platform.o.PLATFORM1 $(BUILDDIR)/obj/arm_cortex_interrupts.o.PLATFORM2
|
||||||
|
|
||||||
|
|
||||||
EXT_INC = $(CHIBIOSLUA)/ext \
|
EXT_INC = $(CHIBIOSLUA)/ext \
|
||||||
|
@ -152,6 +150,7 @@ EXT_ASMSRC = $(ELUA)/src/platform/cortex_utils.s
|
||||||
|
|
||||||
EXT_PREPROCESS_SHELL=$(warning EXT_PREPROCESS_SHELL) \
|
EXT_PREPROCESS_SHELL=$(warning EXT_PREPROCESS_SHELL) \
|
||||||
$(shell ln -s $(CHIBIOSLUA)/ext/stm32f4chibios.lua $(ELUA)/boards/known/stm32f4chibios.lua 2>/dev/null) \
|
$(shell ln -s $(CHIBIOSLUA)/ext/stm32f4chibios.lua $(ELUA)/boards/known/stm32f4chibios.lua 2>/dev/null) \
|
||||||
|
$(shell ls $(ELUA)/src/platform/chibios >/dev/null 2>&1 || ln -s $(CHIBIOSLUA)/ext/platform_chibios $(ELUA)/src/platform/chibios >/dev/null 2>&1) \
|
||||||
$(shell (cd ${ELUA} ; patch -N <$(CHIBIOSLUA)/ext/build_data.lua.diff ; ./build_elua.lua board=stm32f4chibios config_only=true; ./build_elua.lua board=stm32f4chibios) >>./build.log 2>&1)
|
$(shell (cd ${ELUA} ; patch -N <$(CHIBIOSLUA)/ext/build_data.lua.diff ; ./build_elua.lua board=stm32f4chibios config_only=true; ./build_elua.lua board=stm32f4chibios) >>./build.log 2>&1)
|
||||||
|
|
||||||
#main link with rules.mk
|
#main link with rules.mk
|
||||||
|
|
|
@ -15,7 +15,7 @@ end
|
||||||
function get_platform_modules( board, cpu )
|
function get_platform_modules( board, cpu )
|
||||||
return {
|
return {
|
||||||
thd = { lib = '"thd"' },
|
thd = { lib = '"thd"' },
|
||||||
zumo = { lib = '"zumo"' }
|
--~ zumo = { lib = '"zumo"' }
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -34,14 +34,14 @@ int platform_init()
|
||||||
|
|
||||||
// ****************************************************************************
|
// ****************************************************************************
|
||||||
// PIO functions
|
// PIO functions
|
||||||
GPIO_TypeDef * const pio_port[] = { GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH, GPIOI };
|
stm32_gpio_t * const pio_port[] = { GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH, GPIOI };
|
||||||
uint16_t const ignore_pins[] = { 1<<2|1<<3|1<<11|1<<12, /*A2,A3,A11,A12 UART2 RX,TX,GPIOA_OTG_FS_DM,GPIOA_OTG_FS_DP */
|
uint16_t const ignore_pins[] = { 1<<2|1<<3|1<<11|1<<12, /*A2,A3,A11,A12 UART2 RX,TX,GPIOA_OTG_FS_DM,GPIOA_OTG_FS_DP */
|
||||||
0,0,0,0,0,0,0,0,0};
|
0,0,0,0,0,0,0,0,0};
|
||||||
|
|
||||||
pio_type platform_pio_op( unsigned port, pio_type pinmask, int op )
|
pio_type platform_pio_op( unsigned port, pio_type pinmask, int op )
|
||||||
{
|
{
|
||||||
pio_type retval = 1;//ok , 0-error
|
pio_type retval = 1;//ok , 0-error
|
||||||
GPIO_TypeDef * target_port = pio_port[ port ];
|
stm32_gpio_t * target_port = pio_port[ port ];
|
||||||
uint16_t new_state = 0xffff;
|
uint16_t new_state = 0xffff;
|
||||||
|
|
||||||
switch( op )
|
switch( op )
|
||||||
|
@ -169,19 +169,19 @@ timer_data_type platform_s_timer_op( unsigned id, int op, timer_data_type data )
|
||||||
{
|
{
|
||||||
case PLATFORM_TIMER_OP_START:
|
case PLATFORM_TIMER_OP_START:
|
||||||
//~ TIM_SetCounter( ptimer, 0 );
|
//~ TIM_SetCounter( ptimer, 0 );
|
||||||
res = chTimeNow();
|
res = chVTGetSystemTime();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PLATFORM_TIMER_OP_READ:
|
case PLATFORM_TIMER_OP_READ:
|
||||||
res = chTimeNow();//TIM_GetCounter( ptimer );
|
res = chVTGetSystemTime();//TIM_GetCounter( ptimer );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PLATFORM_TIMER_OP_SET_CLOCK:
|
case PLATFORM_TIMER_OP_SET_CLOCK:
|
||||||
res = CH_FREQUENCY;//platform_timer_set_clock( id, data );
|
res = CH_CFG_ST_FREQUENCY;//platform_timer_set_clock( id, data );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PLATFORM_TIMER_OP_GET_CLOCK:
|
case PLATFORM_TIMER_OP_GET_CLOCK:
|
||||||
res = CH_FREQUENCY;//platform_timer_get_clock( id );
|
res = CH_CFG_ST_FREQUENCY;//platform_timer_get_clock( id );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PLATFORM_TIMER_OP_GET_MAX_CNT:
|
case PLATFORM_TIMER_OP_GET_MAX_CNT:
|
||||||
|
@ -195,7 +195,7 @@ timer_data_type platform_s_timer_op( unsigned id, int op, timer_data_type data )
|
||||||
|
|
||||||
u64 platform_timer_sys_raw_read()
|
u64 platform_timer_sys_raw_read()
|
||||||
{
|
{
|
||||||
return MS2ST(chTimeNow());
|
return MS2ST(chVTGetSystemTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
void platform_timer_sys_disable_int()
|
void platform_timer_sys_disable_int()
|
||||||
|
@ -210,5 +210,5 @@ void platform_timer_sys_enable_int()
|
||||||
|
|
||||||
timer_data_type platform_timer_read_sys()
|
timer_data_type platform_timer_read_sys()
|
||||||
{
|
{
|
||||||
return MS2ST(chTimeNow());
|
return MS2ST(chVTGetSystemTime());
|
||||||
}
|
}
|
||||||
|
|
31
halconf.h
31
halconf.h
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
|
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
@ -30,13 +30,6 @@
|
||||||
|
|
||||||
#include "mcuconf.h"
|
#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.
|
* @brief Enables the PAL subsystem.
|
||||||
*/
|
*/
|
||||||
|
@ -79,6 +72,13 @@
|
||||||
#define HAL_USE_I2C FALSE
|
#define HAL_USE_I2C FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the I2S subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_I2S FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Enables the ICU subsystem.
|
* @brief Enables the ICU subsystem.
|
||||||
*/
|
*/
|
||||||
|
@ -287,6 +287,21 @@
|
||||||
#define SERIAL_BUFFERS_SIZE 16
|
#define SERIAL_BUFFERS_SIZE 16
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*===========================================================================*/
|
||||||
|
/* SERIAL_USB driver related setting. */
|
||||||
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serial over USB buffers size.
|
||||||
|
* @details Configuration parameter, the buffer size must be a multiple of
|
||||||
|
* the USB data endpoint maximum packet size.
|
||||||
|
* @note The default is 64 bytes for both the transmission and receive
|
||||||
|
* buffers.
|
||||||
|
*/
|
||||||
|
#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
|
||||||
|
#define SERIAL_USB_BUFFERS_SIZE 256
|
||||||
|
#endif
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* SPI driver related settings. */
|
/* SPI driver related settings. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
44
main.c
44
main.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
|
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
@ -18,8 +18,8 @@
|
||||||
#include "hal.h"
|
#include "hal.h"
|
||||||
#include "test.h"
|
#include "test.h"
|
||||||
|
|
||||||
#include "various/chprintf.h"
|
#include "chprintf.h"
|
||||||
#include "various/shell.h" //otherwise will comcflict with elua
|
#include "various/shell.h"
|
||||||
#include "lis302dl.h"
|
#include "lis302dl.h"
|
||||||
|
|
||||||
#include "usbcfg.h"
|
#include "usbcfg.h"
|
||||||
|
@ -32,8 +32,8 @@ BaseSequentialStream *eLuaSDriver;
|
||||||
/* Command line related. */
|
/* Command line related. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
#define SHELL_WA_SIZE THD_WA_SIZE(2048)
|
#define SHELL_WA_SIZE THD_WORKING_AREA_SIZE(2048)
|
||||||
#define TEST_WA_SIZE THD_WA_SIZE(256)
|
#define TEST_WA_SIZE THD_WORKING_AREA_SIZE(256)
|
||||||
|
|
||||||
static void cmd_mem(BaseSequentialStream *chp, int argc, char *argv[]) {
|
static void cmd_mem(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
size_t n, size;
|
size_t n, size;
|
||||||
|
@ -44,40 +44,40 @@ static void cmd_mem(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
n = chHeapStatus(NULL, &size);
|
n = chHeapStatus(NULL, &size);
|
||||||
chprintf(chp, "core free memory : %u bytes\r\n", chCoreStatus());
|
chprintf(chp, "core free memory : %u bytes\r\n", chCoreGetStatusX());
|
||||||
chprintf(chp, "heap fragments : %u\r\n", n);
|
chprintf(chp, "heap fragments : %u\r\n", n);
|
||||||
chprintf(chp, "heap free total : %u bytes\r\n", size);
|
chprintf(chp, "heap free total : %u bytes\r\n", size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
static void cmd_threads(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
static const char *states[] = {THD_STATE_NAMES};
|
static const char *states[] = {CH_STATE_NAMES};
|
||||||
Thread *tp;
|
thread_t *tp;
|
||||||
|
|
||||||
(void)argv;
|
(void)argv;
|
||||||
if (argc > 0) {
|
if (argc > 0) {
|
||||||
chprintf(chp, "Usage: threads\r\n");
|
chprintf(chp, "Usage: threads\r\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
chprintf(chp, " addr stack prio refs state time\r\n");
|
chprintf(chp, " addr stack prio refs state\r\n");
|
||||||
tp = chRegFirstThread();
|
tp = chRegFirstThread();
|
||||||
do {
|
do {
|
||||||
chprintf(chp, "%.8lx %.8lx %4lu %4lu %9s %lu\r\n",
|
chprintf(chp, "%08lx %08lx %4lu %4lu %9s\r\n",
|
||||||
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
(uint32_t)tp, (uint32_t)tp->p_ctx.r13,
|
||||||
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
(uint32_t)tp->p_prio, (uint32_t)(tp->p_refs - 1),
|
||||||
states[tp->p_state], (uint32_t)tp->p_time);
|
states[tp->p_state]);
|
||||||
tp = chRegNextThread(tp);
|
tp = chRegNextThread(tp);
|
||||||
} while (tp != NULL);
|
} while (tp != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cmd_test(BaseSequentialStream *chp, int argc, char *argv[]) {
|
static void cmd_test(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||||
Thread *tp;
|
thread_t *tp;
|
||||||
|
|
||||||
(void)argv;
|
(void)argv;
|
||||||
if (argc > 0) {
|
if (argc > 0) {
|
||||||
chprintf(chp, "Usage: test\r\n");
|
chprintf(chp, "Usage: test\r\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
tp = chThdCreateFromHeap(NULL, TEST_WA_SIZE, chThdGetPriority(),
|
tp = chThdCreateFromHeap(NULL, TEST_WA_SIZE, chThdGetPriorityX(),
|
||||||
TestThread, chp);
|
TestThread, chp);
|
||||||
if (tp == NULL) {
|
if (tp == NULL) {
|
||||||
chprintf(chp, "out of memory\r\n");
|
chprintf(chp, "out of memory\r\n");
|
||||||
|
@ -152,8 +152,8 @@ static const SPIConfig spi2cfg = {
|
||||||
* This is a periodic thread that reads accelerometer and outputs
|
* This is a periodic thread that reads accelerometer and outputs
|
||||||
* result to SPI2 and PWM.
|
* result to SPI2 and PWM.
|
||||||
*/
|
*/
|
||||||
static WORKING_AREA(waThread1, 128);
|
static THD_WORKING_AREA(waThread1, 128);
|
||||||
static msg_t Thread1(void *arg) {
|
static THD_FUNCTION(Thread1, arg) {
|
||||||
static int8_t xbuf[4], ybuf[4]; /* Last accelerometer data.*/
|
static int8_t xbuf[4], ybuf[4]; /* Last accelerometer data.*/
|
||||||
systime_t time; /* Next deadline.*/
|
systime_t time; /* Next deadline.*/
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ static msg_t Thread1(void *arg) {
|
||||||
lis302dlWriteRegister(&SPID1, LIS302DL_CTRL_REG3, 0x00);
|
lis302dlWriteRegister(&SPID1, LIS302DL_CTRL_REG3, 0x00);
|
||||||
|
|
||||||
/* Reader thread loop.*/
|
/* Reader thread loop.*/
|
||||||
time = chTimeNow();
|
time = chVTGetSystemTime();
|
||||||
while (TRUE) {
|
while (TRUE) {
|
||||||
int32_t x, y;
|
int32_t x, y;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
@ -216,10 +216,10 @@ static msg_t Thread1(void *arg) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static WORKING_AREA(waUSB_THREAD, 512);
|
static THD_WORKING_AREA(waUSB_THREAD, 512);
|
||||||
static msg_t USB_THREAD(void *arg) {
|
static THD_FUNCTION(USB_THREAD, arg) {
|
||||||
(void)arg;
|
(void)arg;
|
||||||
Thread *shelltp = NULL;
|
thread_t *shelltp = NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Normal main() thread activity, in this demo it just performs
|
* Normal main() thread activity, in this demo it just performs
|
||||||
|
@ -234,7 +234,7 @@ static msg_t USB_THREAD(void *arg) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* If the previous shell exited.*/
|
/* If the previous shell exited.*/
|
||||||
if (chThdTerminated(shelltp)) {
|
if (chThdTerminatedX(shelltp)) {
|
||||||
/* Recovers memory of the previous shell.*/
|
/* Recovers memory of the previous shell.*/
|
||||||
chThdRelease(shelltp);
|
chThdRelease(shelltp);
|
||||||
shelltp = NULL;
|
shelltp = NULL;
|
||||||
|
@ -343,6 +343,10 @@ int main(void) {
|
||||||
|
|
||||||
main_lua();//while(1) !!! but could exit
|
main_lua();//while(1) !!! but could exit
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Normal main() thread activity, in this demo it just performs
|
||||||
|
* a shell respawn upon its termination.
|
||||||
|
*/
|
||||||
while (TRUE) {
|
while (TRUE) {
|
||||||
chThdSleepMilliseconds(500);
|
chThdSleepMilliseconds(500);
|
||||||
}
|
}
|
||||||
|
|
33
mcuconf.h
33
mcuconf.h
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
|
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
@ -14,6 +14,9 @@
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef _MCUCONF_H_
|
||||||
|
#define _MCUCONF_H_
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* STM32F4xx drivers configuration.
|
* STM32F4xx drivers configuration.
|
||||||
* The following settings override the default settings present in
|
* The following settings override the default settings present in
|
||||||
|
@ -139,6 +142,7 @@
|
||||||
#define STM32_I2C_USE_I2C1 FALSE
|
#define STM32_I2C_USE_I2C1 FALSE
|
||||||
#define STM32_I2C_USE_I2C2 FALSE
|
#define STM32_I2C_USE_I2C2 FALSE
|
||||||
#define STM32_I2C_USE_I2C3 FALSE
|
#define STM32_I2C_USE_I2C3 FALSE
|
||||||
|
#define STM32_I2C_BUSY_TIMEOUT 50
|
||||||
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
|
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
|
||||||
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
|
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
|
||||||
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
|
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
|
||||||
|
@ -151,9 +155,7 @@
|
||||||
#define STM32_I2C_I2C1_DMA_PRIORITY 3
|
#define STM32_I2C_I2C1_DMA_PRIORITY 3
|
||||||
#define STM32_I2C_I2C2_DMA_PRIORITY 3
|
#define STM32_I2C_I2C2_DMA_PRIORITY 3
|
||||||
#define STM32_I2C_I2C3_DMA_PRIORITY 3
|
#define STM32_I2C_I2C3_DMA_PRIORITY 3
|
||||||
#define STM32_I2C_I2C1_DMA_ERROR_HOOK() chSysHalt()
|
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
|
||||||
#define STM32_I2C_I2C2_DMA_ERROR_HOOK() chSysHalt()
|
|
||||||
#define STM32_I2C_I2C3_DMA_ERROR_HOOK() chSysHalt()
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ICU driver system settings.
|
* ICU driver system settings.
|
||||||
|
@ -203,6 +205,17 @@
|
||||||
#define STM32_PWM_TIM8_IRQ_PRIORITY 7
|
#define STM32_PWM_TIM8_IRQ_PRIORITY 7
|
||||||
#define STM32_PWM_TIM9_IRQ_PRIORITY 7
|
#define STM32_PWM_TIM9_IRQ_PRIORITY 7
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SDC driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_SDC_SDIO_DMA_PRIORITY 3
|
||||||
|
#define STM32_SDC_SDIO_IRQ_PRIORITY 9
|
||||||
|
#define STM32_SDC_WRITE_TIMEOUT_MS 250
|
||||||
|
#define STM32_SDC_READ_TIMEOUT_MS 25
|
||||||
|
#define STM32_SDC_CLOCK_ACTIVATION_DELAY 10
|
||||||
|
#define STM32_SDC_SDIO_UNALIGNED_SUPPORT TRUE
|
||||||
|
#define STM32_SDC_SDIO_DMA_STREAM STM32_DMA_STREAM_ID(2, 3)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SERIAL driver system settings.
|
* SERIAL driver system settings.
|
||||||
*/
|
*/
|
||||||
|
@ -237,7 +250,13 @@
|
||||||
#define STM32_SPI_SPI1_IRQ_PRIORITY 10
|
#define STM32_SPI_SPI1_IRQ_PRIORITY 10
|
||||||
#define STM32_SPI_SPI2_IRQ_PRIORITY 10
|
#define STM32_SPI_SPI2_IRQ_PRIORITY 10
|
||||||
#define STM32_SPI_SPI3_IRQ_PRIORITY 10
|
#define STM32_SPI_SPI3_IRQ_PRIORITY 10
|
||||||
#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 8
|
||||||
|
#define STM32_ST_USE_TIMER 2
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* UART driver system settings.
|
* UART driver system settings.
|
||||||
|
@ -272,7 +291,7 @@
|
||||||
#define STM32_UART_UART4_DMA_PRIORITY 0
|
#define STM32_UART_UART4_DMA_PRIORITY 0
|
||||||
#define STM32_UART_UART5_DMA_PRIORITY 0
|
#define STM32_UART_UART5_DMA_PRIORITY 0
|
||||||
#define STM32_UART_USART6_DMA_PRIORITY 0
|
#define STM32_UART_USART6_DMA_PRIORITY 0
|
||||||
#define STM32_UART_DMA_ERROR_HOOK(uartp) chSysHalt()
|
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* USB driver system settings.
|
* USB driver system settings.
|
||||||
|
@ -286,3 +305,5 @@
|
||||||
#define STM32_USB_OTG_THREAD_PRIO LOWPRIO
|
#define STM32_USB_OTG_THREAD_PRIO LOWPRIO
|
||||||
#define STM32_USB_OTG_THREAD_STACK_SIZE 128
|
#define STM32_USB_OTG_THREAD_STACK_SIZE 128
|
||||||
#define STM32_USB_OTGFIFO_FILL_BASEPRI 0
|
#define STM32_USB_OTGFIFO_FILL_BASEPRI 0
|
||||||
|
|
||||||
|
#endif /* _MCUCONF_H_ */
|
||||||
|
|
52
rules.mk
52
rules.mk
|
@ -40,6 +40,20 @@ else
|
||||||
DADEFS += -DCORTEX_USE_FPU=FALSE
|
DADEFS += -DCORTEX_USE_FPU=FALSE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Process stack size
|
||||||
|
ifeq ($(USE_PROCESS_STACKSIZE),)
|
||||||
|
LDOPT := $(LDOPT),--defsym=__process_stack_size__=0x400
|
||||||
|
else
|
||||||
|
LDOPT := $(LDOPT),--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Exceptions stack size
|
||||||
|
ifeq ($(USE_EXCEPTIONS_STACKSIZE),)
|
||||||
|
LDOPT := $(LDOPT),--defsym=__main_stack_size__=0x400
|
||||||
|
else
|
||||||
|
LDOPT := $(LDOPT),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE)
|
||||||
|
endif
|
||||||
|
|
||||||
# Output directory and files
|
# Output directory and files
|
||||||
ifeq ($(BUILDDIR),)
|
ifeq ($(BUILDDIR),)
|
||||||
BUILDDIR = build
|
BUILDDIR = build
|
||||||
|
@ -47,8 +61,15 @@ endif
|
||||||
ifeq ($(BUILDDIR),.)
|
ifeq ($(BUILDDIR),.)
|
||||||
BUILDDIR = build
|
BUILDDIR = build
|
||||||
endif
|
endif
|
||||||
OUTFILES = $(BUILDDIR)/$(PROJECT).elf $(BUILDDIR)/$(PROJECT).hex \
|
OUTFILES = $(BUILDDIR)/$(PROJECT).elf \
|
||||||
$(BUILDDIR)/$(PROJECT).bin $(BUILDDIR)/$(PROJECT).dmp
|
$(BUILDDIR)/$(PROJECT).hex \
|
||||||
|
$(BUILDDIR)/$(PROJECT).bin \
|
||||||
|
$(BUILDDIR)/$(PROJECT).dmp \
|
||||||
|
$(BUILDDIR)/$(PROJECT).list
|
||||||
|
|
||||||
|
ifdef SREC
|
||||||
|
OUTFILES += $(BUILDDIR)/$(PROJECT).srec
|
||||||
|
endif
|
||||||
|
|
||||||
# Source files groups and paths
|
# Source files groups and paths
|
||||||
ifeq ($(USE_THUMB),yes)
|
ifeq ($(USE_THUMB),yes)
|
||||||
|
@ -62,8 +83,6 @@ ASRC = $(ACSRC)$(ACPPSRC)
|
||||||
TSRC = $(TCSRC)$(TCPPSRC)
|
TSRC = $(TCSRC)$(TCPPSRC)
|
||||||
SRCPATHS = $(sort $(dir $(ASMXSRC)) $(dir $(ASMSRC)) $(dir $(ASRC)) $(dir $(TSRC)))
|
SRCPATHS = $(sort $(dir $(ASMXSRC)) $(dir $(ASMSRC)) $(dir $(ASRC)) $(dir $(TSRC)))
|
||||||
|
|
||||||
#$(dir $(ELUA_ALL_CSRC))
|
|
||||||
|
|
||||||
# Various directories
|
# Various directories
|
||||||
OBJDIR = $(BUILDDIR)/obj
|
OBJDIR = $(BUILDDIR)/obj
|
||||||
LSTDIR = $(BUILDDIR)/lst
|
LSTDIR = $(BUILDDIR)/lst
|
||||||
|
@ -75,7 +94,6 @@ TCOBJS = $(addprefix $(OBJDIR)/, $(notdir $(TCSRC:.c=.o)))
|
||||||
TCPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(TCPPSRC:.cpp=.o)))
|
TCPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(TCPPSRC:.cpp=.o)))
|
||||||
ASMOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMSRC:.s=.o)))
|
ASMOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMSRC:.s=.o)))
|
||||||
ASMXOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMXSRC:.S=.o)))
|
ASMXOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMXSRC:.S=.o)))
|
||||||
#ELUAOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ELUA_CSRC:.c=_elua.o)))
|
|
||||||
OBJS = $(ASMXOBJS) $(ASMOBJS) $(ACOBJS) $(TCOBJS) $(ACPPOBJS) $(TCPPOBJS) $(ELUA_ALL_OBJS)
|
OBJS = $(ASMXOBJS) $(ASMOBJS) $(ACOBJS) $(TCOBJS) $(ACPPOBJS) $(TCPPOBJS) $(ELUA_ALL_OBJS)
|
||||||
|
|
||||||
# Paths
|
# Paths
|
||||||
|
@ -230,18 +248,42 @@ else
|
||||||
@$(BIN) $< $@
|
@$(BIN) $< $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
%.srec: %.elf $(LDSCRIPT)
|
||||||
|
ifeq ($(USE_VERBOSE_COMPILE),yes)
|
||||||
|
$(SREC) $< $@
|
||||||
|
else
|
||||||
|
@echo Creating $@
|
||||||
|
@$(SREC) $< $@
|
||||||
|
endif
|
||||||
|
|
||||||
%.dmp: %.elf $(LDSCRIPT)
|
%.dmp: %.elf $(LDSCRIPT)
|
||||||
ifeq ($(USE_VERBOSE_COMPILE),yes)
|
ifeq ($(USE_VERBOSE_COMPILE),yes)
|
||||||
$(OD) $(ODFLAGS) $< > $@
|
$(OD) $(ODFLAGS) $< > $@
|
||||||
|
$(SZ) $<
|
||||||
else
|
else
|
||||||
@echo Creating $@
|
@echo Creating $@
|
||||||
@$(OD) $(ODFLAGS) $< > $@
|
@$(OD) $(ODFLAGS) $< > $@
|
||||||
@echo
|
@echo
|
||||||
@$(SZ) $<
|
@$(SZ) $<
|
||||||
|
endif
|
||||||
|
|
||||||
|
%.list: %.elf $(LDSCRIPT)
|
||||||
|
ifeq ($(USE_VERBOSE_COMPILE),yes)
|
||||||
|
$(OD) -S $< > $@
|
||||||
|
else
|
||||||
|
@echo Creating $@
|
||||||
|
@$(OD) -S $< > $@
|
||||||
@echo
|
@echo
|
||||||
@echo Done
|
@echo Done
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
lib: $(OBJS) $(BUILDDIR)/lib$(PROJECT).a
|
||||||
|
|
||||||
|
$(BUILDDIR)/lib$(PROJECT).a: $(OBJS)
|
||||||
|
@$(AR) -r $@ $^
|
||||||
|
@echo
|
||||||
|
@echo Done
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@echo Cleaning
|
@echo Cleaning
|
||||||
-rm -fR .dep $(BUILDDIR)
|
-rm -fR .dep $(BUILDDIR)
|
||||||
|
|
6
usbcfg.c
6
usbcfg.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
|
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
@ -270,7 +270,7 @@ static void usb_event(USBDriver *usbp, usbevent_t event) {
|
||||||
case USB_EVENT_ADDRESS:
|
case USB_EVENT_ADDRESS:
|
||||||
return;
|
return;
|
||||||
case USB_EVENT_CONFIGURED:
|
case USB_EVENT_CONFIGURED:
|
||||||
chSysLockFromIsr();
|
chSysLockFromISR();
|
||||||
|
|
||||||
/* Enables the endpoints specified into the configuration.
|
/* Enables the endpoints specified into the configuration.
|
||||||
Note, this callback is invoked from an ISR so I-Class functions
|
Note, this callback is invoked from an ISR so I-Class functions
|
||||||
|
@ -281,7 +281,7 @@ static void usb_event(USBDriver *usbp, usbevent_t event) {
|
||||||
/* Resetting the state of the CDC subsystem.*/
|
/* Resetting the state of the CDC subsystem.*/
|
||||||
sduConfigureHookI(&SDU1);
|
sduConfigureHookI(&SDU1);
|
||||||
|
|
||||||
chSysUnlockFromIsr();
|
chSysUnlockFromISR();
|
||||||
return;
|
return;
|
||||||
case USB_EVENT_SUSPEND:
|
case USB_EVENT_SUSPEND:
|
||||||
return;
|
return;
|
||||||
|
|
2
usbcfg.h
2
usbcfg.h
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio
|
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|
Loading…
Reference in New Issue