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
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -157,7 +164,7 @@ void usart1_reset(void)
|
|||||||
|
|
||||||
/* Unconfigure BAUD divisor */
|
/* Unconfigure BAUD divisor */
|
||||||
|
|
||||||
UBRR1 = 0;
|
UBRR1 = 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -237,7 +244,7 @@ void usart1_configure(void)
|
|||||||
|
|
||||||
/* Set the baud rate divisor */
|
/* Set the baud rate divisor */
|
||||||
|
|
||||||
UBRR1 = AVR_UBRR1;
|
UBRR1 = AVR_UBRR1;
|
||||||
}
|
}
|
||||||
#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,35 +123,35 @@ 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],
|
||||||
current_regs[REG_R28], current_regs[REG_R29],
|
current_regs[REG_R28], current_regs[REG_R29],
|
||||||
current_regs[REG_R30], current_regs[REG_R31]);
|
current_regs[REG_R30], current_regs[REG_R31]);
|
||||||
|
|
||||||
lldbg("PC: %02x%02x SP: %02x%02x SREG: %02x\n",
|
lldbg("PC: %02x%02x SP: %02x%02x SREG: %02x\n",
|
||||||
current_regs[REG_PCH], current_regs[REG_PCL],
|
current_regs[REG_PCH], current_regs[REG_PCL],
|
||||||
current_regs[REG_SPH], current_regs[REG_SPL],
|
current_regs[REG_SPH], current_regs[REG_SPL],
|
||||||
current_regs[REG_SREG]);
|
current_regs[REG_SREG]);
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
+81
-79
@@ -133,10 +133,10 @@ NuttX buildroot Toolchain
|
|||||||
cd tools
|
cd tools
|
||||||
./configure.sh amber/<sub-dir>
|
./configure.sh amber/<sub-dir>
|
||||||
|
|
||||||
NOTE: you also must copy avr-libc header files into the NuttX include
|
NOTE: you also must copy avr-libc header files into the NuttX include
|
||||||
directory with command perhaps like:
|
directory with command perhaps like:
|
||||||
|
|
||||||
cp -a /cygdrive/c/WinAVR/include/avr include/.
|
cp -a /cygdrive/c/WinAVR/include/avr include/.
|
||||||
|
|
||||||
2. Download the latest buildroot package into <some-dir>
|
2. Download the latest buildroot package into <some-dir>
|
||||||
|
|
||||||
@@ -223,107 +223,107 @@ Build Notes:
|
|||||||
Amber Web Server Configuration Options
|
Amber Web Server Configuration Options
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
CONFIG_ARCH - Identifies the arch/ subdirectory. This should
|
CONFIG_ARCH - Identifies the arch/ subdirectory. This should
|
||||||
be set to:
|
be set to:
|
||||||
|
|
||||||
CONFIG_ARCH=avr
|
CONFIG_ARCH=avr
|
||||||
|
|
||||||
CONFIG_ARCH_family - For use in C code:
|
CONFIG_ARCH_family - For use in C code:
|
||||||
|
|
||||||
CONFIG_ARCH_AVR=y
|
CONFIG_ARCH_AVR=y
|
||||||
|
|
||||||
CONFIG_ARCH_architecture - For use in C code:
|
CONFIG_ARCH_architecture - For use in C code:
|
||||||
|
|
||||||
CONFIG_ARCH_ATMEGA=y
|
CONFIG_ARCH_ATMEGA=y
|
||||||
|
|
||||||
CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
|
CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
|
||||||
|
|
||||||
CONFIG_ARCH_CHIP=atmega
|
CONFIG_ARCH_CHIP=atmega
|
||||||
|
|
||||||
CONFIG_ARCH_CHIP_name - For use in C code to identify the exact
|
CONFIG_ARCH_CHIP_name - For use in C code to identify the exact
|
||||||
chip:
|
chip:
|
||||||
|
|
||||||
CONFIG_ARCH_CHIP_ATMEGA128=y
|
CONFIG_ARCH_CHIP_ATMEGA128=y
|
||||||
|
|
||||||
CONFIG_ARCH_BOARD - Identifies the configs subdirectory and
|
CONFIG_ARCH_BOARD - Identifies the configs subdirectory and
|
||||||
hence, the board that supports the particular chip or SoC.
|
hence, the board that supports the particular chip or SoC.
|
||||||
|
|
||||||
CONFIG_ARCH_BOARD=amber
|
CONFIG_ARCH_BOARD=amber
|
||||||
|
|
||||||
CONFIG_ARCH_BOARD_name - For use in C code
|
CONFIG_ARCH_BOARD_name - For use in C code
|
||||||
|
|
||||||
CONFIG_ARCH_BOARD_AMBER=y
|
CONFIG_ARCH_BOARD_AMBER=y
|
||||||
|
|
||||||
CONFIG_ARCH_LOOPSPERMSEC - Must be calibrated for correct operation
|
CONFIG_ARCH_LOOPSPERMSEC - Must be calibrated for correct operation
|
||||||
of delay loops
|
of delay loops
|
||||||
|
|
||||||
CONFIG_ENDIAN_BIG - define if big endian (default is little
|
CONFIG_ENDIAN_BIG - define if big endian (default is little
|
||||||
endian)
|
endian)
|
||||||
|
|
||||||
CONFIG_DRAM_SIZE - Describes the installed DRAM. One of:
|
CONFIG_DRAM_SIZE - Describes the installed DRAM. One of:
|
||||||
|
|
||||||
CONFIG_DRAM_SIZE=(8*1024) - (8Kb)
|
CONFIG_DRAM_SIZE=(8*1024) - (8Kb)
|
||||||
|
|
||||||
CONFIG_DRAM_START - The start address of installed DRAM
|
CONFIG_DRAM_START - The start address of installed DRAM
|
||||||
|
|
||||||
CONFIG_DRAM_START=0x10000000
|
CONFIG_DRAM_START=0x10000000
|
||||||
|
|
||||||
CONFIG_DRAM_END - Last address+1 of installed RAM
|
CONFIG_DRAM_END - Last address+1 of installed RAM
|
||||||
|
|
||||||
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
||||||
|
|
||||||
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
|
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
|
||||||
have LEDs
|
have LEDs
|
||||||
|
|
||||||
CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
|
CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
|
||||||
stack. If defined, this symbol is the size of the interrupt
|
stack. If defined, this symbol is the size of the interrupt
|
||||||
stack in bytes. If not defined, the user task stacks will be
|
stack in bytes. If not defined, the user task stacks will be
|
||||||
used during interrupt handling.
|
used during interrupt handling.
|
||||||
|
|
||||||
CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
|
CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
|
||||||
|
|
||||||
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to board architecture.
|
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to board architecture.
|
||||||
|
|
||||||
CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
|
CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
|
||||||
cause a 100 second delay during boot-up. This 100 second delay
|
cause a 100 second delay during boot-up. This 100 second delay
|
||||||
serves no purpose other than it allows you to calibratre
|
serves no purpose other than it allows you to calibratre
|
||||||
CONFIG_ARCH_LOOPSPERMSEC. You simply use a stop watch to measure
|
CONFIG_ARCH_LOOPSPERMSEC. You simply use a stop watch to measure
|
||||||
the 100 second delay then adjust CONFIG_ARCH_LOOPSPERMSEC until
|
the 100 second delay then adjust CONFIG_ARCH_LOOPSPERMSEC until
|
||||||
the delay actually is 100 seconds.
|
the delay actually is 100 seconds.
|
||||||
|
|
||||||
Individual subsystems can be enabled:
|
Individual subsystems can be enabled:
|
||||||
|
|
||||||
CONFIG_AVR_INT0=n
|
CONFIG_AVR_INT0=n
|
||||||
CONFIG_AVR_INT1=n
|
CONFIG_AVR_INT1=n
|
||||||
CONFIG_AVR_INT2=n
|
CONFIG_AVR_INT2=n
|
||||||
CONFIG_AVR_INT3=n
|
CONFIG_AVR_INT3=n
|
||||||
CONFIG_AVR_INT4=n
|
CONFIG_AVR_INT4=n
|
||||||
CONFIG_AVR_INT5=n
|
CONFIG_AVR_INT5=n
|
||||||
CONFIG_AVR_INT6=n
|
CONFIG_AVR_INT6=n
|
||||||
CONFIG_AVR_INT7=n
|
CONFIG_AVR_INT7=n
|
||||||
CONFIG_AVR_TIMER0=n
|
CONFIG_AVR_TIMER0=n
|
||||||
CONFIG_AVR_TIMER1=n
|
CONFIG_AVR_TIMER1=n
|
||||||
CONFIG_AVR_TIMER2=n
|
CONFIG_AVR_TIMER2=n
|
||||||
CONFIG_AVR_TIMER3=n
|
CONFIG_AVR_TIMER3=n
|
||||||
CONFIG_AVR_SPI=n
|
CONFIG_AVR_SPI=n
|
||||||
CONFIG_AVR_USART0=y
|
CONFIG_AVR_USART0=y
|
||||||
CONFIG_AVR_USART1=n
|
CONFIG_AVR_USART1=n
|
||||||
CONFIG_AVR_ADC=n
|
CONFIG_AVR_ADC=n
|
||||||
CONFIG_AVR_ANACOMP=n
|
CONFIG_AVR_ANACOMP=n
|
||||||
CONFIG_AVR_TWI=n
|
CONFIG_AVR_TWI=n
|
||||||
|
|
||||||
ATMEGA specific device driver settings
|
ATMEGA specific device driver settings
|
||||||
|
|
||||||
CONFIG_USARTn_SERIAL_CONSOLE - selects the USARTn for the
|
CONFIG_USARTn_SERIAL_CONSOLE - selects the USARTn for the
|
||||||
console and ttys0 (default is the USART0).
|
console and ttys0 (default is the USART0).
|
||||||
CONFIG_USARTn_RXBUFSIZE - Characters are buffered as received.
|
CONFIG_USARTn_RXBUFSIZE - Characters are buffered as received.
|
||||||
This specific the size of the receive buffer
|
This specific the size of the receive buffer
|
||||||
CONFIG_USARTn_TXBUFSIZE - Characters are buffered before
|
CONFIG_USARTn_TXBUFSIZE - Characters are buffered before
|
||||||
being sent. This specific the size of the transmit buffer
|
being sent. This specific the size of the transmit buffer
|
||||||
CONFIG_USARTn_BAUD - The configure BAUD of the USART. Must be
|
CONFIG_USARTn_BAUD - The configure BAUD of the USART. Must be
|
||||||
CONFIG_USARTn_BITS - The number of bits. Must be either 7 or 8.
|
CONFIG_USARTn_BITS - The number of bits. Must be either 7 or 8.
|
||||||
CONFIG_USARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
|
CONFIG_USARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
|
||||||
CONFIG_USARTn_2STOP - Two stop bits
|
CONFIG_USARTn_2STOP - Two stop bits
|
||||||
|
|
||||||
Configurations
|
Configurations
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
@@ -331,17 +331,19 @@ Configurations
|
|||||||
Each Amber Web Server configuration is maintained in a sudirectory and can
|
Each Amber Web Server configuration is maintained in a sudirectory and can
|
||||||
be selected as follow:
|
be selected as follow:
|
||||||
|
|
||||||
cd tools
|
cd tools
|
||||||
./configure.sh amber/<subdir>
|
./configure.sh amber/<subdir>
|
||||||
cd -
|
cd -
|
||||||
. ./setenv.sh
|
. ./setenv.sh
|
||||||
|
|
||||||
NOTE: You must also copy avr-libc header files, perhaps like:
|
NOTE: You must also copy avr-libc header files, perhaps like:
|
||||||
|
|
||||||
cp -a /cygdrive/c/WinAVR/include/avr include/.
|
cp -a /cygdrive/c/WinAVR/include/avr include/.
|
||||||
|
|
||||||
Where <subdir> is one of the following:
|
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
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
@@ -281,10 +287,10 @@ NuttX buildroot Toolchain
|
|||||||
cd tools
|
cd tools
|
||||||
./configure.sh micropendous3/<sub-dir>
|
./configure.sh micropendous3/<sub-dir>
|
||||||
|
|
||||||
NOTE: you also must copy avr-libc header files into the NuttX include
|
NOTE: you also must copy avr-libc header files into the NuttX include
|
||||||
directory with command perhaps like:
|
directory with command perhaps like:
|
||||||
|
|
||||||
cp -a /cygdrive/c/WinAVR/include/avr include/.
|
cp -a /cygdrive/c/WinAVR/include/avr include/.
|
||||||
|
|
||||||
2. Download the latest buildroot package into <some-dir>
|
2. Download the latest buildroot package into <some-dir>
|
||||||
|
|
||||||
@@ -371,115 +377,115 @@ Build Notes:
|
|||||||
Micropendous3 Configuration Options
|
Micropendous3 Configuration Options
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
CONFIG_ARCH - Identifies the arch/ subdirectory. This should
|
CONFIG_ARCH - Identifies the arch/ subdirectory. This should
|
||||||
be set to:
|
be set to:
|
||||||
|
|
||||||
CONFIG_ARCH=avr
|
CONFIG_ARCH=avr
|
||||||
|
|
||||||
CONFIG_ARCH_family - For use in C code:
|
CONFIG_ARCH_family - For use in C code:
|
||||||
|
|
||||||
CONFIG_ARCH_AVR=y
|
CONFIG_ARCH_AVR=y
|
||||||
|
|
||||||
CONFIG_ARCH_architecture - For use in C code:
|
CONFIG_ARCH_architecture - For use in C code:
|
||||||
|
|
||||||
CONFIG_ARCH_AT90USB=y
|
CONFIG_ARCH_AT90USB=y
|
||||||
|
|
||||||
CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
|
CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
|
||||||
|
|
||||||
CONFIG_ARCH_CHIP=at90usb
|
CONFIG_ARCH_CHIP=at90usb
|
||||||
|
|
||||||
CONFIG_ARCH_CHIP_name - For use in C code to identify the exact
|
CONFIG_ARCH_CHIP_name - For use in C code to identify the exact
|
||||||
chip. This should be exactly one of
|
chip. This should be exactly one of
|
||||||
|
|
||||||
CONFIG_ARCH_CHIP_AT90USB646=y
|
CONFIG_ARCH_CHIP_AT90USB646=y
|
||||||
CONFIG_ARCH_CHIP_AT90USB647=y
|
CONFIG_ARCH_CHIP_AT90USB647=y
|
||||||
CONFIG_ARCH_CHIP_AT90USB1286=y
|
CONFIG_ARCH_CHIP_AT90USB1286=y
|
||||||
CONFIG_ARCH_CHIP_AT90USB1287=y
|
CONFIG_ARCH_CHIP_AT90USB1287=y
|
||||||
|
|
||||||
Depending on which Micropendous3 version you have.
|
Depending on which Micropendous3 version you have.
|
||||||
|
|
||||||
CONFIG_ARCH_BOARD - Identifies the configs subdirectory and
|
CONFIG_ARCH_BOARD - Identifies the configs subdirectory and
|
||||||
hence, the board that supports the particular chip or SoC.
|
hence, the board that supports the particular chip or SoC.
|
||||||
|
|
||||||
CONFIG_ARCH_BOARD=micropendous3
|
CONFIG_ARCH_BOARD=micropendous3
|
||||||
|
|
||||||
CONFIG_ARCH_BOARD_name - For use in C code
|
CONFIG_ARCH_BOARD_name - For use in C code
|
||||||
|
|
||||||
CONFIG_ARCH_BOARD_MICROPENOUS3=y
|
CONFIG_ARCH_BOARD_MICROPENOUS3=y
|
||||||
|
|
||||||
CONFIG_ARCH_LOOPSPERMSEC - Must be calibrated for correct operation
|
CONFIG_ARCH_LOOPSPERMSEC - Must be calibrated for correct operation
|
||||||
of delay loops
|
of delay loops
|
||||||
|
|
||||||
CONFIG_ENDIAN_BIG - define if big endian (default is little
|
CONFIG_ENDIAN_BIG - define if big endian (default is little
|
||||||
endian)
|
endian)
|
||||||
|
|
||||||
CONFIG_DRAM_SIZE - Describes the installed DRAM. One of:
|
CONFIG_DRAM_SIZE - Describes the installed DRAM. One of:
|
||||||
|
|
||||||
CONFIG_DRAM_SIZE=(4*1024) - (4Kb)
|
CONFIG_DRAM_SIZE=(4*1024) - (4Kb)
|
||||||
CONFIG_DRAM_SIZE=(8*1024) - (8Kb)
|
CONFIG_DRAM_SIZE=(8*1024) - (8Kb)
|
||||||
|
|
||||||
CONFIG_DRAM_START - The start address of installed DRAM
|
CONFIG_DRAM_START - The start address of installed DRAM
|
||||||
|
|
||||||
CONFIG_DRAM_START=0x10000000
|
CONFIG_DRAM_START=0x10000000
|
||||||
|
|
||||||
CONFIG_DRAM_END - Last address+1 of installed RAM
|
CONFIG_DRAM_END - Last address+1 of installed RAM
|
||||||
|
|
||||||
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
||||||
|
|
||||||
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
|
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
|
||||||
have LEDs
|
have LEDs
|
||||||
|
|
||||||
CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
|
CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
|
||||||
stack. If defined, this symbol is the size of the interrupt
|
stack. If defined, this symbol is the size of the interrupt
|
||||||
stack in bytes. If not defined, the user task stacks will be
|
stack in bytes. If not defined, the user task stacks will be
|
||||||
used during interrupt handling.
|
used during interrupt handling.
|
||||||
|
|
||||||
CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
|
CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
|
||||||
|
|
||||||
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to board architecture.
|
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to board architecture.
|
||||||
|
|
||||||
CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
|
CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
|
||||||
cause a 100 second delay during boot-up. This 100 second delay
|
cause a 100 second delay during boot-up. This 100 second delay
|
||||||
serves no purpose other than it allows you to calibratre
|
serves no purpose other than it allows you to calibratre
|
||||||
CONFIG_ARCH_LOOPSPERMSEC. You simply use a stop watch to measure
|
CONFIG_ARCH_LOOPSPERMSEC. You simply use a stop watch to measure
|
||||||
the 100 second delay then adjust CONFIG_ARCH_LOOPSPERMSEC until
|
the 100 second delay then adjust CONFIG_ARCH_LOOPSPERMSEC until
|
||||||
the delay actually is 100 seconds.
|
the delay actually is 100 seconds.
|
||||||
|
|
||||||
Individual subsystems can be enabled:
|
Individual subsystems can be enabled:
|
||||||
|
|
||||||
CONFIG_AVR_INT0=n
|
CONFIG_AVR_INT0=n
|
||||||
CONFIG_AVR_INT1=n
|
CONFIG_AVR_INT1=n
|
||||||
CONFIG_AVR_INT2=n
|
CONFIG_AVR_INT2=n
|
||||||
CONFIG_AVR_INT3=n
|
CONFIG_AVR_INT3=n
|
||||||
CONFIG_AVR_INT4=n
|
CONFIG_AVR_INT4=n
|
||||||
CONFIG_AVR_INT5=n
|
CONFIG_AVR_INT5=n
|
||||||
CONFIG_AVR_INT6=n
|
CONFIG_AVR_INT6=n
|
||||||
CONFIG_AVR_INT7=n
|
CONFIG_AVR_INT7=n
|
||||||
CONFIG_AVR_USBHOST=n
|
CONFIG_AVR_USBHOST=n
|
||||||
CONFIG_AVR_USBDEV=n
|
CONFIG_AVR_USBDEV=n
|
||||||
CONFIG_AVR_WDT=n
|
CONFIG_AVR_WDT=n
|
||||||
CONFIG_AVR_TIMER0=n
|
CONFIG_AVR_TIMER0=n
|
||||||
CONFIG_AVR_TIMER1=n
|
CONFIG_AVR_TIMER1=n
|
||||||
CONFIG_AVR_TIMER2=n
|
CONFIG_AVR_TIMER2=n
|
||||||
CONFIG_AVR_TIMER3=n
|
CONFIG_AVR_TIMER3=n
|
||||||
CONFIG_AVR_SPI=n
|
CONFIG_AVR_SPI=n
|
||||||
CONFIG_AVR_USART1=y
|
CONFIG_AVR_USART1=y
|
||||||
CONFIG_AVR_ANACOMP=n
|
CONFIG_AVR_ANACOMP=n
|
||||||
CONFIG_AVR_ADC=n
|
CONFIG_AVR_ADC=n
|
||||||
CONFIG_AVR_TWI=n
|
CONFIG_AVR_TWI=n
|
||||||
|
|
||||||
AT90USB specific device driver settings
|
AT90USB specific device driver settings
|
||||||
|
|
||||||
CONFIG_USARTn_SERIAL_CONSOLE - selects the USARTn for the
|
CONFIG_USARTn_SERIAL_CONSOLE - selects the USARTn for the
|
||||||
console and ttys0 (default is no serial console).
|
console and ttys0 (default is no serial console).
|
||||||
CONFIG_USARTn_RXBUFSIZE - Characters are buffered as received.
|
CONFIG_USARTn_RXBUFSIZE - Characters are buffered as received.
|
||||||
This specific the size of the receive buffer
|
This specific the size of the receive buffer
|
||||||
CONFIG_USARTn_TXBUFSIZE - Characters are buffered before
|
CONFIG_USARTn_TXBUFSIZE - Characters are buffered before
|
||||||
being sent. This specific the size of the transmit buffer
|
being sent. This specific the size of the transmit buffer
|
||||||
CONFIG_USARTn_BAUD - The configure BAUD of the USART. Must be
|
CONFIG_USARTn_BAUD - The configure BAUD of the USART. Must be
|
||||||
CONFIG_USARTn_BITS - The number of bits. Must be either 7 or 8.
|
CONFIG_USARTn_BITS - The number of bits. Must be either 7 or 8.
|
||||||
CONFIG_USARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
|
CONFIG_USARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
|
||||||
CONFIG_USARTn_2STOP - Two stop bits
|
CONFIG_USARTn_2STOP - Two stop bits
|
||||||
|
|
||||||
Configurations
|
Configurations
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
@@ -487,17 +493,42 @@ Configurations
|
|||||||
Each Micropendous3 configuration is maintained in a sudirectory and can
|
Each Micropendous3 configuration is maintained in a sudirectory and can
|
||||||
be selected as follow:
|
be selected as follow:
|
||||||
|
|
||||||
cd tools
|
cd tools
|
||||||
./configure.sh micropendous3/<subdir>
|
./configure.sh micropendous3/<subdir>
|
||||||
cd -
|
cd -
|
||||||
. ./setenv.sh
|
. ./setenv.sh
|
||||||
|
|
||||||
NOTE: You must also copy avr-libc header files, perhaps like:
|
NOTE: You must also copy avr-libc header files, perhaps like:
|
||||||
|
|
||||||
cp -a /cygdrive/c/WinAVR/include/avr include/.
|
cp -a /cygdrive/c/WinAVR/include/avr include/.
|
||||||
|
|
||||||
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