Initial support for ATmega328P (Arduino Duemilanove).
authorlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Fri, 26 Mar 2010 19:19:22 +0000 (19:19 +0000)
committerlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Fri, 26 Mar 2010 19:19:22 +0000 (19:19 +0000)
Added cdef file for wizard, added cpu detection macros, serial debug is now working.

git-svn-id: https://src.develer.com/svnoss/bertos/trunk@3281 38d2e660-2303-0410-9eaa-f027e97ec537

bertos/cpu/attr.h
bertos/cpu/avr/drv/kdebug_avr.c
bertos/cpu/avr/info/ATmega328P.cdef [new file with mode: 0644]
bertos/cpu/detect.h

index f54e6b0689e83c436fab62b2b5670dc5200046a0..dae231ffa673a158e17dcfe4beb2beee1dc452e9 100644 (file)
        /// Valid pointers should be >= than this value (used for debug)
        #if CPU_AVR_ATMEGA8 || CPU_AVR_ATMEGA32 || CPU_AVR_ATMEGA103
                #define CPU_RAM_START       0x60
-       #elif CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA168
+       #elif CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA168 || CPU_AVR_ATMEGA328P
                #define CPU_RAM_START       0x100
        #elif CPU_AVR_ATMEGA1281
                #define CPU_RAM_START       0x200
index 0d2c730633bb8f643d517adad0712ea49b406fc7..4cdaf94e8bcab4da6641ef2fc3b1f5d4a7ac4fe3 100644 (file)
@@ -73,7 +73,7 @@
        #define KDBG_UART0_BUS_TX    do {} while (0)
        #endif
 
-       #if CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA168
+       #if CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA168 || CPU_AVR_ATMEGA328P
                #define UCR UCSR0B
                #define UDR UDR0
                #define USR UCSR0A
@@ -245,7 +245,7 @@ INLINE void kdbg_hw_init(void)
                                #error CONFIG_KDEBUG_PORT must be either 0 or 1
                        #endif
 
-               #elif CPU_AVR_ATMEGA168
+               #elif CPU_AVR_ATMEGA168 || CPU_AVR_ATMEGA328P
                        UBRR0H = (uint8_t)(period>>8);
                        UBRR0L = (uint8_t)period;
                        KDBG_UART0_BUS_INIT;
diff --git a/bertos/cpu/avr/info/ATmega328P.cdef b/bertos/cpu/avr/info/ATmega328P.cdef
new file mode 100644 (file)
index 0000000..a6d6105
--- /dev/null
@@ -0,0 +1,55 @@
+#
+#-*- 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/)
+#
+# -->
+#
+# Cpu info of the ATMega328P.
+#
+# This file contain all info for the BeRTOS wizard.
+#
+# \author Luca Ottaviano <lottaviano@develer.com>
+#
+#
+
+# Import the common settings for the path.
+include("avr.common")
+
+# Short description of the cpu.
+CPU_DESC += [ "Arduino Duemilanove",
+              "32 Kbyte in-System Programmable Flash",
+             "2 Kbytes internal SRAM memory",
+             "1 Kbyte EEPROM memory" ]
+
+# If we use the GCC compiler we should pass some flags.
+CORE_CPU = "atmega328p"
+
+include("avr_post.common")
index 6c0d8f6e35f4fd606e9a148b952997c19e756f8d..c6de054b189732fcbec2a8d0507232dffde62bf1 100644 (file)
                #define CPU_AVR_ATMEGA168   0
        #endif
 
+       #if defined(__AVR_ATmega328P__)
+               #define CPU_AVR_ATMEGA328P   1
+       #else
+               #define CPU_AVR_ATMEGA328P   0
+       #endif
+
        #if defined(__AVR_ATmega1281__)
                #define CPU_AVR_ATMEGA1281  1
        #else
        #endif
 
        #if CPU_AVR_ATMEGA32 + CPU_AVR_ATMEGA64 + CPU_AVR_ATMEGA103 + CPU_AVR_ATMEGA128 \
-         + CPU_AVR_ATMEGA8 + CPU_AVR_ATMEGA168 + CPU_AVR_ATMEGA1281 != 1
+         + CPU_AVR_ATMEGA8 + CPU_AVR_ATMEGA168 + CPU_AVR_ATMEGA328P + CPU_AVR_ATMEGA1281 != 1
                #error AVR CPU configuration error
        #endif
 #else
        #define CPU_AVR                 0
        #define CPU_AVR_ATMEGA8         0
        #define CPU_AVR_ATMEGA168       0
+       #define CPU_AVR_ATMEGA328P       0
        #define CPU_AVR_ATMEGA32        0
        #define CPU_AVR_ATMEGA64        0
        #define CPU_AVR_ATMEGA103       0