From ae005eb968b9d169f3e768e5c26eed43652e75eb Mon Sep 17 00:00:00 2001 From: patacongo Date: Sun, 11 Oct 2009 19:52:20 +0000 Subject: [PATCH] Basic USART setup works git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2126 42af7a65-404d-4744-a932-0658087f49c3 --- arch/arm/src/stm32/stm32_flash.h | 99 +++++++++++++++++++++++++ arch/arm/src/stm32/stm32_internal.h | 2 +- arch/arm/src/stm32/stm32_lowputc.c | 20 ++--- arch/arm/src/stm32/stm32_memorymap.h | 11 +-- arch/arm/src/stm32/stm32_rcc.c | 10 ++- arch/arm/src/stm32/stm32_serial.c | 39 ++++------ configs/stm3210e-eval/README.txt | 3 + configs/stm3210e-eval/RIDE/nuttx.ctx | 27 +++++-- configs/stm3210e-eval/RIDE/nuttx.rapp | 62 ++++++++++++---- configs/stm3210e-eval/RIDE/nuttx.rdb | Bin 114688 -> 116736 bytes configs/stm3210e-eval/ostest/Make.defs | 2 +- configs/stm3210e-eval/ostest/defconfig | 2 +- 12 files changed, 210 insertions(+), 67 deletions(-) create mode 100755 arch/arm/src/stm32/stm32_flash.h diff --git a/arch/arm/src/stm32/stm32_flash.h b/arch/arm/src/stm32/stm32_flash.h new file mode 100755 index 0000000000..8b22ae90b8 --- /dev/null +++ b/arch/arm/src/stm32/stm32_flash.h @@ -0,0 +1,99 @@ +/************************************************************************************ + * arch/arm/src/stm32/stm32_flash.h + * + * Copyright (C) 2009 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************************************/ + +#ifndef __ARCH_ARM_SRC_STM32_STM32_FLASH_H +#define __ARCH_ARM_SRC_STM32_STM32_FLASH_H + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include +#include +#include "chip.h" +#include "stm32_memorymap.h" + +/************************************************************************************ + * Definitions + ************************************************************************************/ + +/* Register Offsets *****************************************************************/ + +#define STM32_FLASH_ACR_OFFSET 0x0000 +#define STM32_FLASH_KEYR_OFFSET 0x0004 +#define STM32_FLASH_OPTKEYR_OFFSET 0x0008 +#define STM32_FLASH_SR_OFFSET 0x000c +#define STM32_FLASH_CR_OFFSET 0x0010 +#define STM32_FLASH_AR_OFFSET 0x0014 +#define STM32_FLASH_OBR_OFFSET 0x001c +#define STM32_FLASH_WRPR_OFFSET 0x0020 + +/* Register Addresses ***************************************************************/ + +#define STM32_FLASH_ACR (STM32_FLASHIF_BASE+STM32_FLASH_ACR_OFFSET) +#define STM32_FLASH_KEYR (STM32_FLASHIF_BASE+STM32_FLASH_KEYR_OFFSET) +#define STM32_FLASH_OPTKEYR (STM32_FLASHIF_BASE+STM32_FLASH_OPTKEYR_OFFSET) +#define STM32_FLASH_SR (STM32_FLASHIF_BASE+STM32_FLASH_SR_OFFSET) +#define STM32_FLASH_CR (STM32_FLASHIF_BASE+STM32_FLASH_CR_OFFSET) +#define STM32_FLASH_AR (STM32_FLASHIF_BASE+STM32_FLASH_AR_OFFSET) +#define STM32_FLASH_OBR (STM32_FLASHIF_BASE+STM32_FLASH_OBR_OFFSET) +#define STM32_FLASH_WRPR (STM32_FLASHIF_BASE+STM32_FLASH_WRPR_OFFSET) + +/* Register Bitfield Definitions ****************************************************/ +/* TODO: FLASH details from the STM32F10xxx Flash programming manual. */ + +/* Flash Access Control Register (ACR) */ + +#define ACR_LATENCY_SHIFT (0) +#define ACR_LATENCY_MASK (7 << ACR_LATENCY_SHIFT) +# define ACR_LATENCY_0 (0 << ACR_LATENCY_SHIFT) /* FLASH Zero Latency cycle */ +# define ACR_LATENCY_1 (1 << ACR_LATENCY_SHIFT)) /* FLASH One Latency cycle */ +# define ACR_LATENCY_2 (2 << ACR_LATENCY_SHIFT) /* FLASH Two Latency cycles */ +#define ACR_HLFCYA (1 << 3) /* FLASH half cycle access */ +#define ACR_PRTFBE (1 << 4) /* FLASH prefetch enable */ + +/************************************************************************************ + * Public Types + ************************************************************************************/ + +/************************************************************************************ + * Public Data + ************************************************************************************/ + +/************************************************************************************ + * Public Functions + ************************************************************************************/ + +#endif /* __ARCH_ARM_SRC_STM32_STM32_FLASH_H */ diff --git a/arch/arm/src/stm32/stm32_internal.h b/arch/arm/src/stm32/stm32_internal.h index 0b4dbdb84c..ba0011dd54 100755 --- a/arch/arm/src/stm32/stm32_internal.h +++ b/arch/arm/src/stm32/stm32_internal.h @@ -72,7 +72,7 @@ #define GPIO_ALT (0) /* These bits set the primary function of the pin: - * .... .... .... .... FFF. .... .... .... + * .... .... .... .... .FF. .... .... .... */ #define GPIO_CNF_SHIFT 13 /* Bits 13-14: GPIO function */ diff --git a/arch/arm/src/stm32/stm32_lowputc.c b/arch/arm/src/stm32/stm32_lowputc.c index da6cdc138c..692ef679a2 100644 --- a/arch/arm/src/stm32/stm32_lowputc.c +++ b/arch/arm/src/stm32/stm32_lowputc.c @@ -220,11 +220,11 @@ void up_lowputc(char ch) #ifdef HAVE_CONSOLE /* Wait until the TX FIFO is not full */ - while ((getreg16(STM32_CONSOLE_BASE + STM32_USART_SR_OFFSET) & USART_SR_TXE) != 0); + while ((getreg32(STM32_CONSOLE_BASE + STM32_USART_SR_OFFSET) & USART_SR_TXE) == 0); /* Then send the character */ - putreg16((uint16)ch, STM32_CONSOLE_BASE + STM32_USART_DR_OFFSET); + putreg32((uint32)ch, STM32_CONSOLE_BASE + STM32_USART_DR_OFFSET); #endif } @@ -330,24 +330,24 @@ void stm32_lowsetup(void) #if defined(HAVE_CONSOLE) && !defined(CONFIG_SUPPRESS_USART_CONFIG) /* Configure CR2 */ - cr = getreg16(STM32_CONSOLE_BASE + STM32_USART_CR2_OFFSET); + cr = getreg32(STM32_CONSOLE_BASE + STM32_USART_CR2_OFFSET); cr &= ~USART_CR2_CLRBITS; cr |= USART_CR2_SETBITS; - putreg16(cr, STM32_CONSOLE_BASE + STM32_USART_CR2_OFFSET); + putreg32(cr, STM32_CONSOLE_BASE + STM32_USART_CR2_OFFSET); /* Configure CR1 */ - cr = getreg16(STM32_CONSOLE_BASE + STM32_USART_CR1_OFFSET); + cr = getreg32(STM32_CONSOLE_BASE + STM32_USART_CR1_OFFSET); cr &= ~USART_CR1_CLRBITS; cr |= USART_CR1_SETBITS; - putreg16(cr, STM32_CONSOLE_BASE + STM32_USART_CR1_OFFSET); + putreg32(cr, STM32_CONSOLE_BASE + STM32_USART_CR1_OFFSET); /* Configure CR3 */ - cr = getreg16(STM32_CONSOLE_BASE + STM32_USART_CR3_OFFSET); + cr = getreg32(STM32_CONSOLE_BASE + STM32_USART_CR3_OFFSET); cr &= ~USART_CR3_CLRBITS; cr |= USART_CR3_SETBITS; - putreg16(cr, STM32_CONSOLE_BASE + STM32_USART_CR3_OFFSET); + putreg32(cr, STM32_CONSOLE_BASE + STM32_USART_CR3_OFFSET); /* Configure the USART Baud Rate */ @@ -355,9 +355,9 @@ void stm32_lowsetup(void) /* Enable Rx, Tx, and the USART */ - cr = getreg16(STM32_CONSOLE_BASE + STM32_USART_CR2_OFFSET); + cr = getreg32(STM32_CONSOLE_BASE + STM32_USART_CR1_OFFSET); cr |= (USART_CR1_UE|USART_CR1_TE|USART_CR1_RE); - putreg16(cr, STM32_CONSOLE_BASE + STM32_USART_CR2_OFFSET); + putreg32(cr, STM32_CONSOLE_BASE + STM32_USART_CR1_OFFSET); #endif #endif /* CONFIG_STM32_USART1 || CONFIG_STM32_USART2 || CONFIG_STM32_USART3 */ } diff --git a/arch/arm/src/stm32/stm32_memorymap.h b/arch/arm/src/stm32/stm32_memorymap.h index 0f271e44e0..89cfcafded 100755 --- a/arch/arm/src/stm32/stm32_memorymap.h +++ b/arch/arm/src/stm32/stm32_memorymap.h @@ -122,11 +122,12 @@ /* 0x40023400 - 0x40027fff: Reserved */ #define STM32_ETHERNET_BASE 0x40028000 /* 0x40028000 - 0x40029fff: Ethernet */ /* 0x40030000 - 0x4fffffff: Reserved */ - -/* Other registers */ - -#define STM32_NVIC_BASE 0xe000e000 /* 0xe000e00-0xe000efff: Nested Vectored Interrupt Controller */ -#define STM32_DEBUGMCU_BASE 0xe0042000 + +/* Other registers */ + +#define STM32_SCS_BASE 0xe000e000 +#define STM32_NVIC_BASE 0xe000e000 /* 0xe000e00-0xe000efff: Nested Vectored Interrupt Controller */ +#define STM32_DEBUGMCU_BASE 0xe0042000 /************************************************************************************ * Public Types diff --git a/arch/arm/src/stm32/stm32_rcc.c b/arch/arm/src/stm32/stm32_rcc.c index 3678f8ca15..10ed409122 100755 --- a/arch/arm/src/stm32/stm32_rcc.c +++ b/arch/arm/src/stm32/stm32_rcc.c @@ -48,6 +48,7 @@ #include "chip.h" #include "stm32_rcc.h" +#include "stm32_flash.h" #include "stm32_internal.h" /**************************************************************************** @@ -356,11 +357,12 @@ void stm32_clockconfig(void) if( timeout > 0) { -#if 0 - /* Enable Prefetch Buffer */ + /* Enable FLASH prefetch buffer and 2 wait states */ - /* Flash 2 wait state */ -#endif + regval = getreg32(STM32_FLASH_ACR); + regval &= ~ACR_LATENCY_MASK; + regval |= (ACR_LATENCY_2|ACR_PRTFBE); + putreg32(regval, STM32_FLASH_ACR); /* Set the HCLK source/divider */ diff --git a/arch/arm/src/stm32/stm32_serial.c b/arch/arm/src/stm32/stm32_serial.c index e56a8e7d0b..c2518707e1 100644 --- a/arch/arm/src/stm32/stm32_serial.c +++ b/arch/arm/src/stm32/stm32_serial.c @@ -325,29 +325,20 @@ static uart_dev_t g_usart3port = * Name: up_serialin ****************************************************************************/ -static inline uint16 up_serialin(struct up_dev_s *priv, int offset) +static inline uint32 up_serialin(struct up_dev_s *priv, int offset) { - return getreg16(priv->usartbase + offset); + return getreg32(priv->usartbase + offset); } /**************************************************************************** * Name: up_serialout ****************************************************************************/ -static inline void up_serialout(struct up_dev_s *priv, int offset, uint16 value) +static inline void up_serialout(struct up_dev_s *priv, int offset, uint32 value) { putreg16(value, priv->usartbase + offset); } -/**************************************************************************** - * Name: up_serialout32 - ****************************************************************************/ - -static inline void up_serialout32(struct up_dev_s *priv, int offset, uint32 value) -{ - putreg32(value, priv->usartbase + offset); -} - /**************************************************************************** * Name: up_disableusartint ****************************************************************************/ @@ -356,8 +347,8 @@ static inline void up_disableusartint(struct up_dev_s *priv, uint16 *ie) { if (ie) { - uint16 cr1; - uint16 cr3; + uint32 cr1; + uint32 cr3; /* USART interrupts: * @@ -399,7 +390,7 @@ static inline void up_disableusartint(struct up_dev_s *priv, uint16 *ie) static inline void up_restoreusartint(struct up_dev_s *priv, uint16 ie) { - uint16 cr; + uint32 cr; /* Save the interrupt mask */ @@ -435,7 +426,7 @@ static int up_setup(struct uart_dev_s *dev) uint32 mantissa; uint32 fraction; uint32 brr; - uint16 regval; + uint32 regval; /* Note: The logic here depends on the fact that that the USART module * was enabled and the pins were configured in stm32_lowsetup(). @@ -458,13 +449,13 @@ static int up_setup(struct uart_dev_s *dev) /* Configure CR1 */ /* Clear M, PCE, PS, TE, REm and all interrupt enable bits */ - + regval = up_serialin(priv, STM32_USART_CR1_OFFSET); regval &= ~(USART_CR1_M|USART_CR1_PCE|USART_CR1_PS|USART_CR1_TE| USART_CR1_RE|USART_CR1_ALLINTS); /* Configure word length and parity mode */ - + if (priv->bits == 9) /* Default: 1 start, 8 data, n stop */ { regval |= USART_CR1_M; /* 1 start, 9 data, n stop */ @@ -481,7 +472,7 @@ static int up_setup(struct uart_dev_s *dev) up_serialout(priv, STM32_USART_CR1_OFFSET, regval); /* Configure CR3 */ - /* Clear CTSE, RTSE, and all interrupt enable bits */ + /* Clear CTSE, RTSE, and all interrupt enable bits */ regval = up_serialin(priv, STM32_USART_CR3_OFFSET); regval &= ~(USART_CR3_CTSIE|USART_CR3_CTSE|USART_CR3_RTSE|USART_CR3_EIE); @@ -517,7 +508,7 @@ static int up_setup(struct uart_dev_s *dev) fraction = (usartdiv32 - (mantissa << 5) + 1) >> 1; brr |= fraction << USART_BRR_FRAC_SHIFT; - up_serialout32(priv, STM32_USART1_BRR, brr); + up_serialout(priv, STM32_USART1_BRR, brr); /* Enable Rx, Tx, and the USART */ @@ -544,7 +535,7 @@ static int up_setup(struct uart_dev_s *dev) static void up_shutdown(struct uart_dev_s *dev) { struct up_dev_s *priv = (struct up_dev_s*)dev->priv; - uint16 regval; + uint32 regval; /* Disable all interrupts */ @@ -786,7 +777,7 @@ static int up_ioctl(struct file *filep, int cmd, unsigned long arg) static int up_receive(struct uart_dev_s *dev, uint32 *status) { struct up_dev_s *priv = (struct up_dev_s*)dev->priv; - uint16 dr; + uint32 dr; /* Get the Rx byte */ @@ -794,7 +785,7 @@ static int up_receive(struct uart_dev_s *dev, uint32 *status) /* Get the Rx byte plux error information. Return those in status */ - *status = (uint32)priv->sr << 16 | dr; + *status = priv->sr << 16 | dr; priv->sr = 0; /* Then return the actual received byte */ @@ -880,7 +871,7 @@ static boolean up_rxavailable(struct uart_dev_s *dev) static void up_send(struct uart_dev_s *dev, int ch) { struct up_dev_s *priv = (struct up_dev_s*)dev->priv; - up_serialout(priv, STM32_USART_DR_OFFSET, (uint16)ch); + up_serialout(priv, STM32_USART_DR_OFFSET, (uint32)ch); } /**************************************************************************** diff --git a/configs/stm3210e-eval/README.txt b/configs/stm3210e-eval/README.txt index 37a2c21489..b36d4f20b5 100755 --- a/configs/stm3210e-eval/README.txt +++ b/configs/stm3210e-eval/README.txt @@ -346,4 +346,7 @@ Where is one of the following: This configuration directory, performs a simple OS test using examples/ostest. + RIDE + This configuration builds a trivial bring-up binary. It is + useful only because it words with the RIDE7 IDE and R-Link debugger. diff --git a/configs/stm3210e-eval/RIDE/nuttx.ctx b/configs/stm3210e-eval/RIDE/nuttx.ctx index 8dad95fea2..eaa41d318a 100755 --- a/configs/stm3210e-eval/RIDE/nuttx.ctx +++ b/configs/stm3210e-eval/RIDE/nuttx.ctx @@ -1,11 +1,11 @@ - + + - - - - + + + @@ -18,8 +18,23 @@ + - + + + + + + + + + +AutoSize="1" Edit="0" Sortable="1" Visible="1" /> + + + + + \ No newline at end of file diff --git a/configs/stm3210e-eval/RIDE/nuttx.rapp b/configs/stm3210e-eval/RIDE/nuttx.rapp index d4fdfd6d45..3a57d815d1 100755 --- a/configs/stm3210e-eval/RIDE/nuttx.rapp +++ b/configs/stm3210e-eval/RIDE/nuttx.rapp @@ -1,47 +1,79 @@ - + + + + + + +
- +
- -
- -
- -
- - -
-
-
+ +
+ + +
+
+ + +
+ +
- +
- +
+ +
+
+ + +
+
+ + + + +
+
+ + + +
+
+ + +
+ +
+ +
+
diff --git a/configs/stm3210e-eval/RIDE/nuttx.rdb b/configs/stm3210e-eval/RIDE/nuttx.rdb index bba763865265e628ab0011d8bfc5afad1d643485..5a4c7145cef268e1c65e4d9d59af9191d2d571e2 100755 GIT binary patch delta 12947 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 J%#-`8{|8NyW%K|5 delta 12624 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 L?Fe4|iSxe!j@5fg diff --git a/configs/stm3210e-eval/ostest/Make.defs b/configs/stm3210e-eval/ostest/Make.defs index 773b3e71ca..2940b86fd0 100644 --- a/configs/stm3210e-eval/ostest/Make.defs +++ b/configs/stm3210e-eval/ostest/Make.defs @@ -37,7 +37,7 @@ include ${TOPDIR}/.config # Setup for the selected toolchain -ifeq ($(CONFIG_STM32_DFU)y) +ifeq ($(CONFIG_STM32_DFU),y) LDSCRIPT = ld.script.dfu else LDSCRIPT = ld.script diff --git a/configs/stm3210e-eval/ostest/defconfig b/configs/stm3210e-eval/ostest/defconfig index 7c5afbdf78..f490ea9fc0 100755 --- a/configs/stm3210e-eval/ostest/defconfig +++ b/configs/stm3210e-eval/ostest/defconfig @@ -92,7 +92,7 @@ CONFIG_STM32_CODESOURCERY=n CONFIG_STM32_DEVKITARM=n CONFIG_STM32_RAISONANCE=n CONFIG_STM32_BUILDROOT=y -CONFIG_STM32_DFU=n +CONFIG_STM32_DFU=y # # Individual subsystems can be enabled: