Add base support for STM32F101C4 Cortex-M3 cpu.
authoraleph <aleph@38d2e660-2303-0410-9eaa-f027e97ec537>
Thu, 2 Dec 2010 15:35:33 +0000 (15:35 +0000)
committeraleph <aleph@38d2e660-2303-0410-9eaa-f027e97ec537>
Thu, 2 Dec 2010 15:35:33 +0000 (15:35 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@4608 38d2e660-2303-0410-9eaa-f027e97ec537

bertos/cpu/attr.h
bertos/cpu/cortex-m3/info/STM32F101C4.cdef [new file with mode: 0644]
bertos/cpu/cortex-m3/io/stm32.h
bertos/cpu/cortex-m3/scripts/stm32f101c4_ram.ld [new file with mode: 0644]
bertos/cpu/cortex-m3/scripts/stm32f101c4_rom.ld [new file with mode: 0644]
bertos/cpu/detect.h

index 2dab957ff79434de7184accd3650c21c5dccd50f..8b1fa4c7c15e1b99eb7e5a6fedb3958a289ca9bb 100644 (file)
        #define CPU_HARVARD            0
 
        /// Valid pointers should be >= than this value (used for debug)
-       #if (CPU_CM3_LM3S1968 || CPU_CM3_LM3S8962 || CPU_CM3_STM32F103RB || CPU_CM3_SAM3)
+       #if (CPU_CM3_LM3S1968 || CPU_CM3_LM3S8962 || CPU_CM3_STM32 || CPU_CM3_SAM3)
                #define CPU_RAM_START 0x20000000
        #else
                #warning Fix CPU_RAM_START address for your Cortex-M3, default value set to 0x20000000
diff --git a/bertos/cpu/cortex-m3/info/STM32F101C4.cdef b/bertos/cpu/cortex-m3/info/STM32F101C4.cdef
new file mode 100644 (file)
index 0000000..334f36e
--- /dev/null
@@ -0,0 +1,68 @@
+#
+#-*- coding: utf-8 -*-
+#
+# \file
+# <!--
+# This file is part of BeRTOS.
+#
+# Bertos 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 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+# As a special exception, you may use this file as part of a free software
+# library without restriction.  Specifically, if other files instantiate
+# templates or use macros or inline functions from this file, or you compile
+# this file and link it with other files to produce an executable, this
+# file does not by itself cause the resulting executable to be covered by
+# the GNU General Public License.  This exception does not however
+# invalidate any other reasons why the executable file might be covered by
+# the GNU General Public License.
+#
+# Copyright 2010 Develer S.r.l. (http://www.develer.com/)
+#
+# -->
+#
+# General CPU info denfinition for Cortex-M3-based STM32F101C4 cpu.
+#
+# This file contain all info for the BeRTOS wizard.
+#
+# \author Stefano Fedrigo <aleph@develer.com>
+#
+#
+
+# Import the common settings for the path.
+include("cm3.common")
+
+# CPU type used for flashing/debugging
+MK_PROGRAMMER_CPU = "stm32"
+MK_FLASH_SCRIPT = PRG_SCRIPTS_DIR + "arm/flash-stm32.sh"
+
+# CPU default clock frequency
+CPU_DEFAULT_FREQ = "36000000UL"
+
+# Special CPU related tags.
+CPU_TAGS += ["stm32"]
+
+# Additional hw drivers.
+MK_CPU_CSRC += DRV_DIR + "gpio_stm32.c " + DRV_DIR + "clock_stm32.c "
+
+# Short description of the cpu.
+CPU_DESC += [ "16 Kbytes on-chip flash memory",
+             "4 Kbytes on-chip SRAM memory",
+             "2 UARTs interfaces",
+             "1 I2C interface",
+             "1 ADC x10 channels 12-bit" ]
+
+# GCC flags for this cpu.
+MK_CPU_CPPFLAGS += " -D__ARM_STM32F101C4__"
+MK_CPU_LDFLAGS += " -T " + SCRIPT_DIR + "stm32f101c4_rom.ld"
index 9c2fe1df610bc4abdbdf6ae34c9eea22dac48734..2db09213c7b26eb810e063433f847db53dbd2816 100644 (file)
 #include "stm32_i2c.h"
 #include "stm32_flash.h"
 
-#if CPU_CM3_STM32F103RB
+#if CPU_CM3_STM32F101C4
+       #define GPIO_USART1_TX_PIN      BV(9)
+       #define GPIO_USART1_RX_PIN      BV(10)
+       #define GPIO_USART2_TX_PIN      BV(2)
+       #define GPIO_USART2_RX_PIN      BV(3)
+#elif CPU_CM3_STM32F103RB
        #define GPIO_USART1_TX_PIN      BV(9)
        #define GPIO_USART1_RX_PIN      BV(10)
        #define GPIO_USART2_TX_PIN      BV(2)
        #error No USART pins are defined for select cpu
 #endif
 
-#if CPU_CM3_STM32F103RB
+#if CPU_CM3_STM32F101C4
+       #define GPIO_I2C1_SCL_PIN       BV(6)
+       #define GPIO_I2C1_SDA_PIN       BV(7)
+#elif CPU_CM3_STM32F103RB
        #define GPIO_I2C1_SCL_PIN       BV(6)
        #define GPIO_I2C1_SDA_PIN       BV(7)
        #define GPIO_I2C2_SCL_PIN       BV(10)
@@ -71,7 +79,7 @@
        #error No i2c pins are defined for select cpu
 #endif
 
-#if CPU_CM3_STM32F103RB
+#if CPU_CM3_STM32F101C4 || CPU_CM3_STM32F103RB
        #define FLASH_PAGE_SIZE   1024
 #else
        #error No embedded definition for select cpu
diff --git a/bertos/cpu/cortex-m3/scripts/stm32f101c4_ram.ld b/bertos/cpu/cortex-m3/scripts/stm32f101c4_ram.ld
new file mode 100644 (file)
index 0000000..0637501
--- /dev/null
@@ -0,0 +1,49 @@
+/**
+ * \file
+ * <!--
+ * This file is part of BeRTOS.
+ *
+ * Bertos 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * As a special exception, you may use this file as part of a free software
+ * library without restriction.  Specifically, if other files instantiate
+ * templates or use macros or inline functions from this file, or you compile
+ * this file and link it with other files to produce an executable, this
+ * file does not by itself cause the resulting executable to be covered by
+ * the GNU General Public License.  This exception does not however
+ * invalidate any other reasons why the executable file might be covered by
+ * the GNU General Public License.
+ *
+ * Copyright 2010 Develer S.r.l. (http://www.develer.com/)
+ *
+ * -->
+ *
+ * \author Stefano Fedrigo <aleph@develer.com>
+ *
+ * \brief Script for STM32F101C4 cpu.
+ *
+ */
+
+/*
+ * Define memory configuration for STM32F101C4
+ */
+MEMORY
+{
+       rom(rx) : org = 0x00000000, len = 16k
+       ram(rwx) : org = 0x20000000, len = 4k
+}
+
+INCLUDE "bertos/cpu/cortex-m3/scripts/cortex-m3_ram.ld"
+
diff --git a/bertos/cpu/cortex-m3/scripts/stm32f101c4_rom.ld b/bertos/cpu/cortex-m3/scripts/stm32f101c4_rom.ld
new file mode 100644 (file)
index 0000000..f2ea131
--- /dev/null
@@ -0,0 +1,49 @@
+/**
+ * \file
+ * <!--
+ * This file is part of BeRTOS.
+ *
+ * Bertos 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * As a special exception, you may use this file as part of a free software
+ * library without restriction.  Specifically, if other files instantiate
+ * templates or use macros or inline functions from this file, or you compile
+ * this file and link it with other files to produce an executable, this
+ * file does not by itself cause the resulting executable to be covered by
+ * the GNU General Public License.  This exception does not however
+ * invalidate any other reasons why the executable file might be covered by
+ * the GNU General Public License.
+ *
+ * Copyright 2010 Develer S.r.l. (http://www.develer.com/)
+ *
+ * -->
+ *
+ * \author Stefano Fedrigo <aleph@develer.com>
+ *
+ * \brief Script for STM32F101C4 cpu.
+ *
+ */
+
+/*
+ * Define memory configuration for STM32F101C4
+ */
+MEMORY
+{
+       rom(rx) : org = 0x00000000, len = 16k
+       ram(rwx) : org = 0x20000000, len = 4k
+}
+
+INCLUDE "bertos/cpu/cortex-m3/scripts/cortex-m3_rom.ld"
+
index 7b57ae70fa65b45a16dd1bb19f83200f5e83e8dc..ce462b2ea4b441f1b770a7c9a034cfac5450422b 100644 (file)
                #define CPU_CM3_LM3S8962    0
        #endif
 
+       #if defined (__ARM_STM32F101C4__)
+               #define CPU_CM3_STM32       1
+               #define CPU_CM3_STM32F101C4 1
+               #define CPU_NAME            "STM32F101C4"
+       #else
+               #define CPU_CM3_STM32F101C4 0
+       #endif
+
        #if defined (__ARM_STM32F103RB__)
                #define CPU_CM3_STM32       1
                #define CPU_CM3_STM32F103RB 1
                #define CPU_CM3_STM32       0
                #define CPU_CM3_SAM3        0
        #elif defined (CPU_CM3_STM32)
-               #if CPU_CM3_STM32F103RB + 0 != 1
+               #if CPU_CM3_STM32F101C4 + CPU_CM3_STM32F103RB + 0 != 1
                        #error STM32 Cortex-M3 CPU configuration error
                #endif
                #define CPU_CM3_LM3S        0
 
        #define CPU_CM3_STM32 0
        #define CPU_CM3_STM32F103RB 0
+       #define CPU_CM3_STM32F101C4 0
 
        #define CPU_CM3_SAM3 0
        #define CPU_CM3_SAM3N 0