summaryrefslogtreecommitdiff
path: root/ucoo/arch
diff options
context:
space:
mode:
authorNicolas Schodet2015-05-04 11:57:31 +0200
committerNicolas Schodet2019-10-07 00:44:50 +0200
commitc5171a64652771c5c835754ef65f9cef7d78aa76 (patch)
tree7b114961d3dcd95cc23dd76c9aec4385f745d93d /ucoo/arch
parent9fe68a0e7b216f8142d6b0423d5cf8fc08ec7091 (diff)
Add STM32F1 support
Diffstat (limited to 'ucoo/arch')
-rw-r--r--ucoo/arch/Module3
-rw-r--r--ucoo/arch/arch.stm32.cc7
-rw-r--r--ucoo/arch/arch.stm32f1.cc37
-rw-r--r--ucoo/arch/arch.stm32f4.cc38
-rw-r--r--ucoo/arch/stm32f1/stm32f1.ld6
5 files changed, 83 insertions, 8 deletions
diff --git a/ucoo/arch/Module b/ucoo/arch/Module
index 6c23a20..8ed9210 100644
--- a/ucoo/arch/Module
+++ b/ucoo/arch/Module
@@ -1 +1,2 @@
-arch_SOURCES := arch.host.cc arch.stm32.cc syscalls.newlib.cc syscalls.cc
+arch_SOURCES := arch.host.cc arch.stm32.cc arch.stm32f1.cc arch.stm32f4.cc \
+ syscalls.newlib.cc syscalls.cc
diff --git a/ucoo/arch/arch.stm32.cc b/ucoo/arch/arch.stm32.cc
index e5d5669..a715b75 100644
--- a/ucoo/arch/arch.stm32.cc
+++ b/ucoo/arch/arch.stm32.cc
@@ -24,18 +24,11 @@
#include "ucoo/arch/arch.hh"
#include "ucoo/common.hh"
-#include <libopencm3/stm32/rcc.h>
#include <libopencm3/cm3/scb.h>
namespace ucoo {
void
-arch_init (int argc, const char **argv)
-{
- rcc_clock_setup_hse_3v3 (&hse_8mhz_3v3[CLOCK_3V3_120MHZ]);
-}
-
-void
arch_reset ()
{
SCB_AIRCR = SCB_AIRCR_VECTKEY | SCB_AIRCR_SYSRESETREQ;
diff --git a/ucoo/arch/arch.stm32f1.cc b/ucoo/arch/arch.stm32f1.cc
new file mode 100644
index 0000000..090e2c1
--- /dev/null
+++ b/ucoo/arch/arch.stm32f1.cc
@@ -0,0 +1,37 @@
+// ucoolib - Microcontroller object oriented library. {{{
+//
+// Copyright (C) 2015 Nicolas Schodet
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// }}}
+#include "ucoo/arch/arch.hh"
+#include "ucoo/common.hh"
+
+#include <libopencm3/stm32/rcc.h>
+
+namespace ucoo {
+
+void
+arch_init (int argc, const char **argv)
+{
+ rcc_clock_setup_in_hse_12mhz_out_72mhz ();
+}
+
+} // namespace ucoo
diff --git a/ucoo/arch/arch.stm32f4.cc b/ucoo/arch/arch.stm32f4.cc
new file mode 100644
index 0000000..c3e7dc2
--- /dev/null
+++ b/ucoo/arch/arch.stm32f4.cc
@@ -0,0 +1,38 @@
+// ucoolib - Microcontroller object oriented library. {{{
+//
+// Copyright (C) 2012 Nicolas Schodet
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// }}}
+#include "ucoo/arch/arch.hh"
+#include "ucoo/common.hh"
+
+#include <libopencm3/stm32/rcc.h>
+
+namespace ucoo {
+
+void
+arch_init (int argc, const char **argv)
+{
+ rcc_clock_setup_hse_3v3 (&hse_8mhz_3v3[CLOCK_3V3_120MHZ]);
+ rcc_ahb_frequency = 120000000;
+}
+
+} // namespace ucoo
diff --git a/ucoo/arch/stm32f1/stm32f1.ld b/ucoo/arch/stm32f1/stm32f1.ld
new file mode 100644
index 0000000..de413c4
--- /dev/null
+++ b/ucoo/arch/stm32f1/stm32f1.ld
@@ -0,0 +1,6 @@
+MEMORY
+{
+ rom (rx) : ORIGIN = 0x08000000, LENGTH = 256K
+ ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
+}
+INCLUDE libopencm3_stm32f1.ld