This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit d0665bcda8a4c7ca49e61615b5f1365e89d745f1
Author: Matteo Golin <matteo.go...@gmail.com>
AuthorDate: Fri May 23 19:18:46 2025 -0400

    docs/avr/at90usb/micropendous3: Migrate README.txt
    
    Migrated the README.txt files to RST format.
    
    Signed-off-by: Matteo Golin <matteo.go...@gmail.com>
---
 .../avr/at90usb/boards/micropendous3/README.txt    | 546 --------------------
 .../avr/at90usb/boards/micropendous3/index.rst     | 573 ++++++++++++++++++++-
 2 files changed, 568 insertions(+), 551 deletions(-)

diff --git 
a/Documentation/platforms/avr/at90usb/boards/micropendous3/README.txt 
b/Documentation/platforms/avr/at90usb/boards/micropendous3/README.txt
deleted file mode 100644
index e61f19a2c4..0000000000
--- a/Documentation/platforms/avr/at90usb/boards/micropendous3/README.txt
+++ /dev/null
@@ -1,546 +0,0 @@
-README
-^^^^^^
-
-This is the README file for the port of NuttX to the Micropendous 3 board.
-This board is develepmend by http://code.google.com/p/opendous/.  The
-Micropendous 3 is based on an Atmel AT90USB646, 647, 1286 or 1287 MCU.
-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
-
-Contents
-^^^^^^^^
-
-  o Micropendous3 Features
-  o Pin Usage
-  o Atmel AVRISP mkII Connection
-  o DFU Bootloader
-  o Serial Console
-  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.
-  o USB Full Speed (12Mbit/s)
-  o USB Device Mode (Host mode supported with AT90USBxx7 devices)
-  o 60kb (AT90USB64) or 120kb (AT90USB128) of available FLASH memory for
-    your programs (4kb(AT90USB64)/8kb(AT90USB128) used by USB bootloader -
-    stock Atmel or LUFA)
-  o 4 kbytes SRAM and 2 kbytes of EEPROM (AT90USB64) or 8 kbytes SRAM and 4
-    kbytes of EEPROM (AT90USB128)
-  o External SRAM is possible.  Layout for CY7C1019D 1-Mbit SRAM (unpopulated)
-  o USB powered
-  o 16MHz crystal
-  o 48 General Purpose IO Pins (47 with external SRAM)
-  o Vcc=VBUS jumper selects whether USB VBUS or an external supply is used
-    to power the board
-  o RESET and HWB buttons to enable firmware loading over USB (no external
-    programmer required)
-  o HWB can be used as a user button
-  o USB-A Plug
-  o JTAG header
-  o Size LxWxH (including headers): 3.15" x 0.8" x 0.6" =~ 8cm x 2cm x 1.5cm
-  o Completely OpenHardware Design
-
-Pin Usage
-^^^^^^^^^
-
-  AT90USB90128/64 TQFP64
-  -- ------------------------ ---------------------------------------------
-  PIN SIGNAL                  BOARD CONNECTION
-  -- ------------------------ ---------------------------------------------
-  (left)
-  1  (INT.6/AIN.0) PE6         J3-25 E6, CY7C1019D ^CE (Unpopulated)
-  2  (INT.7/AIN.1/UVcon) PE7   J3-26 E7, CY7C1019D A16 (Unpopulated)
-  3  UVcc
-  4  D-                        USB DP
-  5  D+                        USB DM
-  6  UGnd                      GND
-  7  UCap                      GND (via cap)
-  8  VBus                      USB VBUS
-  9  (IUID) PE3                J3-22 E3
-  10 (SS/PCINT0) PB0           J3-28 B0
-  11 (PCINT1/SCLK) PB1         J3-29 B1
-  12 (PDI/PCINT2/MOSI) PB2     J3-30 B2
-  13 (PDO/PCINT3/MISO) PB3     J3-31 B3
-  14 (PCINT4/OC.2A) PB4        J3-32 B4
-  15 (PCINT5/OC.1A) PB5        J3-33 B5
-  16 (PCINT6/OC.1B) PB6        J3-34 B6
-  (bottom)
-  17 (PCINT7/OC.0A/OC.1C) PB7  J3-35 B7
-  18 (INT4/TOSC1) PE4          J3-23 E4
-  19 (INT.5/TOSC2) PE5         J3-24 E5
-  20 RESET                     SW1
-  21 VCC                       VCC
-  22 GND                       GND
-  23 XTAL2                     X1
-  24 XTAL1                     X1
-  25 (OC0B/SCL/INT0) PD0       J3-36 D0
-  26 (OC2B/SDA/INT1) PD1       J3-37 D1
-  27 (RXD1/INT2) PD2           J3-38 D2
-  28 (TXD1/INT3) PD3           J3-39 D3
-  29 (ICP1) PD4                J3-40 D4
-  30 (XCK1) PD5                J3-41 D5
-  31 (T1) PD6                  J3-42 D6
-  32 (T0) PD7                  J3-43 D7
-  (right)
-  48 PA3 (AD3)                 J3-14 A3, 74AHC573 D3, CY7C1019D |O3 
(Unpopulated)
-  47 PA4 (AD4)                 J3-15 A4, 74AHC573 D4, CY7C1019D |O4 
(Unpopulated)
-  46 PA5 (AD5)                 J3-16 A5, 74AHC573 D5, CY7C1019D |O5 
(Unpopulated)
-  45 PA6 (AD6)                 J3-17 A6, 74AHC573 D6, CY7C1019D |O6 
(Unpopulated)
-  44 PA7 (AD7)                 J3-18 A7, 74AHC573 D7, CY7C1019D |O7 
(Unpopulated)
-  43 PE2 (ALE/HWB)             SW-2 (pulled-up), J3-21 E2, 74AHC573 Cp
-  42 PC7 (A15/IC.3/CLKO)       J3-51 C7, CY7C1019D A15 (Unpopulated)
-  41 PC6 (A14/OC.3A)           J3-50 C6, CY7C1019D A14 (Unpopulated)
-  40 PC5 (A13/OC.3B)           J3-49 C5, CY7C1019D A13 (Unpopulated)
-  39 PC4 (A12/OC.3C)           J3-48 C4, CY7C1019D A12 (Unpopulated)
-  38 PC3 (A11/T.3)             J3-47 C3, CY7C1019D A11 (Unpopulated)
-  37 PC2 (A10)                 J3-46 C2, CY7C1019D A10 (Unpopulated)
-  36 PC1 (A9)                  J3-45 C1, CY7C1019D A9  (Unpopulated)
-  35 PC0 (A8)                  J3-44 C0, CY7C1019D A8  (Unpopulated)
-  34 PE1 (RD)                  J3-20 E1, CY7C1019D ^OE (Unpopulated)
-  33 PE0 (WR)                  J3-19 E0, CY7C1019D ^WE (Unpopulated)
-  (top)
-  64 AVCC                      (Power circuitry)
-  63 GND                       GND
-  62 AREF                      J3-2 AREF, (Power circuitry)
-  61 PF0 (ADC0)                J3-3 F0
-  60 PF1 (ADC1)                J3-4 F1
-  59 PF2 (ADC2)                J3-5 F2
-  58 PF3 (ADC3)                J3-6 F3
-  57 PF4 (ADC4/TCK)            J3-7 F4, JTAG TCK
-  56 PF5 (ADC5/TMS)            J3-8 F5, JTAG TMS
-  55 PF6 (ADC6/TDO)            J3-9 F6, JTAG TD0
-  54 PF7 (ADC7/TDI)            J3-20 F7, JTAG TDI
-  53 GND                       GND
-  52 VCC                       VCC
-  51 PA0 (AD0)                 J3-11 A0, 74AHC573 D0, CY7C1019D |O0 
(Unpopulated)
-  50 PA1 (AD1)                 J3-12 A1, 74AHC573 D1, CY7C1019D |O1 
(Unpopulated)
-  49 PA2 (AD2)                 J3-13 A2, 74AHC573 D2, CY7C1019D |O2 
(Unpopulated)
-
-Atmel AVRISP mkII Connection
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-  ISP6PIN Header
-  --------------
-
-        1  2
-  MISO  o  o VCC
-   SCK  o  o MOSI
-  RESET o  o GND
-
-  Micropendous 3 JTAG (JTAG10PIN Connector)
-  ------------------- ---------------------
-
-      1  2                 1  2
-  TCK o  o GND         TCK o  o GND
-  TDO o  o VCC         TDO o  o VTref
-  TMS o  o RESET       TMS o  o nSRST
-  VCC o  o N/C             o  o (nTRST)
-  TDI o  o GND         TDI o  o GND
-
-  JTAGICE mkII Connection to 10-pin Header
-  ------------------------------------------
-  10PIN Header         6PIN Header
-  -------------------- ---------------------
-  Pin 1 TCK            Pin 3 SCK
-  Pin 2 GND            Pin 6 GND
-  Pin 3 TDO            Pin 1 MISO
-  Pin 4 VTref          Pin 2 Vcc
-  Pin 6 nSRT           Pin 5 Reset
-  Pin 9 TDI            Pin 4 MOSI
-
-DFU Bootloader
-^^^^^^^^^^^^^^
-
-There is also an DFU bootloader that resides in the upper 8Kb of FLASH
-(unless you ERASE the flash with ICE).  You can enter this bootloader
-(if it is in FLASH) by:
-
-Holding both the SW1 (RESET) and SW2, then releasing SW1 while continuing
-to hold SW2.  SW2 connects to the PE2/HWB signal and causes a reset into
-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
-^^^^^^^^^^^^^^
-
-  A serial console is supported on an external MAX232/MAX3232 Connected
-  on PD2 and PD3:
-
-  Port D, Bit 2: RXD1, Receive Data (Data input pin for the USART1). When
-    the USART1 receiver is enabled this pin is configured as an input
-    regardless of the value of DDD2. When the USART forces this pin to
-    be an input, the pull-up can still be controlled by the PORTD2 bit.
-  Port D, Bit 3: TXD1, Transmit Data (Data output pin for the USART1).
-    When the USART1 Transmitter is enabled, this pin is configured as
-    an output regardless of the value of DDD3.
-
-  AT90USB90128/64 TQFP64
-  -- ------------------------ ---------------------------------------------
-  PIN SIGNAL                  BOARD CONNECTION
-  -- ------------------------ ---------------------------------------------
-  27 (RXD1/INT2) PD2           J3-38 D2
-  28 (TXD1/INT3) PD3           J3-39 D3
-
-Toolchains
-^^^^^^^^^^
-
-There are several toolchain options.  However, testing has been performed
-using *only* the NuttX buildroot toolchain described below.  Therefore,
-the NuttX buildroot toolchain is the recommended choice.
-
-The toolchain may be selected using the kconfig-mconf tool (via 'make 
menuconfig'),
-by editing the existing configuration file (defconfig), or by overriding
-the toolchain on the make commandline with CONFIG_AVR_TOOLCHAIN=<toolchain>.
-
-The valid values for <toolchain> are BUILDROOT, CROSSPACK, LINUXGCC and WINAVR.
-
-Buildroot:
-
-  There is a DIY buildroot version for the AVR boards here:
-  http://bitbucket.org/nuttx/buildroot/downloads/.  See the
-  following section for details on building this toolchain.
-
-  Before building, make sure that the path to the new toolchain is included
-  in your PATH environment variable.
-
-  After configuring NuttX, make sure that CONFIG_AVR_BUILDROOT_TOOLCHAIN=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/
-
-  Before building, make sure that the path to the new toolchain is included
-  in your PATH environment variable.
-
-  After configuring NuttX, make sure that CONFIG_AVR_WINAVR_TOOLCHAIN=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:
-  sudo apt-get install gcc-avr gdb-avr avr-libc
-
-  After configuring NuttX, make sure that CONFIG_AVR_LINUXGCC_TOOLCHAIN=y is 
set in your
-  .config file.
-
-macOS:
-
-  For macOS, the CrossPack for AVR toolchain is available from:
-
-    http://www.obdev.at/products/crosspack/index.html
-
-  This toolchain is functionally equivalent to the Linux GCC toolchain.
-
-Windows Native Toolchains
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-  The WinAVR toolchain is a Windows native toolchain. There are several
-  limitations to using a Windows native toolchain in a Cygwin environment.
-  The three biggest are:
-
-  1. The Windows toolchain cannot follow Cygwin paths.  Path conversions are
-     performed automatically in the Cygwin makefiles using the 'cygpath'
-     utility but you might easily find some new path problems.  If so, check
-     out 'cygpath -w'
-
-  2. Windows toolchains cannot follow Cygwin symbolic links.  Many symbolic
-     links are used in NuttX (e.g., include/arch).  The make system works
-     around these  problems for the Windows tools by copying directories
-     instead of linking them.  But this can also cause some confusion for
-     you:  For example, you may edit a file in a "linked" directory and find
-     that your changes had no effect. That is because you are building the
-     copy of the file in the "fake" symbolic directory.  If you use a
-     Windows toolchain, you should get in the habit of making like this:
-
-       make clean_context all
-
-     An alias in your .bashrc file might make that less painful.
-
-  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 Bitbucket download site (https://bitbucket.org/nuttx/nuttx/downloads/).
-  This GNU toolchain builds and executes in the Linux or Cygwin environment.
-
-  1. You must have already configured NuttX in <some-dir>/nuttx.
-
-     tools/configure.sh micropendous3:<sub-dir>
-
-     NOTE: you also must copy avr-libc header files into the NuttX include
-     directory with command perhaps like:
-
-     cp -a /cygdrive/c/WinAVR/include/avr include/.
-
-  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 boards/avr-defconfig-4.5.2 .config
-
-  6. make oldconfig
-
-  7. make
-
-  8. Make sure that the PATH variable includes the path to the newly built
-     binaries.
-
-  See the file boards/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
-^^^^^^^^
-
-Header Files
-
-  In any case, header files from avr-libc are required:  
http://www.nongnu.org/avr-libc/.
-  A 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).  But if you are using
-  the NuttX buildroot configuration on Cygwin, then you will have to build
-  get avr-libc from binaries.
-
-Header File Installation
-
-  The NuttX build will required that the AVR header files be available via
-  the NuttX include directory.  This can be accomplished by either copying
-  the avr-libc header files into the NuttX include directory:
-
-  cp -a <avr-libc-path>/include/avr <nuttx-path>/include/.
-
-  Or simply using a symbolic link:
-
-  ln -s <avr-libc-path>/include/avr <nuttx-path>/include/.
-
-Build Notes:
-
-  It may not be necessary to have a built version of avr-lib; only header files
-  are required.  But if you choose to use the optimized library functions of
-  the floating point library, then you may have to build avr-lib from sources.
-  Below are instructions for building avr-lib from fresh sources:
-
-  1. Download the avr-libc package from:
-
-     http://savannah.nongnu.org/projects/avr-libc/
-
-     I am using avr-lib-1.7.1.tar.bz2
-
-  2. Unpack the tarball and cd into the
-
-     tar jxf avr-lib-1.7.1.tar.bz2
-     cd avr-lib-1.7.1
-
-  3. Configure avr-lib.  Assuming that WinAVR is installed at the following
-     location:
-
-     export PATH=/cygdrive/c/WinAVR/bin:$PATH
-     ./configure --build=`./config.guess` --host=avr
-
-     This takes a *long* time.
-
-  4. Make avr-lib.
-
-     make
-
-     This also takes a long time because it generates variants for nearly
-     all AVR chips.
-
-  5. Install avr-lib.
-
-     make install
-
-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_CHIP_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 boards/ 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_RAM_SIZE - Describes the installed DRAM.  One of:
-
-       CONFIG_RAM_SIZE=(4*1024) - (4Kb)
-       CONFIG_RAM_SIZE=(8*1024) - (8Kb)
-
-    CONFIG_RAM_START - The start address of installed SRAM
-
-       CONFIG_RAM_START=0x800100
-
-    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.
-
-    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_USART1=y
-      CONFIG_AVR_ANACOMP=n
-      CONFIG_AVR_ADC=n
-      CONFIG_AVR_TWI=n
-
-  If the watchdog is enabled, this specifies the initial timeout.  Default
-  is maximum supported value.
-
-      CONFIG_WDTO_15MS
-      CONFIG_WDTO_30MS
-      CONFIG_WDTO_60MS
-      CONFIG_WDTO_120MS
-      CONFIG_WDTO_1250MS
-      CONFIG_WDTO_500MS
-      CONFIG_WDTO_1S
-      CONFIG_WDTO_2S
-      CONFIG_WDTO_4S
-      CONFIG_WDTO_8S
-
-  AT90USB specific device driver settings
-
-    CONFIG_USARTn_SERIAL_CONSOLE - selects the USARTn for the
-       console and ttys0 (default is no serial console).
-    CONFIG_USARTn_RXBUFSIZE - Characters are buffered as received.
-       This specific the size of the receive buffer
-    CONFIG_USARTn_TXBUFSIZE - Characters are buffered before
-       being sent.  This specific the size of the transmit buffer
-    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_PARTIY - 0=no parity, 1=odd parity, 2=even parity
-    CONFIG_USARTn_2STOP - Two stop bits
-
-Configurations
-^^^^^^^^^^^^^^
-
-Common Configuration Notes
---------------------------
-
-  1. Each Micropendous3 configuration is maintained in a sub-directory and
-     can be selected as follow:
-
-       tools/configure.sh micropendous3:<subdir>
-
-     Where <subdir> is one of the configuration sub-directories described in
-     the following paragraph.
-
-     NOTE: You must also copy avr-libc header files, perhaps like:
-
-       cp -a /cygdrive/c/WinAVR/include/avr include/.
-
-  2. These configurations use the mconf-based configuration tool.  To
-     change a configurations using that tool, you should:
-
-     a. Build and install the kconfig-mconf tool.  See nuttx/README.txt
-        see additional README.txt files in the NuttX tools repository.
-
-     b. Execute 'make menuconfig' in nuttx/ in order to start the
-        reconfiguration process.
-
-  3. By default, all configurations assume the NuttX Buildroot toolchain
-     under Cygwin with Windows.  This is easily reconfigured:
-
-        CONFIG_HOST_WINDOWS=y
-        CONFIG_WINDOWS_CYGWIN=y
-        CONFIG_AVR_BUILDROOT_TOOLCHAIN=y
-
-  4. Build with GCC disables CONFIG_DEBUG_OPT_UNUSED_SECTIONS by default.
-     This is because the linker script was not checked to determine
-     if it properly prevents removal of sections which the linker considers
-     unreferenced but which must be present in the binary.
-
-Configuration Sub-Directories
------------------------------
-
-  hello:
-    The simple apps/examples/hello "Hello, World!" example.
-
-    FLASH/SRAM Requirements (as of 6/16/2011):
-
-      $ avr-nuttx-elf-size nuttx
-       text    data     bss     dec     hex filename
-      24816     978     308   26102    65f6 nuttx
-
-    Strings are in SRAM.
diff --git a/Documentation/platforms/avr/at90usb/boards/micropendous3/index.rst 
b/Documentation/platforms/avr/at90usb/boards/micropendous3/index.rst
index 18742ba3cb..b99446d4d8 100644
--- a/Documentation/platforms/avr/at90usb/boards/micropendous3/index.rst
+++ b/Documentation/platforms/avr/at90usb/boards/micropendous3/index.rst
@@ -1,6 +1,569 @@
-=============
-micropendous3
-=============
+==============
+Micropendous 3
+==============
 
-.. include:: README.txt
-   :literal:
+.. tags:: arch:avr, chip:at90usb
+
+This is the documentation page for the port of NuttX to the Micropendous 3
+board. This board is developed by `opendous
+<http://code.google.com/p/opendous/>`_. The Micropendous 3 is based on an Atmel
+AT90USB646, 647, 1286 or 1287 MCU. 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>`_
+
+Micropendous3 Features
+======================
+
+* Based on the 64-pin USB AVR Microcontrollers: AT90USB646, AT90USB647,
+* AT90USB1286, or AT90USB1287.
+* USB Full Speed (12Mbit/s)
+* USB Device Mode (Host mode supported with AT90USBxx7 devices)
+* 60kb (AT90USB64) or 120kb (AT90USB128) of available FLASH memory for
+* your programs (4kb(AT90USB64)/8kb(AT90USB128) used by USB bootloader -
+* stock Atmel or LUFA)
+* 4 kbytes SRAM and 2 kbytes of EEPROM (AT90USB64) or 8 kbytes SRAM and 4
+* kbytes of EEPROM (AT90USB128)
+* External SRAM is possible.  Layout for CY7C1019D 1-Mbit SRAM (unpopulated)
+* USB powered
+* 16MHz crystal
+* 48 General Purpose IO Pins (47 with external SRAM)
+* Vcc=VBUS jumper selects whether USB VBUS or an external supply is used
+* to power the board
+* RESET and HWB buttons to enable firmware loading over USB (no external
+* programmer required)
+* HWB can be used as a user button
+* USB-A Plug
+* JTAG header
+* Size LxWxH (including headers): 3.15" x 0.8" x 0.6" =~ 8cm x 2cm x 1.5cm
+* Completely OpenHardware Design
+
+Pin Usage
+=========
+
+AT90USB90128/64 TQFP64
+
+=== ======================== =============================================
+PIN SIGNAL                   BOARD CONNECTION
+=== ======================== =============================================
+1   (INT.6/AIN.0) PE6        J3-25 E6, CY7C1019D ^CE (Unpopulated)
+2   (INT.7/AIN.1/UVcon) PE7  J3-26 E7, CY7C1019D A16 (Unpopulated)
+3   UVcc
+4   D-                       USB DP
+5   D+                       USB DM
+6   UGnd                     GND
+7   UCap                     GND (via cap)
+8   VBus                     USB VBUS
+9   (IUID) PE3               J3-22 E3
+10  (SS/PCINT0) PB0          J3-28 B0
+11  (PCINT1/SCLK) PB1        J3-29 B1
+12  (PDI/PCINT2/MOSI) PB2    J3-30 B2
+13  (PDO/PCINT3/MISO) PB3    J3-31 B3
+14  (PCINT4/OC.2A) PB4       J3-32 B4
+15  (PCINT5/OC.1A) PB5       J3-33 B5
+16  (PCINT6/OC.1B) PB6       J3-34 B6
+17  (PCINT7/OC.0A/OC.1C) PB7 J3-35 B7
+18  (INT4/TOSC1) PE4         J3-23 E4
+19  (INT.5/TOSC2) PE5        J3-24 E5
+20  RESET                    SW1
+21  VCC                      VCC
+22  GND                      GND
+23  XTAL2                    X1
+24  XTAL1                    X1
+25  (OC0B/SCL/INT0) PD0      J3-36 D0
+26  (OC2B/SDA/INT1) PD1      J3-37 D1
+27  (RXD1/INT2) PD2          J3-38 D2
+28  (TXD1/INT3) PD3          J3-39 D3
+29  (ICP1) PD4               J3-40 D4
+30  (XCK1) PD5               J3-41 D5
+31  (T1) PD6                 J3-42 D6
+32  (T0) PD7                 J3-43 D7
+48  PA3 (AD3)                J3-14 A3, 74AHC573 D3, CY7C1019D O3 (Unpopulated)
+47  PA4 (AD4)                J3-15 A4, 74AHC573 D4, CY7C1019D O4 (Unpopulated)
+46  PA5 (AD5)                J3-16 A5, 74AHC573 D5, CY7C1019D O5 (Unpopulated)
+45  PA6 (AD6)                J3-17 A6, 74AHC573 D6, CY7C1019D O6 (Unpopulated)
+44  PA7 (AD7)                J3-18 A7, 74AHC573 D7, CY7C1019D O7 (Unpopulated)
+43  PE2 (ALE/HWB)            SW-2 (pulled-up), J3-21 E2, 74AHC573 Cp
+42  PC7 (A15/IC.3/CLKO)      J3-51 C7, CY7C1019D A15 (Unpopulated)
+41  PC6 (A14/OC.3A)          J3-50 C6, CY7C1019D A14 (Unpopulated)
+40  PC5 (A13/OC.3B)          J3-49 C5, CY7C1019D A13 (Unpopulated)
+39  PC4 (A12/OC.3C)          J3-48 C4, CY7C1019D A12 (Unpopulated)
+38  PC3 (A11/T.3)            J3-47 C3, CY7C1019D A11 (Unpopulated)
+37  PC2 (A10)                J3-46 C2, CY7C1019D A10 (Unpopulated)
+36  PC1 (A9)                 J3-45 C1, CY7C1019D A9  (Unpopulated)
+35  PC0 (A8)                 J3-44 C0, CY7C1019D A8  (Unpopulated)
+34  PE1 (RD)                 J3-20 E1, CY7C1019D ^OE (Unpopulated)
+33  PE0 (WR)                 J3-19 E0, CY7C1019D ^WE (Unpopulated)
+64  AVCC                     (Power circuitry)
+63  GND                      GND
+62  AREF                     J3-2 AREF, (Power circuitry)
+61  PF0 (ADC0)               J3-3 F0
+60  PF1 (ADC1)               J3-4 F1
+59  PF2 (ADC2)               J3-5 F2
+58  PF3 (ADC3)               J3-6 F3
+57  PF4 (ADC4/TCK)           J3-7 F4, JTAG TCK
+56  PF5 (ADC5/TMS)           J3-8 F5, JTAG TMS
+55  PF6 (ADC6/TDO)           J3-9 F6, JTAG TD0
+54  PF7 (ADC7/TDI)           J3-20 F7, JTAG TDI
+53  GND                      GND
+52  VCC                      VCC
+51  PA0 (AD0)                J3-11 A0, 74AHC573 D0, CY7C1019D O0 (Unpopulated)
+50  PA1 (AD1)                J3-12 A1, 74AHC573 D1, CY7C1019D O1 (Unpopulated)
+49  PA2 (AD2)                J3-13 A2, 74AHC573 D2, CY7C1019D O2 (Unpopulated)
+=== ======================== =============================================
+
+Atmel AVRISP mkII Connection
+============================
+
+ISP6PIN Header
+
+.. code:: text
+   
+         1  2
+   MISO  o  o VCC
+    SCK  o  o MOSI
+   RESET o  o GND
+
+Micropendous 3 JTAG (JTAG10PIN Connector)
+
+.. code:: text
+
+       1  2                 1  2
+   TCK o  o GND         TCK o  o GND
+   TDO o  o VCC         TDO o  o VTref
+   TMS o  o RESET       TMS o  o nSRST
+   VCC o  o N/C             o  o (nTRST)
+   TDI o  o GND         TDI o  o GND
+
+JTAGICE mkII Connection to 10-pin Header
+
+==================== =====================
+10PIN Header         6PIN Header
+==================== =====================
+Pin 1 TCK            Pin 3 SCK
+Pin 2 GND            Pin 6 GND
+Pin 3 TDO            Pin 1 MISO
+Pin 4 VTref          Pin 2 Vcc
+Pin 6 nSRT           Pin 5 Reset
+Pin 9 TDI            Pin 4 MOSI
+==================== =====================
+
+DFU Bootloader
+==============
+
+There is also an DFU bootloader that resides in the upper 8Kb of FLASH (unless
+you ERASE the flash with ICE). You can enter this bootloader (if it is in 
FLASH)
+by:
+
+Holding both the SW1 (RESET) and SW2, then releasing SW1 while continuing to
+hold SW2. SW2 connects to the PE2/HWB signal and causes a reset into 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
+==============
+
+A serial console is supported on an external MAX232/MAX3232 Connected on PD2 
and
+PD3:
+
+**Port D, Bit 2: RXD1, Receive Data (Data input pin for the USART1).**
+
+When the USART1 receiver is enabled this pin is configured as an input
+regardless of the value of DDD2. When the USART forces this pin to be an input,
+the pull-up can still be controlled by the PORTD2 bit.
+
+**Port D, Bit 3: TXD1, Transmit Data (Data output pin for the USART1).**
+
+When the USART1 Transmitter is enabled, this pin is configured as an output
+regardless of the value of DDD3.
+
+AT90USB90128/64 TQFP64
+
+=== ======================= =============================================
+PIN SIGNAL                  BOARD CONNECTION
+=== ======================= =============================================
+27  (RXD1/INT2) PD2           J3-38 D2
+28  (TXD1/INT3) PD3           J3-39 D3
+=== ======================= =============================================
+
+Toolchains
+==========
+
+There are several toolchain options. However, testing has been performed using
+*only* the NuttX buildroot toolchain described below. Therefore, the NuttX
+buildroot toolchain is the recommended choice.
+
+The toolchain may be selected using the kconfig-mconf tool (via ``make
+menuconfig``), by editing the existing configuration file (``defconfig``), or 
by
+overriding the toolchain on the make commandline with
+``CONFIG_AVR_TOOLCHAIN=<toolchain>``.
+
+The valid values for ``<toolchain>`` are ``BUILDROOT``, ``CROSSPACK``,
+``LINUXGCC`` and ``WINAVR``.
+
+Buildroot
+---------
+
+There is a DIY buildroot version for the AVR boards here:
+http://bitbucket.org/nuttx/buildroot/downloads/. See the following section for
+details on building this toolchain.
+
+Before building, make sure that the path to the new toolchain is included in
+your ``PATH`` environment variable.
+
+After configuring NuttX, make sure that ``CONFIG_AVR_BUILDROOT_TOOLCHAIN=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/
+
+Before building, make sure that the path to the new toolchain is included in
+your ``PATH`` environment variable.
+
+After configuring NuttX, make sure that ``CONFIG_AVR_WINAVR_TOOLCHAIN=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:
+sudo apt-get install gcc-avr gdb-avr avr-libc
+
+After configuring NuttX, make sure that CONFIG_AVR_LINUXGCC_TOOLCHAIN=y is set 
in your
+.config file.
+
+macOS
+-----
+
+For macOS, the CrossPack for AVR toolchain is available from:
+http://www.obdev.at/products/crosspack/index.html
+
+This toolchain is functionally equivalent to the Linux GCC toolchain.
+
+Windows Native Toolchains
+=========================
+
+The WinAVR toolchain is a Windows native toolchain. There are several
+limitations to using a Windows native toolchain in a Cygwin environment. The
+three biggest are:
+
+1. The Windows toolchain cannot follow Cygwin paths.  Path conversions are
+   performed automatically in the Cygwin makefiles using the ``cygpath`` 
utility
+   but you might easily find some new path problems.  If so, check out 
``cygpath
+   -w``
+
+2. Windows toolchains cannot follow Cygwin symbolic links.  Many symbolic links
+   are used in NuttX (e.g., ``include/arch``).  The make system works around
+   these problems for the Windows tools by copying directories instead of
+   linking them.  But this can also cause some confusion for you:  For example,
+   you may edit a file in a "linked" directory and find that your changes had 
no
+   effect. That is because you are building the copy of the file in the "fake"
+   symbolic directory.  If you use a Windows toolchain, you should get in the
+   habit of making like this:
+
+   .. code:: console
+
+      $ make clean_context all
+
+   An alias in your ``.bashrc`` file might make that less painful.
+
+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
+Bitbucket download site (https://bitbucket.org/nuttx/nuttx/downloads/). This 
GNU
+toolchain builds and executes in the Linux or Cygwin environment.
+
+1. You must have already configured NuttX in ``<some-dir>/nuttx``.
+
+   .. code:: console
+
+      $ tools/configure.sh micropendous3:<sub-dir>
+
+   .. note::
+
+      You also must copy avr-libc header files into the NuttX include directory
+      with a command perhaps like:
+
+      .. code:: console
+
+         $ cp -a /cygdrive/c/WinAVR/include/avr include/.
+
+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``.
+
+   .. code:: console
+
+      $ cd <some-dir>/buildroot
+      $ cp boards/avr-defconfig-4.5.2 .config
+      $ make oldconfig
+      $ make
+
+4. Make sure that the ``PATH`` variable includes the path to the newly built
+   binaries.
+
+See the file ``boards/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
+========
+
+Header Files
+------------
+
+In any case, header files from avr-libc are required:
+http://www.nongnu.org/avr-libc/. A 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). But if
+you are using the NuttX buildroot configuration on Cygwin, then you will have 
to
+build get avr-libc from binaries.
+
+Header File Installation
+------------------------
+
+The NuttX build will required that the AVR header files be available via the
+NuttX include directory. This can be accomplished by either copying the
+avr-libc header files into the NuttX include directory:
+
+.. code:: console
+
+   $ cp -a <avr-libc-path>/include/avr <nuttx-path>/include/.
+
+Or simply using a symbolic link:
+
+.. code:: console
+
+   $ ln -s <avr-libc-path>/include/avr <nuttx-path>/include/.
+
+Build Notes
+-----------
+
+It may not be necessary to have a built version of avr-lib; only header files
+are required. But if you choose to use the optimized library functions of the
+floating point library, then you may have to build avr-lib from sources. Below
+are instructions for building avr-lib from fresh sources:
+
+1. Download the avr-libc package from
+   http://savannah.nongnu.org/projects/avr-libc/. I am using
+   avr-lib-1.7.1.tar.bz2
+
+2. Unpack the tarball and ``cd`` into it:
+
+   .. code:: console
+
+      $ tar jxf avr-lib-1.7.1.tar.bz2
+      $ cd avr-lib-1.7.1
+
+3. Configure avr-lib. Assuming that WinAVR is installed at the following
+   location:
+
+   .. code:: console
+
+      $ export PATH=/cygdrive/c/WinAVR/bin:$PATH
+      $ ./configure --build=`./config.guess` --host=avr
+
+   This takes a *long* time.
+
+4. Make avr-lib.
+
+   .. code:: console
+
+      $ make
+
+   This also takes a long time because it generates variants for nearly
+   all AVR chips.
+
+5. Install avr-lib.
+
+   .. code:: console
+
+      $ make install
+
+Micropendous 3 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_CHIP_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 ``boards/`` 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_RAM_SIZE``: Describes the installed DRAM.  One of:
+
+  * ``CONFIG_RAM_SIZE=(4*1024)``: (4Kb)
+  * ``CONFIG_RAM_SIZE=(8*1024)``: (8Kb)
+
+* ``CONFIG_RAM_START``: The start address of installed SRAM
+
+  * ``CONFIG_RAM_START=0x800100``
+
+* ``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.
+
+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_USART1=y``
+* ``CONFIG_AVR_ANACOMP=n``
+* ``CONFIG_AVR_ADC=n``
+* ``CONFIG_AVR_TWI=n``
+
+If the watchdog is enabled, this specifies the initial timeout.  Default
+is maximum supported value.
+
+* ``CONFIG_WDTO_15MS``
+* ``CONFIG_WDTO_30MS``
+* ``CONFIG_WDTO_60MS``
+* ``CONFIG_WDTO_120MS``
+* ``CONFIG_WDTO_1250MS``
+* ``CONFIG_WDTO_500MS``
+* ``CONFIG_WDTO_1S``
+* ``CONFIG_WDTO_2S``
+* ``CONFIG_WDTO_4S``
+* ``CONFIG_WDTO_8S``
+
+AT90USB specific device driver settings:
+
+* ``CONFIG_USARTn_SERIAL_CONSOLE``: selects the USARTn for the console and 
ttys0
+  (default is no serial console).
+* ``CONFIG_USARTn_RXBUFSIZE``: Characters are buffered as received. This
+  specific the size of the receive buffer
+* ``CONFIG_USARTn_TXBUFSIZE``: Characters are buffered before being sent.  This
+  specific the size of the transmit buffer
+* ``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_PARTIY``: 0=no parity, 1=odd parity, 2=even parity
+* ``CONFIG_USARTn_2STOP``: Two stop bits
+
+Configurations
+==============
+
+1. Each Micropendous3 configuration is maintained in a sub-directory and
+   can be selected as follows:
+
+   .. code::  console
+
+      $ tools/configure.sh micropendous3:<subdir>
+
+   Where ``<subdir>`` is one of the configuration sub-directories described in
+   the following paragraph.
+
+   .. note::
+
+      You must also copy avr-libc header files, perhaps like:
+
+      .. code:: console
+
+         $ cp -a /cygdrive/c/WinAVR/include/avr include/.
+
+2. These configurations use the mconf-based configuration tool. To change a
+   configurations using that tool, you should:
+
+   a. Build and install the kconfig-mconf tool. See ``nuttx/README.txt``
+      see additional README.txt files in the NuttX tools repository.
+
+   b. Execute ``make menuconfig`` in ``nuttx/`` in order to start the
+      reconfiguration process.
+
+3. By default, all configurations assume the NuttX Buildroot toolchain
+   under Cygwin with Windows. This is easily reconfigured:
+
+   * ``CONFIG_HOST_WINDOWS=y``
+   * ``CONFIG_WINDOWS_CYGWIN=y``
+   * ``CONFIG_AVR_BUILDROOT_TOOLCHAIN=y``
+
+4. Build with GCC disables CONFIG_DEBUG_OPT_UNUSED_SECTIONS by default. This is
+   because the linker script was not checked to determine if it properly
+   prevents removal of sections which the linker considers unreferenced but
+   which must be present in the binary.
+
+hello
+-----
+
+The simple ``apps/examples/hello`` "Hello, World!" example.
+
+FLASH/SRAM Requirements (as of 6/16/2011):
+
+.. code:: console
+
+   $ avr-nuttx-elf-size nuttx
+    text    data     bss     dec     hex filename
+   24816     978     308   26102    65f6 nuttx
+
+Strings are in SRAM.


Reply via email to