summaryrefslogtreecommitdiff
path: root/nuttx/configs/micropendous3/README.txt
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-06-07 21:09:02 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-06-07 21:09:02 +0000
commitcb336ef5d2995014cb4f2ab74db2756621144c74 (patch)
tree43e029390e6afe43ed323c3ba799f02c10d4b6c0 /nuttx/configs/micropendous3/README.txt
parentb5b4376dbc56930769ffaba4aadd987629e34c19 (diff)
downloadpx4-nuttx-cb336ef5d2995014cb4f2ab74db2756621144c74.tar.gz
px4-nuttx-cb336ef5d2995014cb4f2ab74db2756621144c74.tar.bz2
px4-nuttx-cb336ef5d2995014cb4f2ab74db2756621144c74.zip
Setting up AVR build environment
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3679 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/configs/micropendous3/README.txt')
-rw-r--r--nuttx/configs/micropendous3/README.txt214
1 files changed, 199 insertions, 15 deletions
diff --git a/nuttx/configs/micropendous3/README.txt b/nuttx/configs/micropendous3/README.txt
index 00831d62c..562cf1187 100644
--- a/nuttx/configs/micropendous3/README.txt
+++ b/nuttx/configs/micropendous3/README.txt
@@ -8,8 +8,19 @@ NuttX was ported using the AT90USB647 version. As of this writing,
documentation for the Micropendous board is available here:
http://code.google.com/p/micropendous/wiki/Micropendous3
-Micropendous 3 Features
-^^^^^^^^^^^^^^^^^^^^^^^
+Contents
+^^^^^^^^
+
+ o Micropendous3 Features
+ o Toolchains
+ o Windows Native Toolchains
+ o NuttX buildroot Toolchain
+ o avr-libc
+ o Micropendous3 Configuration Options
+ o Configurations
+
+Micropendous3 Features
+^^^^^^^^^^^^^^^^^^^^^^
o Based on the 64-pin USB AVR Microcontrollers: AT90USB646, AT90USB647,
AT90USB1286, or AT90USB1287.
@@ -34,33 +45,37 @@ Micropendous 3 Features
o Size LxWxH (including headers): 3.15" x 0.8" x 0.6" =~ 8cm x 2cm x 1.5cm
o Completely OpenHardware Design
-Contents
-^^^^^^^^
-
- o Toolchains
- o Windows Native Toolchains
- o avr-libc
-
Toolchains
^^^^^^^^^^
Buildroot:
- There is a buildroot version for the AVR boards here:
- http://sourceforge.net/projects/nuttx/files/buildroot/. However, that
- toolchain cannot be recommended at this time because it lacks certain
- important patches.
+ There is a DIY buildroot version for the AVR boards here:
+ http://sourceforge.net/projects/nuttx/files/buildroot/. See the
+ following section for details on building this toolchain.
+
+ It is assumed in some places that buildroot toolchain is available
+ at ../misc/buildroot/build_avr. Edit the setenv.sh file if
+ this is not the case.
+
+ After configuring NuttX, make sure that CONFIG_AVR_BUILDROOT=y is set in your
+ .config file.
WinAVR:
For Cygwin development environment on Windows machines, you can use
WinAVR: http://sourceforge.net/projects/winavr/files/
- It is assumed in some places that WinAVR is installed at C:/WinAVR.
+ It is assumed in some places that WinAVR is installed at C:/WinAVR. Edit the
+ setenv.sh file if this is not the case.
After configuring NuttX, make sure that CONFIG_AVR_WINAVR=y is set in your
.config file.
+ WARNING: There is an incompatible version of cygwin.dll in the WinAVR/bin
+ directory! Make sure that the path to the correct cygwin.dll file precedes
+ the path to the WinAVR binaries!
+
Linux:
For Linux, there are widely available avr-gcc packages. On Ubuntu, use:
@@ -108,6 +123,43 @@ Windows Native Toolchains
If you have problems with the dependency build (for example, if you are
not building on C:), then you may need to modify tools/mkdeps.sh
+ An additional issue with the WinAVR toolchain, in particular, is that it
+ contains an incompatible version of the Cygwin DLL in its bin/ directory.
+ You must take care that the correct Cygwin DLL is used.
+
+NuttX buildroot Toolchain
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ If NuttX buildroot toolchain source tarball cne can be downloaded from the
+ NuttX SourceForge download site (https://sourceforge.net/projects/nuttx/files/).
+ This GNU toolchain builds and executes in the Linux or Cygwin environment.
+
+ 1. You must have already configured Nuttx in <some-dir>/nuttx.
+
+ cd tools
+ ./configure.sh micropendous3/<sub-dir>
+
+ 2. Download the latest buildroot package into <some-dir>
+
+ 3. unpack the buildroot tarball. The resulting directory may
+ have versioning information on it like buildroot-x.y.z. If so,
+ rename <some-dir>/buildroot-x.y.z to <some-dir>/buildroot.
+
+ 4. cd <some-dir>/buildroot
+
+ 5. cp configs/avr-defconfig-4.5.2 .config
+
+ 6. make oldconfig
+
+ 7. make
+
+ 8. Edit setenv.h, if necessary, so that the PATH variable includes
+ the path to the newly built binaries.
+
+ See the file configs/README.txt in the buildroot source tree. That has more
+ detailed PLUS some special instructions that you will need to follow if you
+ are building a toolchain for Cygwin under Windows.
+
avr-libc
^^^^^^^^
@@ -116,7 +168,9 @@ Build Notes:
In any case, avr-libc is required. http://www.nongnu.org/avr-libc/.
An snapshot of avr-lib is included in the WinAVR installation. For Linux
development platforms, avr-libc package is readily available (and would
- be installed in the apt-get command shown above).
+ be installed in the apt-get command shown above). But if you are using
+ the NuttX buildroot configuration on Cygwin, then you will have to build
+ avr-libc from binaries.
Below are instructions for building avr-lib from fresh sources (I started
this before I realized at tha avr-lib is included in the WinAVR install):
@@ -159,3 +213,133 @@ Include Path:
AVR header files will be at C:/WinAVR/avr/include/avr
AVRLIBC_INCPATH=${cygpath -u "C:/WinAVR/avr/include/avr"}
+
+Micropendous3 Configuration Options
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ CONFIG_ARCH - Identifies the arch/ subdirectory. This should
+ be set to:
+
+ CONFIG_ARCH=avr
+
+ CONFIG_ARCH_family - For use in C code:
+
+ CONFIG_ARCH_AVR=y
+
+ CONFIG_ARCH_architecture - For use in C code:
+
+ CONFIG_ARCH_AT90USB=y
+
+ CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
+
+ CONFIG_ARCH_CHIP=at90usb
+
+ CONFIG_ARCH_CHIP_name - For use in C code to identify the exact
+ chip. This should be exactly one of
+
+ CONFIG_ARCH_CHIP_AT90USB646=y
+ CONFIG_ARCH_CHIP_AT90USB647=y
+ CONFIG_ARCH_CHIP_AT90USB1286=y
+ CONFIG_ARCH_CHIP_AT90USB1287=y
+
+ Depending on which Micropendous3 version you have.
+
+ CONFIG_ARCH_BOARD - Identifies the configs subdirectory and
+ hence, the board that supports the particular chip or SoC.
+
+ CONFIG_ARCH_BOARD=micropendous3
+
+ CONFIG_ARCH_BOARD_name - For use in C code
+
+ CONFIG_ARCH_BOARD_MICROPENOUS3=y
+
+ CONFIG_ARCH_LOOPSPERMSEC - Must be calibrated for correct operation
+ of delay loops
+
+ CONFIG_ENDIAN_BIG - define if big endian (default is little
+ endian)
+
+ CONFIG_DRAM_SIZE - Describes the installed DRAM. One of:
+
+ CONFIG_DRAM_SIZE=(4*1024) - (4Kb)
+ CONFIG_DRAM_SIZE=(8*1024) - (8Kb)
+
+ CONFIG_DRAM_START - The start address of installed DRAM
+
+ CONFIG_DRAM_START=0x10000000
+
+ CONFIG_DRAM_END - Last address+1 of installed RAM
+
+ CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
+
+ CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
+ have LEDs
+
+ CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
+ stack. If defined, this symbol is the size of the interrupt
+ stack in bytes. If not defined, the user task stacks will be
+ used during interrupt handling.
+
+ CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
+
+ CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to board architecture.
+
+ CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
+ cause a 100 second delay during boot-up. This 100 second delay
+ serves no purpose other than it allows you to calibratre
+ CONFIG_ARCH_LOOPSPERMSEC. You simply use a stop watch to measure
+ the 100 second delay then adjust CONFIG_ARCH_LOOPSPERMSEC until
+ the delay actually is 100 seconds.
+
+ Individual subsystems can be enabled:
+
+ CONFIG_AVR_INT0=n
+ CONFIG_AVR_INT1=n
+ CONFIG_AVR_INT2=n
+ CONFIG_AVR_INT3=n
+ CONFIG_AVR_INT4=n
+ CONFIG_AVR_INT5=n
+ CONFIG_AVR_INT6=n
+ CONFIG_AVR_INT7=n
+ CONFIG_AVR_USBHOST=n
+ CONFIG_AVR_USBDEV=n
+ CONFIG_AVR_WDT=n
+ CONFIG_AVR_TIMER0=n
+ CONFIG_AVR_TIMER1=n
+ CONFIG_AVR_TIMER2=n
+ CONFIG_AVR_TIMER3=n
+ CONFIG_AVR_SPI=n
+ CONFIG_AVR_UART1=y
+ CONFIG_AVR_ANACOMP=n
+ CONFIG_AVR_ADC=n
+ CONFIG_AVR_TWI=n
+
+ AT90USB specific device driver settings
+
+ CONFIG_UARTn_SERIAL_CONSOLE - selects the UARTn for the
+ console and ttys0 (default is the UART0).
+ CONFIG_UARTn_RXBUFSIZE - Characters are buffered as received.
+ This specific the size of the receive buffer
+ CONFIG_UARTn_TXBUFSIZE - Characters are buffered before
+ being sent. This specific the size of the transmit buffer
+ CONFIG_UARTn_BAUD - The configure BAUD of the UART. Must be
+ CONFIG_UARTn_BITS - The number of bits. Must be either 7 or 8.
+ CONFIG_UARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
+ CONFIG_UARTn_2STOP - Two stop bits
+
+Configurations
+^^^^^^^^^^^^^^
+
+Each Micropendous3 configuration is maintained in a sudirectory and can
+be selected as follow:
+
+ cd tools
+ ./configure.sh micropendous3/<subdir>
+ cd -
+ . ./setenv.sh
+
+Where <subdir> is one of the following:
+
+ ostest:
+ This configuration directory, performs a simple OS test using
+ apps/examples/ostest.