mirror of
https://github.com/apache/nuttx.git
synced 2026-05-31 23:40:19 +08:00
Add hello configuratin for AVR
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3699 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
@@ -56,7 +56,7 @@
|
|||||||
* Private Definitions
|
* Private Definitions
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
/* Baud rate settings for normal and double speed settings */
|
/* Baud rate settings for normal and double speed modes */
|
||||||
|
|
||||||
#define AVR_NORMAL_UBRR1 \
|
#define AVR_NORMAL_UBRR1 \
|
||||||
((((BOARD_CPU_CLOCK / 16) + (CONFIG_USART1_BAUD / 2)) / (CONFIG_USART1_BAUD)) - 1)
|
((((BOARD_CPU_CLOCK / 16) + (CONFIG_USART1_BAUD / 2)) / (CONFIG_USART1_BAUD)) - 1)
|
||||||
@@ -100,13 +100,20 @@
|
|||||||
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
|
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
|
||||||
# define UART1_DOUBLE_SPEED 1
|
# define UART1_DOUBLE_SPEED 1
|
||||||
# endif
|
# endif
|
||||||
#else
|
#elif BOARD_CPU_CLOCK <= 16000000
|
||||||
# if CONFIG_USART1_BAUD <= 38400
|
# if CONFIG_USART1_BAUD <= 38400
|
||||||
# define AVR_UBRR1 AVR_NORMAL_UBRR1
|
# define AVR_UBRR1 AVR_NORMAL_UBRR1
|
||||||
# else
|
# else
|
||||||
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
|
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
|
||||||
# define UART1_DOUBLE_SPEED 1
|
# define UART1_DOUBLE_SPEED 1
|
||||||
# endif
|
# endif
|
||||||
|
#else
|
||||||
|
# if CONFIG_USART1_BAUD <= 57600
|
||||||
|
# define AVR_UBRR1 AVR_NORMAL_UBRR1
|
||||||
|
# else
|
||||||
|
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
|
||||||
|
# define UART1_DOUBLE_SPEED 1
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
* Private Definitions
|
* Private Definitions
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
/* USART0 Baud rate settings for normal and double speed settings */
|
/* USART0 Baud rate settings for normal and double speed modes */
|
||||||
|
|
||||||
#define AVR_NORMAL_UBRR0 \
|
#define AVR_NORMAL_UBRR0 \
|
||||||
(((((BOARD_CPU_CLOCK / 16) + (CONFIG_USART0_BAUD / 2)) / (CONFIG_USART0_BAUD)) - 1)
|
(((((BOARD_CPU_CLOCK / 16) + (CONFIG_USART0_BAUD / 2)) / (CONFIG_USART0_BAUD)) - 1)
|
||||||
@@ -99,16 +99,23 @@
|
|||||||
# define AVR_UBRR0 AVR_DBLSPEED_UBRR0
|
# define AVR_UBRR0 AVR_DBLSPEED_UBRR0
|
||||||
# define UART0_DOUBLE_SPEED 1
|
# define UART0_DOUBLE_SPEED 1
|
||||||
# endif
|
# endif
|
||||||
#else
|
#elif BOARD_CPU_CLOCK <= 16000000
|
||||||
# if CONFIG_USART0_BAUD <= 38400
|
# if CONFIG_USART0_BAUD <= 38400
|
||||||
# define AVR_UBRR0 AVR_NORMAL_UBRR0
|
# define AVR_UBRR0 AVR_NORMAL_UBRR0
|
||||||
# else
|
# else
|
||||||
# define AVR_UBRR0 AVR_DBLSPEED_UBRR0
|
# define AVR_UBRR0 AVR_DBLSPEED_UBRR0
|
||||||
# define UART0_DOUBLE_SPEED 1
|
# define UART0_DOUBLE_SPEED 1
|
||||||
# endif
|
# endif
|
||||||
|
#else
|
||||||
|
# if CONFIG_USART0_BAUD <= 57600
|
||||||
|
# define AVR_UBRR0 AVR_NORMAL_UBRR0
|
||||||
|
# else
|
||||||
|
# define AVR_UBRR0 AVR_DBLSPEED_UBRR0
|
||||||
|
# define UART0_DOUBLE_SPEED 1
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* USART1 Baud rate settings for normal and double speed settings */
|
/* USART1 Baud rate settings for normal and double speed modes */
|
||||||
|
|
||||||
#define AVR_NORMAL_UBRR1 \
|
#define AVR_NORMAL_UBRR1 \
|
||||||
((((BOARD_CPU_CLOCK / 16) + (CONFIG_USART1_BAUD / 2)) / (CONFIG_USART1_BAUD)) - 1)
|
((((BOARD_CPU_CLOCK / 16) + (CONFIG_USART1_BAUD / 2)) / (CONFIG_USART1_BAUD)) - 1)
|
||||||
@@ -152,13 +159,20 @@
|
|||||||
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
|
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
|
||||||
# define UART1_DOUBLE_SPEED 1
|
# define UART1_DOUBLE_SPEED 1
|
||||||
# endif
|
# endif
|
||||||
#else
|
#elif BOARD_CPU_CLOCK <= 16000000
|
||||||
# if CONFIG_USART1_BAUD <= 38400
|
# if CONFIG_USART1_BAUD <= 38400
|
||||||
# define AVR_UBRR1 AVR_NORMAL_UBRR1
|
# define AVR_UBRR1 AVR_NORMAL_UBRR1
|
||||||
# else
|
# else
|
||||||
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
|
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
|
||||||
# define UART1_DOUBLE_SPEED 1
|
# define UART1_DOUBLE_SPEED 1
|
||||||
# endif
|
# endif
|
||||||
|
#else
|
||||||
|
# if CONFIG_USART1_BAUD <= 57600
|
||||||
|
# define AVR_UBRR1 AVR_NORMAL_UBRR1
|
||||||
|
# else
|
||||||
|
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
|
||||||
|
# define UART1_DOUBLE_SPEED 1
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|||||||
@@ -123,28 +123,28 @@ static inline void up_registerdump(void)
|
|||||||
|
|
||||||
if (current_regs)
|
if (current_regs)
|
||||||
{
|
{
|
||||||
lldbg("R%d: %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
lldbg("R%02d: %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
||||||
0,
|
0,
|
||||||
current_regs[REG_R0], current_regs[REG_R1],
|
current_regs[REG_R0], current_regs[REG_R1],
|
||||||
current_regs[REG_R2], current_regs[REG_R3],
|
current_regs[REG_R2], current_regs[REG_R3],
|
||||||
current_regs[REG_R4], current_regs[REG_R5],
|
current_regs[REG_R4], current_regs[REG_R5],
|
||||||
current_regs[REG_R6], current_regs[REG_R7]);
|
current_regs[REG_R6], current_regs[REG_R7]);
|
||||||
|
|
||||||
lldbg("R%d: %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
lldbg("R%02d: %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
||||||
8,
|
8,
|
||||||
current_regs[REG_R8], current_regs[REG_R9],
|
current_regs[REG_R8], current_regs[REG_R9],
|
||||||
current_regs[REG_R10], current_regs[REG_R11],
|
current_regs[REG_R10], current_regs[REG_R11],
|
||||||
current_regs[REG_R12], current_regs[REG_R13],
|
current_regs[REG_R12], current_regs[REG_R13],
|
||||||
current_regs[REG_R14], current_regs[REG_R15]);
|
current_regs[REG_R14], current_regs[REG_R15]);
|
||||||
|
|
||||||
lldbg("R%d: %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
lldbg("R%02d: %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
||||||
16,
|
16,
|
||||||
current_regs[REG_R16], current_regs[REG_R17],
|
current_regs[REG_R16], current_regs[REG_R17],
|
||||||
current_regs[REG_R18], current_regs[REG_R19],
|
current_regs[REG_R18], current_regs[REG_R19],
|
||||||
current_regs[REG_R20], current_regs[REG_R21],
|
current_regs[REG_R20], current_regs[REG_R21],
|
||||||
current_regs[REG_R22], current_regs[REG_R23]);
|
current_regs[REG_R22], current_regs[REG_R23]);
|
||||||
|
|
||||||
lldbg("R%d: %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
lldbg("R%02d: %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
||||||
24,
|
24,
|
||||||
current_regs[REG_R24], current_regs[REG_R25],
|
current_regs[REG_R24], current_regs[REG_R25],
|
||||||
current_regs[REG_R26], current_regs[REG_R27],
|
current_regs[REG_R26], current_regs[REG_R27],
|
||||||
@@ -192,7 +192,7 @@ void up_dumpstate(void)
|
|||||||
|
|
||||||
/* Get the limits on the interrupt stack memory */
|
/* Get the limits on the interrupt stack memory */
|
||||||
|
|
||||||
#if CONFIG_ARCH_INTERRUPTSTACK > 3
|
#if CONFIG_ARCH_INTERRUPTSTACK > 0
|
||||||
istackbase = (uint16_t)&g_intstackbase;
|
istackbase = (uint16_t)&g_intstackbase;
|
||||||
istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~3) - 4;
|
istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~3) - 4;
|
||||||
|
|
||||||
|
|||||||
@@ -344,4 +344,6 @@ Where <subdir> is one of the following:
|
|||||||
|
|
||||||
ostest:
|
ostest:
|
||||||
This configuration directory, performs a simple OS test using
|
This configuration directory, performs a simple OS test using
|
||||||
apps/examples/ostest.
|
apps/examples/ostest. NOTE: The OS test is quite large. In order
|
||||||
|
to get it to fit within AVR memory constraints, it will probably be
|
||||||
|
necessary to disable some OS features.
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ CONFIG_AVR_TWI=n
|
|||||||
CONFIG_USART0_SERIAL_CONSOLE=y
|
CONFIG_USART0_SERIAL_CONSOLE=y
|
||||||
CONFIG_USART0_TXBUFSIZE=256
|
CONFIG_USART0_TXBUFSIZE=256
|
||||||
CONFIG_USART0_RXBUFSIZE=256
|
CONFIG_USART0_RXBUFSIZE=256
|
||||||
CONFIG_USART0_BAUD=115200
|
CONFIG_USART0_BAUD=38400
|
||||||
CONFIG_USART0_BITS=8
|
CONFIG_USART0_BITS=8
|
||||||
CONFIG_USART0_PARITY=0
|
CONFIG_USART0_PARITY=0
|
||||||
CONFIG_USART0_2STOP=0
|
CONFIG_USART0_2STOP=0
|
||||||
@@ -147,7 +147,7 @@ CONFIG_USART0_2STOP=0
|
|||||||
CONFIG_USART1_SERIAL_CONSOLE=n
|
CONFIG_USART1_SERIAL_CONSOLE=n
|
||||||
CONFIG_USART1_TXBUFSIZE=256
|
CONFIG_USART1_TXBUFSIZE=256
|
||||||
CONFIG_USART1_RXBUFSIZE=256
|
CONFIG_USART1_RXBUFSIZE=256
|
||||||
CONFIG_USART1_BAUD=115200
|
CONFIG_USART1_BAUD=38400
|
||||||
CONFIG_USART1_BITS=8
|
CONFIG_USART1_BITS=8
|
||||||
CONFIG_USART1_PARITY=0
|
CONFIG_USART1_PARITY=0
|
||||||
CONFIG_USART1_2STOP=0
|
CONFIG_USART1_2STOP=0
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ Contents
|
|||||||
o Pin Usage
|
o Pin Usage
|
||||||
o Serial Console
|
o Serial Console
|
||||||
o Atmel mkII Connection
|
o Atmel mkII Connection
|
||||||
|
o DFU Bootloader
|
||||||
o Toolchains
|
o Toolchains
|
||||||
o Windows Native Toolchains
|
o Windows Native Toolchains
|
||||||
o NuttX buildroot Toolchain
|
o NuttX buildroot Toolchain
|
||||||
@@ -156,15 +157,20 @@ Atmel mkII Connection
|
|||||||
Pin 6 nSRT Pin 5 Reset
|
Pin 6 nSRT Pin 5 Reset
|
||||||
Pin 9 TDI Pin 4 MOSI
|
Pin 9 TDI Pin 4 MOSI
|
||||||
|
|
||||||
Connect your Micropendous board programmed with AVRISP firmware to another AVR using SPI (you can even connect to another USB AVR board to program its' bootloader):
|
DFU Bootloader
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Micropendous Target AVR
|
There is also an DFU bootloader that resides in the upper 8Kb of FLASH
|
||||||
PB4 RESET
|
(unless you ERASE the flash with with ICE). You can enter this bootloader
|
||||||
PB1(SCK) SCK
|
(if it is in FLASH) by:
|
||||||
PB2(MOSI) MOSI/PDI
|
|
||||||
PB3(MISO) MISO/PDO
|
Holding both the SW1 (RESET) and SW2, then releasing SW1 while continuing
|
||||||
GND GND+AGND
|
to hold SW2. SW2 connects to the PE2/HWB signal and causes a reset into
|
||||||
Vcc Vcc+AVcc
|
the bootloader memory region.
|
||||||
|
|
||||||
|
Then you can use FLIP to load code into FLASH (available at the Atmel Web
|
||||||
|
Site). The DFU USB driver for the DFU bootload is available in the usb
|
||||||
|
subdirectory in the FLIP installation location.
|
||||||
|
|
||||||
Serial Console
|
Serial Console
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
@@ -498,6 +504,31 @@ NOTE: You must also copy avr-libc header files, perhaps like:
|
|||||||
|
|
||||||
Where <subdir> is one of the following:
|
Where <subdir> is one of the following:
|
||||||
|
|
||||||
|
hello:
|
||||||
|
The simple apps/examples/hello "Hello, World!" example.
|
||||||
|
|
||||||
|
FLASH/SRAM Requirements (as of 6/12/2011):
|
||||||
|
|
||||||
|
$ avr-elf-size nuttx
|
||||||
|
text data bss dec hex filename
|
||||||
|
31064 1075 449 32588 7f4c nuttx
|
||||||
|
|
||||||
|
Strings are in SRAM.
|
||||||
|
|
||||||
ostest:
|
ostest:
|
||||||
This configuration directory, performs a simple OS test using
|
This configuration directory, performs a simple OS test using
|
||||||
apps/examples/ostest.
|
apps/examples/ostest. NOTE: The OS test is quite large. In order
|
||||||
|
to get it to fit within AVR memory constraints, it will probably be
|
||||||
|
necessary to disable some OS features.
|
||||||
|
|
||||||
|
As currently configured, This example will not fit into FLASH
|
||||||
|
or smaller AT90USB devices (or into the RAM of *any* AT90USB
|
||||||
|
devices).
|
||||||
|
|
||||||
|
FLASH/SRAM Requirements (as of 6/12/2011):
|
||||||
|
|
||||||
|
$ avr-elf-size nuttx
|
||||||
|
text data bss dec hex filename
|
||||||
|
67386 15583 10414 93383 16cc7 nuttx
|
||||||
|
|
||||||
|
Strings are in SRAM.
|
||||||
|
|||||||
@@ -0,0 +1,149 @@
|
|||||||
|
############################################################################
|
||||||
|
# configs/micropendous3/hello/Make.defs
|
||||||
|
#
|
||||||
|
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
|
||||||
|
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
include ${TOPDIR}/.config
|
||||||
|
|
||||||
|
# Setup for the selected toolchain
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_AVR_WINAVR),y)
|
||||||
|
# WinAVR toolchain under Windows/Cygwin
|
||||||
|
CROSSDEV = avr-
|
||||||
|
WINTOOL = y
|
||||||
|
MAXOPTIMIZATION = -O2
|
||||||
|
ARCHCPUFLAGS = -mmcu=at90usb647
|
||||||
|
LDFLAGS += -nostartfiles -nodefaultlibs
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_AVR_LINUXGCC),y)
|
||||||
|
# GCC toolchain under Linux
|
||||||
|
CROSSDEV = avr-
|
||||||
|
MAXOPTIMIZATION = -O2
|
||||||
|
ARCHCPUFLAGS = -mmcu=at90usb647
|
||||||
|
LDFLAGS += -nostartfiles -nodefaultlibs
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_AVR_BUILDROOT),y)
|
||||||
|
# NuttX buildroot GCC toolchain under Linux or Cygwin
|
||||||
|
CROSSDEV = avr-elf-
|
||||||
|
MAXOPTIMIZATION = -O2
|
||||||
|
ARCHCPUFLAGS = -mmcu=at90usb647
|
||||||
|
LDFLAGS += -nostartfiles -nodefaultlibs
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(WINTOOL),y)
|
||||||
|
# Windows-native toolchains
|
||||||
|
DIRLINK = $(TOPDIR)/tools/winlink.sh
|
||||||
|
DIRUNLINK = $(TOPDIR)/tools/unlink.sh
|
||||||
|
MKDEP = $(TOPDIR)/tools/mknulldeps.sh
|
||||||
|
ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
|
||||||
|
ARCHXXINCLUDES = $(ARCHINCLUDES) -w $(TOPDIR)/include/cxx}"
|
||||||
|
ARCHSCRIPT = -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/hello/ld.script}"
|
||||||
|
else
|
||||||
|
# Linux/Cygwin-native toolchain
|
||||||
|
MKDEP = $(TOPDIR)/tools/mkdeps.sh
|
||||||
|
ARCHINCLUDES = -I. -isystem "$(TOPDIR)/include"
|
||||||
|
ARCHXXINCLUDES = $(ARCHINCLUDES) -isystem "$(TOPDIR)/include/cxx"
|
||||||
|
ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/hello/ld.script
|
||||||
|
endif
|
||||||
|
|
||||||
|
CC = $(CROSSDEV)gcc
|
||||||
|
CXX = $(CROSSDEV)g++
|
||||||
|
CPP = $(CROSSDEV)gcc -E
|
||||||
|
LD = $(CROSSDEV)ld
|
||||||
|
AR = $(CROSSDEV)ar rcs
|
||||||
|
NM = $(CROSSDEV)nm
|
||||||
|
OBJCOPY = $(CROSSDEV)objcopy
|
||||||
|
OBJDUMP = $(CROSSDEV)objdump
|
||||||
|
|
||||||
|
ifeq ("${CONFIG_DEBUG_SYMBOLS}","y")
|
||||||
|
ARCHOPTIMIZATION = -g
|
||||||
|
else
|
||||||
|
ARCHOPTIMIZATION = $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
|
||||||
|
endif
|
||||||
|
|
||||||
|
ARCHCFLAGS = -fno-builtin
|
||||||
|
ARCHCXXFLAGS = -fno-builtin -fno-exceptions
|
||||||
|
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
||||||
|
ARCHWARNINGSXX = -Wall -Wshadow
|
||||||
|
ARCHDEFINES =
|
||||||
|
|
||||||
|
CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
|
||||||
|
CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
|
||||||
|
CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
|
||||||
|
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
|
||||||
|
AFLAGS = $(CFLAGS) -D__ASSEMBLY__
|
||||||
|
|
||||||
|
NXFLATLDFLAGS1 = -r -d -warn-common
|
||||||
|
NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat.ld -no-check-sections
|
||||||
|
LDNXFLATFLAGS = -e main -s 2048
|
||||||
|
|
||||||
|
OBJEXT = .o
|
||||||
|
LIBEXT = .a
|
||||||
|
EXEEXT =
|
||||||
|
|
||||||
|
define PREPROCESS
|
||||||
|
@echo "CPP: $1->$2"
|
||||||
|
@$(CPP) $(CPPFLAGS) $1 -o $2
|
||||||
|
endef
|
||||||
|
|
||||||
|
define COMPILE
|
||||||
|
@echo "CC: $1"
|
||||||
|
@$(CC) -c $(CFLAGS) $1 -o $2
|
||||||
|
endef
|
||||||
|
|
||||||
|
define COMPILEXX
|
||||||
|
@echo "CXX: $1"
|
||||||
|
@$(CXX) -c $(CXXFLAGS) $1 -o $2
|
||||||
|
endef
|
||||||
|
|
||||||
|
define ASSEMBLE
|
||||||
|
@echo "AS: $1"
|
||||||
|
@$(CC) -c $(AFLAGS) $1 -o $2
|
||||||
|
endef
|
||||||
|
|
||||||
|
define ARCHIVE
|
||||||
|
echo "AR: $2"; \
|
||||||
|
$(AR) $1 $2 || { echo "$(AR) $1 $2 FAILED!" ; exit 1 ; }
|
||||||
|
endef
|
||||||
|
|
||||||
|
define CLEAN
|
||||||
|
@rm -f *.o *.a
|
||||||
|
endef
|
||||||
|
|
||||||
|
HOSTCC = gcc
|
||||||
|
HOSTINCLUDES = -I.
|
||||||
|
HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -g -pipe
|
||||||
|
HOSTLDFLAGS =
|
||||||
|
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
############################################################################
|
||||||
|
# configs/micropendous3/hello/appconfig
|
||||||
|
#
|
||||||
|
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
|
||||||
|
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
# Path to example in apps/examples containing the user_start entry point
|
||||||
|
|
||||||
|
CONFIGURED_APPS += examples/hello
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,202 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* configs/micropendous3/hello/ld.script
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011 Gregory Nutt. All rights reserved.
|
||||||
|
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
/* Memory Regions ***********************************************************/
|
||||||
|
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
flash (rx) : ORIGIN = 0, LENGTH = 128K
|
||||||
|
sram (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0
|
||||||
|
eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K
|
||||||
|
}
|
||||||
|
|
||||||
|
OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")
|
||||||
|
OUTPUT_ARCH(avr:5)
|
||||||
|
ENTRY(__start)
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
/* Read-only sections, merged into text segment: */
|
||||||
|
|
||||||
|
.hash : { *(.hash) }
|
||||||
|
.dynsym : { *(.dynsym) }
|
||||||
|
.dynstr : { *(.dynstr) }
|
||||||
|
.gnu.version : { *(.gnu.version) }
|
||||||
|
.gnu.version_d : { *(.gnu.version_d) }
|
||||||
|
.gnu.version_r : { *(.gnu.version_r) }
|
||||||
|
.rel.init : { *(.rel.init) }
|
||||||
|
.rela.init : { *(.rela.init) }
|
||||||
|
|
||||||
|
.rel.text :
|
||||||
|
{
|
||||||
|
*(.rel.text)
|
||||||
|
*(.rel.text.*)
|
||||||
|
*(.rel.gnu.linkonce.t*)
|
||||||
|
}
|
||||||
|
|
||||||
|
.rela.text :
|
||||||
|
{
|
||||||
|
*(.rela.text)
|
||||||
|
*(.rela.text.*)
|
||||||
|
*(.rela.gnu.linkonce.t*)
|
||||||
|
}
|
||||||
|
|
||||||
|
.rel.fini : { *(.rel.fini) }
|
||||||
|
.rela.fini : { *(.rela.fini) }
|
||||||
|
|
||||||
|
.rel.rodata :
|
||||||
|
{
|
||||||
|
*(.rel.rodata)
|
||||||
|
*(.rel.rodata.*)
|
||||||
|
*(.rel.gnu.linkonce.r*)
|
||||||
|
}
|
||||||
|
|
||||||
|
.rela.rodata :
|
||||||
|
{
|
||||||
|
*(.rela.rodata)
|
||||||
|
*(.rela.rodata.*)
|
||||||
|
*(.rela.gnu.linkonce.r*)
|
||||||
|
}
|
||||||
|
|
||||||
|
.rel.data :
|
||||||
|
{
|
||||||
|
*(.rel.data)
|
||||||
|
*(.rel.data.*)
|
||||||
|
*(.rel.gnu.linkonce.d*)
|
||||||
|
}
|
||||||
|
|
||||||
|
.rela.data :
|
||||||
|
{
|
||||||
|
*(.rela.data)
|
||||||
|
*(.rela.data.*)
|
||||||
|
*(.rela.gnu.linkonce.d*)
|
||||||
|
}
|
||||||
|
|
||||||
|
.rel.ctors : { *(.rel.ctors) }
|
||||||
|
.rela.ctors : { *(.rela.ctors) }
|
||||||
|
.rel.dtors : { *(.rel.dtors) }
|
||||||
|
.rela.dtors : { *(.rela.dtors) }
|
||||||
|
.rel.got : { *(.rel.got) }
|
||||||
|
.rela.got : { *(.rela.got) }
|
||||||
|
.rel.bss : { *(.rel.bss) }
|
||||||
|
.rela.bss : { *(.rela.bss) }
|
||||||
|
.rel.plt : { *(.rel.plt) }
|
||||||
|
.rela.plt : { *(.rela.plt) }
|
||||||
|
|
||||||
|
.text :
|
||||||
|
{
|
||||||
|
_stext = . ;
|
||||||
|
*(.vectors)
|
||||||
|
*(.init)
|
||||||
|
*(.handlers)
|
||||||
|
*(.text)
|
||||||
|
*(.text.*)
|
||||||
|
_etext = . ;
|
||||||
|
} > flash
|
||||||
|
|
||||||
|
_eronly = ABSOLUTE(.); /* See below */
|
||||||
|
|
||||||
|
.data :
|
||||||
|
{
|
||||||
|
_sdata = ABSOLUTE(.);
|
||||||
|
*(.data .data.*)
|
||||||
|
*(.gnu.linkonce.d.*)
|
||||||
|
CONSTRUCTORS
|
||||||
|
_edata = ABSOLUTE(.);
|
||||||
|
} > sram AT > flash
|
||||||
|
|
||||||
|
.bss :
|
||||||
|
{
|
||||||
|
_sbss = ABSOLUTE(.);
|
||||||
|
*(.bss .bss.*)
|
||||||
|
*(.gnu.linkonce.b.*)
|
||||||
|
*(COMMON)
|
||||||
|
_ebss = ABSOLUTE(.);
|
||||||
|
} > sram
|
||||||
|
|
||||||
|
/* Global data not cleared after reset. */
|
||||||
|
|
||||||
|
.noinit :
|
||||||
|
{
|
||||||
|
_snoinit = ABSOLUTE(.);
|
||||||
|
*(.noinit*)
|
||||||
|
_enoinit = ABSOLUTE(.);
|
||||||
|
} > sram
|
||||||
|
|
||||||
|
.eeprom :
|
||||||
|
{
|
||||||
|
_seeprom = ABSOLUTE(.);
|
||||||
|
*(.eeprom*)
|
||||||
|
_eeeprom = ABSOLUTE(.);
|
||||||
|
} > eeprom
|
||||||
|
|
||||||
|
/* Stabs debugging sections. */
|
||||||
|
|
||||||
|
.stab 0 : { *(.stab) }
|
||||||
|
.stabstr 0 : { *(.stabstr) }
|
||||||
|
.stab.excl 0 : { *(.stab.excl) }
|
||||||
|
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||||
|
.stab.index 0 : { *(.stab.index) }
|
||||||
|
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||||
|
.comment 0 : { *(.comment) }
|
||||||
|
|
||||||
|
/* DWARF debug sections.
|
||||||
|
Symbols in the DWARF debugging sections are relative to the beginning
|
||||||
|
of the section so we begin them at 0. */
|
||||||
|
|
||||||
|
/* DWARF 1 */
|
||||||
|
|
||||||
|
.debug 0 : { *(.debug) }
|
||||||
|
.line 0 : { *(.line) }
|
||||||
|
|
||||||
|
/* GNU DWARF 1 extensions */
|
||||||
|
|
||||||
|
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
||||||
|
.debug_sfnames 0 : { *(.debug_sfnames) }
|
||||||
|
|
||||||
|
/* DWARF 1.1 and DWARF 2 */
|
||||||
|
|
||||||
|
.debug_aranges 0 : { *(.debug_aranges) }
|
||||||
|
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||||
|
|
||||||
|
/* DWARF 2 */
|
||||||
|
|
||||||
|
.debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
|
||||||
|
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||||
|
.debug_line 0 : { *(.debug_line) }
|
||||||
|
.debug_frame 0 : { *(.debug_frame) }
|
||||||
|
.debug_str 0 : { *(.debug_str) }
|
||||||
|
.debug_loc 0 : { *(.debug_loc) }
|
||||||
|
.debug_macinfo 0 : { *(.debug_macinfo) }
|
||||||
|
}
|
||||||
Executable
+63
@@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# configs/micropendous3/hello/setenv.sh
|
||||||
|
#
|
||||||
|
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
|
||||||
|
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
if [ "$_" = "$0" ] ; then
|
||||||
|
echo "You must source this script, not run it!" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
WD=`pwd`
|
||||||
|
if [ ! -x "setenv.sh" ]; then
|
||||||
|
echo "This script must be executed from the top-level NuttX build directory"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${PATH_ORIG}" ]; then
|
||||||
|
export PATH_ORIG="${PATH}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# This the Cygwin path to the location where I installed the WinAVR
|
||||||
|
# toolchain under windows. This is *not* the default install
|
||||||
|
# location so you will probably have to edit this. You will also have
|
||||||
|
# to edit this if you install the Linux AVR toolchain as well
|
||||||
|
#export TOOLCHAIN_BIN="/cygdrive/c/WinAVR/bin"
|
||||||
|
|
||||||
|
# This the Cygwin path to the location where I build the buildroot
|
||||||
|
# toolchain.
|
||||||
|
export TOOLCHAIN_BIN="${WD}/../misc/buildroot/build_avr/staging_dir/bin"
|
||||||
|
|
||||||
|
# Add the path to the toolchain to the PATH varialble
|
||||||
|
export PATH="${TOOLCHAIN_BIN}:/sbin:/usr/sbin:${PATH_ORIG}"
|
||||||
|
|
||||||
|
echo "PATH : ${PATH}"
|
||||||
@@ -142,7 +142,7 @@ CONFIG_AVR_TWI=n
|
|||||||
CONFIG_USART1_SERIAL_CONSOLE=y
|
CONFIG_USART1_SERIAL_CONSOLE=y
|
||||||
CONFIG_USART1_TXBUFSIZE=256
|
CONFIG_USART1_TXBUFSIZE=256
|
||||||
CONFIG_USART1_RXBUFSIZE=256
|
CONFIG_USART1_RXBUFSIZE=256
|
||||||
CONFIG_USART1_BAUD=115200
|
CONFIG_USART1_BAUD=38400
|
||||||
CONFIG_USART1_BITS=8
|
CONFIG_USART1_BITS=8
|
||||||
CONFIG_USART1_PARITY=0
|
CONFIG_USART1_PARITY=0
|
||||||
CONFIG_USART1_2STOP=0
|
CONFIG_USART1_2STOP=0
|
||||||
|
|||||||
Reference in New Issue
Block a user