diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2011-06-07 21:09:02 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2011-06-07 21:09:02 +0000 |
commit | cb336ef5d2995014cb4f2ab74db2756621144c74 (patch) | |
tree | 43e029390e6afe43ed323c3ba799f02c10d4b6c0 /nuttx/configs/micropendous3/README.txt | |
parent | b5b4376dbc56930769ffaba4aadd987629e34c19 (diff) | |
download | px4-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.txt | 214 |
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. |