From 8b412a5a708a025dd7291d8c235a1e93b85dcb29 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 28 Nov 2009 14:18:38 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1334 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/include/hal.h | 2 + os/hal/platforms/STM32/adc_lld.c | 2 - os/hal/platforms/STM32/hal_lld.c | 128 ++++++++++++++++++++++++++++ os/hal/platforms/STM32/hal_lld.h | 61 +++++++++++++ os/hal/platforms/STM32/platform.mk | 5 +- os/hal/platforms/STM32/serial_lld.c | 1 - os/hal/platforms/STM32/spi_lld.c | 2 - os/hal/platforms/STM32/stm32_dma.c | 8 +- os/hal/src/hal.c | 5 ++ os/hal/templates/hal_lld.c | 57 +++++++++++++ os/hal/templates/hal_lld.h | 56 ++++++++++++ os/hal/templates/meta/driver.c | 87 +++++++++++++++++++ os/hal/templates/meta/driver.h | 54 ++++++++++++ os/hal/templates/meta/driver_lld.c | 79 +++++++++++++++++ os/hal/templates/meta/driver_lld.h | 81 ++++++++++++++++++ os/various/syscalls.c | 2 + 16 files changed, 616 insertions(+), 14 deletions(-) create mode 100644 os/hal/platforms/STM32/hal_lld.c create mode 100644 os/hal/platforms/STM32/hal_lld.h create mode 100644 os/hal/templates/hal_lld.c create mode 100644 os/hal/templates/hal_lld.h create mode 100644 os/hal/templates/meta/driver.c create mode 100644 os/hal/templates/meta/driver.h create mode 100644 os/hal/templates/meta/driver_lld.c create mode 100644 os/hal/templates/meta/driver_lld.h diff --git a/os/hal/include/hal.h b/os/hal/include/hal.h index dcfa822b4..34ed2f08c 100644 --- a/os/hal/include/hal.h +++ b/os/hal/include/hal.h @@ -30,6 +30,8 @@ #include "halconf.h" #include "board.h" +#include "hal_lld.h" + #include "pal.h" #include "adc.h" #include "can.h" diff --git a/os/hal/platforms/STM32/adc_lld.c b/os/hal/platforms/STM32/adc_lld.c index b31579b90..c2f2e91f9 100644 --- a/os/hal/platforms/STM32/adc_lld.c +++ b/os/hal/platforms/STM32/adc_lld.c @@ -26,8 +26,6 @@ #include "ch.h" #include "hal.h" -#include "stm32_dma.h" -#include "nvic.h" #if CH_HAL_USE_ADC diff --git a/os/hal/platforms/STM32/hal_lld.c b/os/hal/platforms/STM32/hal_lld.c new file mode 100644 index 000000000..1fa5a2aca --- /dev/null +++ b/os/hal/platforms/STM32/hal_lld.c @@ -0,0 +1,128 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file templates/hal_lld.c + * @brief HAL Driver subsystem low level driver source template + * @addtogroup HAL_LLD + * @{ + */ + +#include +#include + +#define AIRCR_VECTKEY 0x05FA0000 + +/*===========================================================================*/ +/* Low Level Driver exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver local variables. */ +/*===========================================================================*/ + +/* + * Digital I/O ports static configuration as defined in @p board.h. + */ +const STM32GPIOConfig pal_default_config = +{ + {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH}, + {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH}, + {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH}, + {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH}, +#if !defined(STM32F10X_LD) + {VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH}, +#endif +#if defined(STM32F10X_HD) + {VAL_GPIOFODR, VAL_GPIOFCRL, VAL_GPIOFCRH}, + {VAL_GPIOGODR, VAL_GPIOGCRL, VAL_GPIOGCRH}, +#endif +}; + +/*===========================================================================*/ +/* Low Level Driver local functions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver interrupt handlers. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver exported functions. */ +/*===========================================================================*/ + +/** + * @brief Low level HAL driver initialization. + */ +void hal_lld_init(void) { + +#if CH_HAL_USE_ADC || CH_HAL_USE_SPI + dmaInit(); +#endif +} + +/** + * @brief STM32 clocks and PLL initialization. + * @note All the involved constants come from the file @p board.h. + */ +void stm32_clock_init(void) { + + /* HSI setup.*/ + RCC->CR = RCC_CR_HSITRIM_RESET_BITS | RCC_CR_HSION; + while (!(RCC->CR & RCC_CR_HSIRDY)) + ; /* Waits until HSI stable. */ + /* HSE setup.*/ + RCC->CR |= RCC_CR_HSEON; + while (!(RCC->CR & RCC_CR_HSERDY)) + ; /* Waits until HSE stable. */ + /* PLL setup.*/ + RCC->CFGR = RCC_CFGR_PLLSRC_HSE_BITS | PLLPREBITS | PLLMULBITS; + RCC->CR |= RCC_CR_PLLON; + while (!(RCC->CR & RCC_CR_PLLRDY)) + ; /* Waits until PLL stable. */ + /* Clock sources.*/ + RCC->CFGR |= RCC_CFGR_HPRE_DIV1 | RCC_CFGR_PPRE1_DIV2 | + RCC_CFGR_PPRE2_DIV2 | RCC_CFGR_ADCPRE_DIV8 | + RCC_CFGR_MCO_NOCLOCK | USBPREBITS; + + /* Flash setup and final clock selection. */ + FLASH->ACR = FLASHBITS; /* Flash wait states depending on clock. */ + RCC->CFGR |= RCC_CFGR_SW_PLL; /* Switches the PLL clock ON. */ + while ((RCC->CFGR & RCC_CFGR_SW) != RCC_CFGR_SW_PLL) + ; +} + +/** + * @brief STM32 NVIC/SCB/SYSTICK initialization. + * @note All the involved constants come from the file @p board.h. + */ +void stm32_nvic_init(void) { + + /* Note: PRIGROUP 4:0 (4:4).*/ + SCB->AIRCR = AIRCR_VECTKEY | SCB_AIRCR_PRIGROUP_0 | SCB_AIRCR_PRIGROUP_1; + NVICSetSystemHandlerPriority(HANDLER_SVCALL, PRIORITY_SVCALL); + NVICSetSystemHandlerPriority(HANDLER_SYSTICK, PRIORITY_SYSTICK); + NVICSetSystemHandlerPriority(HANDLER_PENDSV, PRIORITY_PENDSV); + + SysTick->LOAD = SYSCLK / (8000000 / CH_FREQUENCY) - 1; + SysTick->VAL = 0; + SysTick->CTRL = SysTick_CTRL_ENABLE | SysTick_CTRL_TICKINT; +} + +/** @} */ diff --git a/os/hal/platforms/STM32/hal_lld.h b/os/hal/platforms/STM32/hal_lld.h new file mode 100644 index 000000000..7be941ca2 --- /dev/null +++ b/os/hal/platforms/STM32/hal_lld.h @@ -0,0 +1,61 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file templates/hal_lld.h + * @brief HAL subsystem low level driver header template + * @addtogroup HAL_LLD + * @{ + */ + +#ifndef _HAL_LLD_H_ +#define _HAL_LLD_H_ + +#include "nvic.h" +#include "stm32_dma.h" + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + void hal_lld_init(void); + void stm32_clock_init(void); + void stm32_nvic_init(void); +#ifdef __cplusplus +} +#endif + +#endif /* _HAL_LLD_H_ */ + +/** @} */ diff --git a/os/hal/platforms/STM32/platform.mk b/os/hal/platforms/STM32/platform.mk index 6e78d5dd6..e31325ccc 100644 --- a/os/hal/platforms/STM32/platform.mk +++ b/os/hal/platforms/STM32/platform.mk @@ -1,10 +1,11 @@ # List of all the STM32 platform files. -PLATFORMSRC = ${CHIBIOS}/os/hal/platforms/STM32/stm32_dma.c \ +PLATFORMSRC = ${CHIBIOS}/os/hal/platforms/STM32/hal_lld.c \ ${CHIBIOS}/os/hal/platforms/STM32/adc_lld.c \ ${CHIBIOS}/os/hal/platforms/STM32/can_lld.c \ ${CHIBIOS}/os/hal/platforms/STM32/pal_lld.c \ ${CHIBIOS}/os/hal/platforms/STM32/serial_lld.c \ - ${CHIBIOS}/os/hal/platforms/STM32/spi_lld.c + ${CHIBIOS}/os/hal/platforms/STM32/spi_lld.c \ + ${CHIBIOS}/os/hal/platforms/STM32/stm32_dma.c # Required include directories PLATFORMINC = ${CHIBIOS}/os/hal/platforms/STM32 diff --git a/os/hal/platforms/STM32/serial_lld.c b/os/hal/platforms/STM32/serial_lld.c index 2d9407f90..5337c4dfa 100644 --- a/os/hal/platforms/STM32/serial_lld.c +++ b/os/hal/platforms/STM32/serial_lld.c @@ -26,7 +26,6 @@ #include "ch.h" #include "hal.h" -#include "nvic.h" #if CH_HAL_USE_SERIAL diff --git a/os/hal/platforms/STM32/spi_lld.c b/os/hal/platforms/STM32/spi_lld.c index 1d73646a0..0adbe4d8a 100644 --- a/os/hal/platforms/STM32/spi_lld.c +++ b/os/hal/platforms/STM32/spi_lld.c @@ -26,8 +26,6 @@ #include "ch.h" #include "hal.h" -#include "nvic.h" -#include "stm32_dma.h" #if CH_HAL_USE_SPI diff --git a/os/hal/platforms/STM32/stm32_dma.c b/os/hal/platforms/STM32/stm32_dma.c index da036d159..e7574b75d 100644 --- a/os/hal/platforms/STM32/stm32_dma.c +++ b/os/hal/platforms/STM32/stm32_dma.c @@ -25,13 +25,7 @@ */ #include "ch.h" -#include "stm32_dma.h" - -#undef FALSE -#undef TRUE -#include -#define FALSE 0 -#define TRUE (!FALSE) +#include "hal.h" static cnt_t dmacnt1; #if defined(STM32F10X_HD) || defined (STM32F10X_CL) diff --git a/os/hal/src/hal.c b/os/hal/src/hal.c index 1aec1a478..b64ba49af 100644 --- a/os/hal/src/hal.c +++ b/os/hal/src/hal.c @@ -27,8 +27,13 @@ #include "ch.h" #include "hal.h" +/** + * @brief HAL initialization. + */ void halInit(void) { + hal_lld_init(); + #if CH_HAL_USE_PAL palInit(&pal_default_config); #endif diff --git a/os/hal/templates/hal_lld.c b/os/hal/templates/hal_lld.c new file mode 100644 index 000000000..0d2d46dcc --- /dev/null +++ b/os/hal/templates/hal_lld.c @@ -0,0 +1,57 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file templates/hal_lld.c + * @brief HAL Driver subsystem low level driver source template + * @addtogroup HAL_LLD + * @{ + */ + +#include +#include + +/*===========================================================================*/ +/* Low Level Driver exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver local variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver local functions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver interrupt handlers. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver exported functions. */ +/*===========================================================================*/ + +/** + * @brief Low level HAL driver initialization. + */ +void hal_lld_init(void) { + +} + +/** @} */ diff --git a/os/hal/templates/hal_lld.h b/os/hal/templates/hal_lld.h new file mode 100644 index 000000000..b401e4217 --- /dev/null +++ b/os/hal/templates/hal_lld.h @@ -0,0 +1,56 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file templates/hal_lld.h + * @brief HAL subsystem low level driver header template + * @addtogroup HAL_LLD + * @{ + */ + +#ifndef _HAL_LLD_H_ +#define _HAL_LLD_H_ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + void hal_lld_init(void); +#ifdef __cplusplus +} +#endif + +#endif /* _HAL_LLD_H_ */ + +/** @} */ diff --git a/os/hal/templates/meta/driver.c b/os/hal/templates/meta/driver.c new file mode 100644 index 000000000..9bf785ed2 --- /dev/null +++ b/os/hal/templates/meta/driver.c @@ -0,0 +1,87 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file XXX.c + * @brief XXX Driver code. + * @addtogroup XXX + * @{ + */ + +#include +#include + +/** + * @brief XXX Driver initialization. + */ +void xxxInit(void) { + + xxx_lld_init(); +} + +/** + * @brief Initializes the standard part of a @p XXXDriver structure. + * + * @param[in] xxxp pointer to the @p XXXDriver object + */ +void xxxObjectInit(XXXDriver *xxxp) { + + xxxp->xxx_state = XXX_STOP; + xxxp->xxx_config = NULL; +} + +/** + * @brief Configures and activates the XXX peripheral. + * + * @param[in] xxxp pointer to the @p XXXDriver object + * @param[in] config pointer to the @p XXXConfig object + */ +void xxxStart(XXXDriver *xxxp, const XXXConfig *config) { + + chDbgCheck((xxxp != NULL) && (config != NULL), "xxxStart"); + + chSysLock(); + chDbgAssert((xxxp->xxx_state == XXX_STOP) || (xxxp->xxx_state == XXX_READY), + "xxxStart(), #1", + "invalid state"); + xxxp->xxx_config = config; + xxx_lld_start(xxxp); + xxxp->xxx_state = XXX_READY; + chSysUnlock(); +} + +/** + * @brief Deactivates the XXX peripheral. + * + * @param[in] xxxp pointer to the @p XXXDriver object + */ +void xxxStop(XXXDriver *xxxp) { + + chDbgCheck(xxxp != NULL, "xxxStop"); + + chSysLock(); + chDbgAssert((xxxp->xxx_state == XXX_STOP) || (xxxp->xxx_state == XXX_READY), + "xxxStop(), #1", + "invalid state"); + xxx_lld_stop(xxxp); + xxxp->xxx_state = XXX_STOP; + chSysUnlock(); +} + +/** @} */ diff --git a/os/hal/templates/meta/driver.h b/os/hal/templates/meta/driver.h new file mode 100644 index 000000000..675bc6689 --- /dev/null +++ b/os/hal/templates/meta/driver.h @@ -0,0 +1,54 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file xxx.h + * @brief XXX Driver macros and structures. + * @addtogroup XXX + * @{ + */ + +#ifndef _XXX_H_ +#define _XXX_H_ + +/** + * @brief Driver state machine possible states. + */ +typedef enum { + XXX_UNINIT = 0, /**< @brief Not initialized. */ + XXX_STOP = 1, /**< @brief Stopped. */ + XXX_READY = 2, /**< @brief Ready. */ +} xxxstate_t; + +#include "xxx_lld.h" + +#ifdef __cplusplus +extern "C" { +#endif + void xxxInit(void); + void xxxObjectInit(XXXDriver *xxxp); + void xxxStart(XXXDriver *xxxp, const XXXConfig *config); + void xxxStop(XXXDriver *xxxp); +#ifdef __cplusplus +} +#endif + +#endif /* _XXX_H_ */ + +/** @} */ diff --git a/os/hal/templates/meta/driver_lld.c b/os/hal/templates/meta/driver_lld.c new file mode 100644 index 000000000..df91ed21b --- /dev/null +++ b/os/hal/templates/meta/driver_lld.c @@ -0,0 +1,79 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file templates/xxx_lld.c + * @brief XXX Driver subsystem low level driver source template + * @addtogroup XXX_LLD + * @{ + */ + +#include +#include + +/*===========================================================================*/ +/* Low Level Driver exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver local variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver local functions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver interrupt handlers. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Low Level Driver exported functions. */ +/*===========================================================================*/ + +/** + * @brief Low level XXX driver initialization. + */ +void xxx_lld_init(void) { + +} + +/** + * @brief Configures and activates the XXX peripheral. + * + * @param[in] xxxp pointer to the @p XXXDriver object + */ +void xxx_lld_start(XXXDriver *xxxp) { + + if (xxxp->xxx_state == XXX_STOP) { + /* Clock activation.*/ + } + /* Configuration.*/ +} + +/** + * @brief Deactivates the XXX peripheral. + * + * @param[in] xxxp pointer to the @p XXXDriver object + */ +void xxx_lld_stop(XXXDriver *xxxp) { + +} + +/** @} */ diff --git a/os/hal/templates/meta/driver_lld.h b/os/hal/templates/meta/driver_lld.h new file mode 100644 index 000000000..92194664e --- /dev/null +++ b/os/hal/templates/meta/driver_lld.h @@ -0,0 +1,81 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file templates/xxx_lld.h + * @brief XXX Driver subsystem low level driver header template + * @addtogroup XXX_LLD + * @{ + */ + +#ifndef _XXX_LLD_H_ +#define _XXX_LLD_H_ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/** + * @brief Driver configuration structure. + * @note It could be empty on some architectures. + */ +typedef struct { + +} XXXConfig; + +/** + * @brief Structure representing an XXX driver. + */ +typedef struct { + /** + * @brief Driver state. + */ + xxxstate_t xxx_state; + /** + * @brief Current configuration data. + */ + const XXXConfig *xxx_config; + /* End of the mandatory fields.*/ +} XXXDriver; + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + void xxx_lld_init(void); + void xxx_lld_start(XXXDriver *xxxp); + void xxx_lld_stop(XXXDriver *xxxp); +#ifdef __cplusplus +} +#endif + +#endif /* _XXX_LLD_H_ */ + +/** @} */ diff --git a/os/various/syscalls.c b/os/various/syscalls.c index 23bfea419..8f45a5dd2 100644 --- a/os/various/syscalls.c +++ b/os/various/syscalls.c @@ -107,7 +107,9 @@ int _lseek_r(struct _reent *r, int file, int ptr, int dir) int _write_r(struct _reent *r, int file, char * ptr, int len) { +#if defined(STDOUT_SD) int n; +#endif (void)r; (void)file;