From 2aafb451b40eacd395f356749bba01a101df5415 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Fri, 26 Nov 2010 16:27:01 +0900 Subject: [PATCH] New board: STM8S_DISCOVERY --- ChangeLog | 3 + boards/STM8S_DISCOVERY/board.c | 33 +++++++++ boards/STM8S_DISCOVERY/board.h | 119 +++++++++++++++++++++++++++++++ boards/STM8S_DISCOVERY/board.mk | 6 ++ boards/STM8S_DISCOVERY/mcuconf.h | 107 +++++++++++++++++++++++++++ src/configure | 6 +- 6 files changed, 273 insertions(+), 1 deletion(-) create mode 100644 boards/STM8S_DISCOVERY/board.c create mode 100644 boards/STM8S_DISCOVERY/board.h create mode 100644 boards/STM8S_DISCOVERY/board.mk create mode 100644 boards/STM8S_DISCOVERY/mcuconf.h diff --git a/ChangeLog b/ChangeLog index c5c67b7..660730c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2010-11-26 NIIBE Yutaka + * boards/STM8S_DISCOVERY/*: New. + * src/configure: STM8S_DISCOVERY only has 64KB flash memory. + * boards/STBEE_MINI/board.h (CPU_WITH_NO_GPIOE): New define. * ChibiOS_2.0.6/os/hal/platforms/STM32/hal_lld.c: Use it. * ChibiOS_2.0.6/os/hal/platforms/STM32/pal_lld.c: Likewise. diff --git a/boards/STM8S_DISCOVERY/board.c b/boards/STM8S_DISCOVERY/board.c new file mode 100644 index 0000000..62edafc --- /dev/null +++ b/boards/STM8S_DISCOVERY/board.c @@ -0,0 +1,33 @@ +#include "config.h" +#include "ch.h" +#include "hal.h" + +#include "../common/hwinit.c" + +void +hwinit0 (void) +{ + hwinit0_common (); +} + +void +hwinit1 (void) +{ + hwinit1_common (); +} + +void +USB_Cable_Config (FunctionalState NewState) +{ + /* No functionality to stop USB. */ + (void)NewState; +} + +void +set_led (int value) +{ + if (value) + palSetPad (IOPORT1, GPIOA_LED); + else + palClearPad (IOPORT1, GPIOA_LED); +} diff --git a/boards/STM8S_DISCOVERY/board.h b/boards/STM8S_DISCOVERY/board.h new file mode 100644 index 0000000..2ad370b --- /dev/null +++ b/boards/STM8S_DISCOVERY/board.h @@ -0,0 +1,119 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 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 . + + --- + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes ChibiOS/RT, without being obliged to provide + the source code for any proprietary components. See the file exception.txt + for full details of how and when the exception can be applied. +*/ + +#ifndef _BOARD_H_ +#define _BOARD_H_ + +/* + * Setup for the ST-Link part of STM8S-Discovery board. + */ + +/* + * Board identifier. + */ +#define BOARD_ST_DISCOVERY +#define BOARD_NAME "ST-Link" +#define CPU_WITH_NO_GPIOE 1 + +/* + * Board frequencies. + */ +#define STM32_LSECLK 32768 +#define STM32_HSECLK 8000000 + +/* + * MCU type, this macro is used by both the ST library and the ChibiOS/RT + * native STM32 HAL. + */ +#define STM32F10X_MD + +/* + * IO pins assignments. + */ +#define GPIOA_LED 8 + +/* + * I/O ports initial setup, this configuration is established soon after reset + * in the initialization code. + * + * The digits have the following meaning: + * 0 - Analog input. + * 1 - Push Pull output 10MHz. + * 2 - Push Pull output 2MHz. + * 3 - Push Pull output 50MHz. + * 4 - Digital input. + * 5 - Open Drain output 10MHz. + * 6 - Open Drain output 2MHz. + * 7 - Open Drain output 50MHz. + * 8 - Digital input with PullUp or PullDown resistor depending on ODR. + * 9 - Alternate Push Pull output 10MHz. + * A - Alternate Push Pull output 2MHz. + * B - Alternate Push Pull output 50MHz. + * C - Reserved. + * D - Alternate Open Drain output 10MHz. + * E - Alternate Open Drain output 2MHz. + * F - Alternate Open Drain output 50MHz. + * Please refer to the STM32 Reference Manual for details. + */ + +/* + * Port A setup. + * PA11 - input with pull-up (USBDM) + * PA12 - input with pull-up (USBDP) + * Everything input with pull-up except: + * PA8 - Push pull output (LED 1:ON 0:OFF) + */ +#define VAL_GPIOACRL 0x88888888 /* PA7...PA0 */ +#define VAL_GPIOACRH 0x88888883 /* PA15...PA8 */ +#define VAL_GPIOAODR 0xFFFFFFFF + +/* + * Port B setup. + * Everything input with pull-up except: + */ +#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */ +#define VAL_GPIOBCRH 0x88888888 /* PB15...PB8 */ +#define VAL_GPIOBODR 0xFFFFFFFF + +/* + * Port C setup. + * Everything input with pull-up except: + */ +#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */ +#define VAL_GPIOCCRH 0x88888888 /* PC15...PC8 */ +#define VAL_GPIOCODR 0xFFFFFFFF + +/* + * Port D setup. + * Everything input with pull-up except: + * PD0 - Normal input (XTAL). + * PD1 - Normal input (XTAL). + */ +#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */ +#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */ +#define VAL_GPIODODR 0xFFFFFFFF + +#endif /* _BOARD_H_ */ diff --git a/boards/STM8S_DISCOVERY/board.mk b/boards/STM8S_DISCOVERY/board.mk new file mode 100644 index 0000000..8e9699d --- /dev/null +++ b/boards/STM8S_DISCOVERY/board.mk @@ -0,0 +1,6 @@ +# List of all the board related files. +BOARDSRC = ../boards/STM8S_DISCOVERY/board.c \ + ../boards/common/hw_config.c + +# Required include directories +BOARDINC = ../boards/STM8S_DISCOVERY diff --git a/boards/STM8S_DISCOVERY/mcuconf.h b/boards/STM8S_DISCOVERY/mcuconf.h new file mode 100644 index 0000000..5d16d78 --- /dev/null +++ b/boards/STM8S_DISCOVERY/mcuconf.h @@ -0,0 +1,107 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 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 . + + --- + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes ChibiOS/RT, without being obliged to provide + the source code for any proprietary components. See the file exception.txt + for full details of how and when the exception can be applied. +*/ + +/* + * STM32 drivers configuration. + * The following settings override the default settings present in + * the various device driver implementation headers. + * Note that the settings for each driver only have effect if the driver + * is enabled in halconf.h. + * + * IRQ priorities: + * 15...0 Lowest...Highest. + * + * DMA priorities: + * 0...3 Lowest...Highest. + */ + +/* + * HAL driver system settings. + */ +#define STM32_SW STM32_SW_PLL +#define STM32_PLLSRC STM32_PLLSRC_HSE +#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV1 +#define STM32_PLLMUL_VALUE 9 +#define STM32_HPRE STM32_HPRE_DIV1 +#define STM32_PPRE1 STM32_PPRE1_DIV2 +#define STM32_PPRE2 STM32_PPRE2_DIV2 +#define STM32_ADCPRE STM32_ADCPRE_DIV4 +#define STM32_MCO STM32_MCO_NOCLOCK + +/* + * ADC driver system settings. + */ +#define USE_STM32_ADC1 FALSE +#define STM32_ADC1_DMA_PRIORITY 3 +#define STM32_ADC1_IRQ_PRIORITY 5 +#define STM32_ADC1_DMA_ERROR_HOOK() chSysHalt() + +/* + * CAN driver system settings. + */ +#define USE_STM32_CAN1 FALSE +#define STM32_CAN1_IRQ_PRIORITY 11 + +/* + * PWM driver system settings. + */ +#define USE_STM32_PWM1 FALSE +#define USE_STM32_PWM2 FALSE +#define USE_STM32_PWM3 FALSE +#define USE_STM32_PWM4 FALSE +#define STM32_PWM1_IRQ_PRIORITY 7 +#define STM32_PWM2_IRQ_PRIORITY 7 +#define STM32_PWM3_IRQ_PRIORITY 7 +#define STM32_PWM4_IRQ_PRIORITY 7 + +/* + * SERIAL driver system settings. + */ +#define USE_STM32_USART1 FALSE +#define USE_STM32_USART2 FALSE +#define USE_STM32_USART3 FALSE +#if defined(STM32F10X_HD) || defined(STM32F10X_CL) +#define USE_STM32_UART4 FALSE +#define USE_STM32_UART5 FALSE +#endif +#define STM32_USART1_PRIORITY 12 +#define STM32_USART2_PRIORITY 12 +#define STM32_USART3_PRIORITY 12 +#if defined(STM32F10X_HD) || defined(STM32F10X_CL) +#define STM32_UART4_PRIORITY 12 +#define STM32_UART5_PRIORITY 12 +#endif + +/* + * SPI driver system settings. + */ +#define USE_STM32_SPI1 FALSE +#define USE_STM32_SPI2 FALSE +#define STM32_SPI1_DMA_PRIORITY 2 +#define STM32_SPI2_DMA_PRIORITY 2 +#define STM32_SPI1_IRQ_PRIORITY 10 +#define STM32_SPI2_IRQ_PRIORITY 10 +#define STM32_SPI1_DMA_ERROR_HOOK() chSysHalt() diff --git a/src/configure b/src/configure index d33d9a6..d2d5065 100755 --- a/src/configure +++ b/src/configure @@ -139,7 +139,11 @@ if test "$with_dfu" = "yes"; then else echo "Configured for bare system (no-DFU)" ORIGIN=0x08000000 - FLASH_SIZE=128k + if test "$target" = "STM8S_DISCOVERY"; then + FLASH_SIZE=64k + else + FLASH_SIZE=128k + fi DFU_DEFINE="#undef DFU_SUPPORT" fi