README
======

  This README discusses issues unique to NuttX configurations for the
  ViewTool STM32F103/F107 V1.2 board.  This board may be fitted with either

    - STM32F107VCT6, or
    - STM32F103VCT6

  The board is vary modular with connectors for a variety of peripherals.
  Features on the base board include:

    - User and Wake-Up Keys
    - LEDs

  See http://www.viewtool.com/ for further information.

Contents
========

  o User and Wake-Up keys
  o LEDs
  o Serial Console
    - Console Configuration
    - J5 - USART1
    - PL-2013 USB-to-Serial Interface
    - RS-232 Module
  o USB Interface
  o microSD Card Interface
  o ViewTool DP83848 Ethernet Module
  o Freescale MPL115A barometer sensor
  o LCD/Touchscreen Interface
  o Toolchains
    - NOTE about Windows native toolchains
  o Configurations
    - Information Common to All Configurations
    - Configuration Sub-directories

User and Wake-Up keys
=====================

  All pulled high and will be sensed low when depressed.

    SW2 PC11  Needs J42 closed
    SW3 PC12  Needs J43 closed
    SW4 PA0   Needs J44 closed

LEDs
====

  There are four LEDs on the ViewTool STM32F103/F107 board that can be controlled
  by software:  LED1 through LED4.  All pulled high and can be illuminated by
  driving the output to low

    LED1 PA6
    LED2 PA7
    LED3 PB12
    LED4 PB13

  These LEDs are not used by the board port unless CONFIG_ARCH_LEDS is
  defined.  In that case, the usage by the board port is defined in
  include/board.h and src/stm32_leds.c. The LEDs are used to encode OS-related
  events as follows:

    SYMBOL            Meaning                      LED state
                                               LED1 LED2 LED3 LED4
    ----------------- -----------------------  ---- ---- ---- ----
    LED_STARTED       NuttX has been started   ON   OFF  OFF  OFF
    LED_HEAPALLOCATE  Heap has been allocated  OFF  ON   OFF  OFF
    LED_IRQSENABLED   Interrupts enabled       ON   ON   OFF  OFF
    LED_STACKCREATED  Idle stack created       OFF  OFF  ON   OFF
    LED_INIRQ         In an interrupt          N/C  N/C  N/C  Soft glow
    LED_SIGNAL        In a signal handler      N/C  N/C  N/C  Soft glow
    LED_ASSERTION     An assertion failed      N/C  N/C  N/C  Soft glow
    LED_PANIC         The system has crashed   N/C  N/C  N/C  2Hz Flashing
    LED_IDLE          MCU is is sleep mode         Not used

  After booting, LED1-3 are not longer used by the system and can be used for
  other purposes by the application (Of course, all LEDs are available to the
  application if CONFIG_ARCH_LEDS is not defined.

Serial Console
==============

  Console Configuration
  ---------------------
  The NuttX console is configured by default on USART1 at 115200 BAUD 8N1
  (8-bits, not parity, one stop bit).  These setting can, of course, easily
  be changed by reconfiguring NuttX.

  J5 - USART1
  -----------
  The boards come with a PL-2303 based USB-to-serial board.  Also available
  as an option is an RS-232 board.  Both have the same pin out on a 6-pin
  connector that mates with the upper row of J5.

    PIN MODULE BOARD J5
    --- ------ ---------------------------
     1   5V    1  POWER Power jumper
     2   GND   3  GND   Ground
     3   TXD   5  RXD1  PA10    USART1_RXD
     4   RXD   7  TXD1  PA9     USART1_TXD
     5   RTS?  9  CTS?  PA12    USART1_RTS
     6   CTS?  11 RTS?  PA11    USART1_CTS

  PL-2013 USB-to-Serial Interface
  -------------------------------

    J37 - CON4.  Jumper Settings:
      1 <-> 3 : Connects PA9 to the RXD1 output pin
      2 <-> 4 : Connects PA10 to the TXD1 input pin

    J35 - CON2.  Jumper Setting:
      Open.  the PL2303 adapter receives its power from the USB host.

  RS-232 Module
  -------------

    J37 - CON4.  Jumper Settings:
      1 <-> 3 : Connects PA9 to the RXD1 output pin
      2 <-> 4 : Connects PA10 to the TXD1 input pin

    J35 - CON2.  Jumper Setting:
      1 <-> 2 : Proves 3.3V to the RS-232 module.

USB Interface
=============

  USB Connector
  -------------

  The Viewtool base board has a USB Mini-B connector.  Only USB device can
  be supported with this connector.

  ------------------------- ------------------------------------
         USB Connector
         J10 mini-USB       GPIO CONFIGURATION(s)
  --- --------- ----------- ------------------------------------
  Pin Signal
  --- --------- ----------- ------------------------------------
   1  USB_VBUS  VDD_USB     (No sensing available)
   2  OTG_DM    PA11        GPIO_OTGFS_DM (F107) GPIO_USB_DM (F103)
   3  OTG_DP    PA12        GPIO_OTGFS_DP (F107) GPIO_USB_DP (F103)
   4  OTG_ID    PA10        GPIO_OTGFS_ID (F107)
   5  Shield    N/A         N/A
   6  Shield    N/A         N/A
   7  Shield    N/A         N/A
   8  Shield    N/A         N/A
   9  Shield    N/A         N/A
                PE11 USB_EN   GPIO controlled soft pull-up (if J51 closed)

   NOTES:
   1. GPIO_OTGFS_VBUS (F107) should not be configured.  No VBUS sensing
   2. GPIO_OTGFS_SOF (F107) is not used
   3. The OTG FS module has is own, internal soft pull-up logic.  J51 should
      be open so that PE11 activity does effect USB.


  STM32F103 Configuration
  -----------------------

    System Type -> STM32 Peripheral Support
      CONFIG_STM32_USB=y                 : Enable USB FS device

    Device Drivers
      CONFIG_USBDEV                      : USB device support

    STATUS:  All of the code is in place, but no testing has been performed.

  STM32F107 Configuration
  -----------------------

    System Type -> STM32 Peripheral Support
      CONFIG_STM32_OTGFS=y               : Enable OTG FS

    Device Drivers
      CONFIG_USBDEV                      : USB device support

    STATUS:  All of the code is in place, but USB is not yet functional.

  CDC/ACM Configuration
  ---------------------

  This will select the CDC/ACM serial device.  Defaults for the other
  options should be okay.

    Device Drivers -> USB Device Driver Support
      CONFIG_CDCACM=y                     : Enable the CDC/ACM device

  The following setting enables an example that can can be used to control
  the CDC/ACM device.  It will add two new NSH commands:

    a. sercon will connect the USB serial device (creating /dev/ttyACM0), and
    b. serdis which will disconnect the USB serial device (destroying
        /dev/ttyACM0).

    Application Configuration -> Examples:
      CONFIG_SYSTEM_CDCACM=y              : Enable an CDC/ACM example

  USB MSC Configuration
  ---------------------
  [WARNING: This configuration has not yet been verified]

  The Mass Storage Class (MSC) class driver can be selected in order to
  export the microSD card to the host computer.  MSC support is selected:

    Device Drivers -> USB Device Driver Support
      CONFIG_USBMSC=y                       : Enable the USB MSC class driver
      CONFIG_USBMSC_EPBULKOUT=1             : Use EP1 for the BULK OUT endpoint
      CONFIG_USBMSC_EPBULKIN=2              : Use EP2 for the BULK IN endpoint

  The following setting enables an add-on that can can be used to control
  the USB MSC device.  It will add two new NSH commands:

    a. msconn will connect the USB serial device and export the microSD
       card to the host, and
    b. msdis which will disconnect the USB serial device.

    Application Configuration -> System Add-Ons:
      CONFIG_SYSTEM_USBMSC=y                : Enable the USBMSC add-on
      CONFIG_SYSTEM_USBMSC_NLUNS=1          : One LUN
      CONFIG_SYSTEM_USBMSC_DEVMINOR1=0      : Minor device zero
      CONFIG_SYSTEM_USBMSC_DEVPATH1="/dev/mmcsd0"
                                            : Use a single, LUN:  The microSD
                                            : block driver.

    NOTES:

    a. To prevent file system corruption, make sure that the microSD is un-
       mounted *before* exporting the mass storage device to the host:

         nsh> umount /mnt/sdcard
         nsh> mscon

       The microSD can be re-mounted after the mass storage class is disconnected:

        nsh> msdis
        nsh> mount -t vfat /dev/mtdblock0 /mnt/at25

microSD Card Interface
======================

  microSD Connector
  -----------------

    ----------------------------- ------------------------- --------------------------------
           Connector J17            GPIO CONFIGURATION(s)
    PIN SIGNAL        LEGEND          (no remapping)                 DP83848C Board
    --- ------------- ----------- ------------------------- --------------------------------
    1   VDD 3.3       N/A         N/A                       3.3
    2   GND           N/A         N/A                       GND
    3   PC8           SDIO_D0     GPIO_SDIO_D0              D0
    4   PD2           SDIO_CMD    GPIO_SDIO_CMD             CMD
    5   PC12          SDIO_CLK    GPIO_SDIO_CK              CLK
    6   PC11          SDIO_D3     GPIO_SDIO_D3              D3
    7   PC10          SDIO_D2     GPIO_SDIO_D2              D2
    8   PC9           SDIO_D1     GPIO_SDIO_D1              D1
    9   PA8           CD          Board-specific GPIO input CD
    --- ------------- ----------- ------------------------- --------------------------------

    NOTES:
    1. The STM32F107 does not support the SDIO/memory card interface.  So the SD card
       cannot be used with the STM32F107 (unless the pin-out just happens to match up
       with an SPI-based card interface???)

  Configuration (STM32F103 only)
  ------------------------------
  [WARNING: This configuration has not yet been verified]

  Enabling SDIO-based MMC/SD support:

    System Type->STM32 Peripheral Support
      CONFIG_STM32_SDIO=y                   : Enable SDIO support
      CONFIG_STM32_DMA2=y                   : DMA2 is needed by the driver

    Device Drivers -> MMC/SD Driver Support
      CONFIG_MMCSD=y                        : Enable MMC/SD support
      CONFIG_MMSCD_NSLOTS=1                 : One slot per driver instance
      CONFIG_MMCSD_HAVECARDDETECT=y         : Supports card-detect PIOs
      CONFIG_MMCSD_MMCSUPPORT=n             : Interferes with some SD cards
      CONFIG_MMCSD_SPI=n                    : No SPI-based MMC/SD support
      CONFIG_MMCSD_SDIO=y                   : SDIO-based MMC/SD support
      CONFIG_SDIO_DMA=y                     : Use SDIO DMA
      CONFIG_SDIO_BLOCKSETUP=y              : Needs to know block sizes

    Library Routines
      CONFIG_SCHED_WORKQUEUE=y              : Driver needs work queue support

    Application Configuration -> NSH Library
      CONFIG_NSH_ARCHINIT=y                 : NSH board-initialization

    Using the SD card
    -----------------

    1) After booting, an SDIO device will appear as /dev/mmcsd0

    2) If you try mounting an SD card with nothing in the slot, the
       mount will fail:

         nsh> mount -t vfat /dev/mmcsd1 /mnt/sd1
         nsh: mount: mount failed: 19

    STATUS:  All of the code is in place, but no testing has been performed.

ViewTool DP83848 Ethernet Module
================================

  Ethernet Connector
  ------------------

    ----------------------------- ------------------------ --------------------------------
           Connector J2            GPIO CONFIGURATION(s)
    PIN SIGNAL        LEGEND         (no remapping)                 DP83848C Board
    --- ------------- ----------- ------------------------ --------------------------------
    1   PA0           MII_CRS     N/A                      N/C
    2   PB11/SDA2     COM_TX_EN   GPIO_ETH_RMII_TX_EN      TX_EN
    3   PA3/LED_G2    MII_COL     N/A                      N/C
    4   PB12/NSS2     COM_TXD0    GPIO_ETH_RMII_TXD0       TXD0
    5   PA1           MII_RX_CLK  GPIO_ETH_RMII_REF_CLK    OSCIN
    6   PB13/SCK2     COM_TXD1    GPIO_ETH_RMII_TXD1       TXD1
    7   PB1/CD_RESET  MII_RXD3    N/A                      N/C
    8   PC4/LCDTP     COM_RXD0    GPIO_ETH_RMII_RXD0       RXD0
    9   PB0/BL_PWM    MII_RXD2    N/A                      N/C
    10  PC5           COM_RXD1    GPIO_ETH_RMII_RXD1       RXD1
    11  PB8/CAN1_RX   MII_TXD3    N/A                      N/C
    12  PC1/LED_R1    COM_MDC     GPIO_ETH_MDC             MDC
    13  PC2/LED_R2    MII_TXD2    N/A                      N/C
    14  PA2/LED_G1    COM_MDIO    GPIO_ETH_MDIO            MDIO
    15  PC3/ONEW      MII_TX_CLK  N/A                      N/C
    16  PB10/SCL2     RX_ER       N/A                      N/C
    17  PD2           GPIO1       N/A                      N/C
    18  PA7/MOSI1     COM_RX_DV   GPIO_ETH_RMII_CRS_DV     CRS_DIV
    19  PD3           GPIO2       N/A                      N/C
    20  PB5           COM_PPS_OUT N/A                      N/C
    21  VDD 3.3       VDD_3.3     N/A                      3.3V
    22  VDD 3.3       VDD_3.3     N/A                      3.3V
    23  GND           GND         N/A                      GND
    24  GND           GND         N/A                      GND
    --- ------------- ----------- ------------------------ --------------------------------

    NOTES:
    1. RMII interface is used
    2. There is a 50MHz clock on board the DP83848.  No MCO clock need be provided.

  Configuration
  -------------

    System Type -> STM32 Peripheral Support
      CONFIG_STM32_ETHMAC=y                  : Enable Ethernet driver

    System Type -> Ethernet MAC Configuration
      CONFIG_STM32_RMII=y                    : Configuration RM-II DP83848C PHY
      CONFIG_STM32_AUTONEG=y
      CONFIG_STM32_PHYADDR=1
      CONFIG_STM32_PHYSR=16
      CONFIG_STM32_PHYSR_SPEED=0x0002
      CONFIG_STM32_PHYSR_100MBPS=0x0000
      CONFIG_STM32_PHYSR_MODE=0x0004
      CONFIG_STM32_PHYSR_FULLDUPLEX=0x0004
      CONFIG_STM32_RMII_EXTCLK=y

    Device Drivers -> Networking Devices
      CONFIG_NETDEVICES=y                    : More PHY stuff
      CONFIG_ETH0_PHY_DP83848C=y

    Networking (required)
      CONFIG_NET=y                           : Enabled networking support
      CONFIG_NSH_NOMAC=y

    Networking (recommended/typical)
      CONFIG_NSOCKET_DESCRIPTORS=10          : Socket-related
      CONFIG_NET_SOCKOPTS=y

      CONFIG_NET_ETH_MTU=650                 : Maximum packet size
      CONFIG_NET_ETH_TCP_RECVWNDO=650
      CONFIG_NET_TCP_READAHEAD=y             : Enable read-ahead buffering
      CONFIG_NET_TCP_READAHEAD_BUFSIZE=650

      CONFIG_NET_TCP=y                       : TCP support
      CONFIG_NET_NTCP_READAHEAD_BUFFERS=8

      CONFIG_NET_UDP=y                       : UDP support
      CONFIG_NET_UDP_CONNS=8

      CONFIG_NET_ICMP=y                      : ICMP support
      CONFIG_NET_ICMP_PING=y

      CONFIG_NSH_DRIPADDR=0x0a000001         : Network identity
      CONFIG_NSH_IPADDR=0x0a000002
      CONFIG_NSH_NETMASK=0xffffff00

    Network Utilities (basic)
      CONFIG_NETUTILS_TFTPC=y                : Needed by NSH unless to disable TFTP commands
      CONFIG_NETUTILS_DHCPC=y                : Fun stuff
      CONFIG_NETUTILS_TELNETD=y              : Support for a Telnet NSH console
      CONFIG_NSH_TELNET=y

      (also FTP, TFTP, WGET, NFS, etc. if you also have a mass storage
      device).

Freescale MPL115A barometer sensor
==================================

  This board support package includes hooks that can be used to enable
  testing of a Freescale MPL115A barometer sensor connected via SPI3 with
  chip select on PB6,

  Here are the configuration settings that would have to be included to
  enabled support for the barometer:

    System Type -> Peripherals
      CONFIG_STM32_SPI3=y

    Drivers -> SPI
      CONFIG_SPI=y
      CONFIG_SPI_EXCHANGE=y

    Drivers -> Sensors
      CONFIG_SENSORS=y
      CONFIG_MPL115A=y
      CONFIG_NSH_ARCHINIT=y


  Note: this driver uses SPI3 then since PB3 pin is also use to JTAG TDO you
  need to disable JTAG support to get this driver working:

    System Type
      CONFIG_STM32_JTAG_DISABLE=y

LCD/Touchscreen Interface
=========================

  An LCD may be connected via J11.  Only the the STM32F103 supports the FSMC signals
  needed to drive the LCD.

  The LCD features an (1) HY32D module with built-in SSD1289 LCD controller, and (a)
  a XPT2046 touch screen controller.

  LCD Connector
  -------------

    ----------------------------- ------------------------ --------------------------------
           Connector J11           GPIO CONFIGURATION(s)
    PIN SIGNAL        LEGEND          (F103 only)                   LCD Module
    --- ------------- ----------- ------------------------ --------------------------------
    1   VDD_5         NC          N/A                      5V      ---
    2   GND           GND         N/A                      GND     ---
    3   PD14          DATA0       GPIO_NPS_D0              D0      HY32D
    4   PD15          DATA1       GPIO_NPS_D1              D1      HY32D
    5   PD0           DATA2       GPIO_NPS_D2              D2      HY32D
    6   PD1           DATA3       GPIO_NPS_D3              D3      HY32D
    7   PE7           DATA4       GPIO_NPS_D4              D4      HY32D
    8   PE8           DATA5       GPIO_NPS_D5              D5      HY32D
    9   PE9           DATA6       GPIO_NPS_D6              D6      HY32D
    10  PE10          DATA7       GPIO_NPS_D7              D7      HY32D
    11  PE11          DATA8       GPIO_NPS_D8              D8      HY32D
    12  PE12          DATA9       GPIO_NPS_D9              D9      HY32D
    13  PE13          DATA10      GPIO_NPS_D10             D10     HY32D
    14  PE14          DATA11      GPIO_NPS_D11             D11     HY32D
    15  PE15          DATA12      GPIO_NPS_D12             D12     HY32D
    16  PD8           DATA13      GPIO_NPS_D13             D13     HY32D
    17  PD9           DATA14      GPIO_NPS_D14             D14     HY32D
    18  PD10          DATA15      GPIO_NPS_D15             D15     HY32D
    19  (3)           LCD_CS      GPIO_NPS_NE1             CS      HY32D
    20  PD11          LCD_RS      GPIO_NPS_A16             RS      HY32D
    21  PD5           LCD_R/W     GPIO_NPS_NWE             WR      HY32D
    22  PD4           LCD_RD      GPIO_NPS_NOE             RD      HY32D
    23  PB1           LCD_RESET   (GPIO)                   RESET   HY32D
    24  N/C           NC          N/A                      TE      (unused?)
    25  VDD_3.3       BL_VCC      N/A                      BLVDD   CA6219 (Drives LCD backlight)
    26  GND           BL_GND      N/A                      BLGND   CA6219
    27  PB0           BL_PWM      GPIO_TIM3_CH3OUT(2)      BL_CNT  CA6219
    28  PC5           LCDTP_IRQ   (GPIO)                   TP_IRQ  XPT2046
    29  PC4           LCDTP_CS    (GPIO)                   TP_CS   XPT2046
    30  PB13          LCDTP_CLK   GPIO_SPI2_SCK            TP_SCK  XPT2046
    31  PB15          LCDTP_DIN   GPIO_SPI2_MOSI           TP_SI   XPT2046
    32  PB14          LCDTP_DOUT  GPIO_SPI2_MISO           TP_SO   XPT2046
    33  VDD_3.3       VDD_3.3     N/A                      3.3V    ---
    34  GND           GND         N/A                      GND     ---
    --- ------------- ----------- ------------------------ --------------------------------

    NOTES:
    1) Only the F103 version of the board supports the FSMC
    2) No remap
    3) LCD_CS is controlled by J13 JUMPER4 (under the LCD unfortunately):

       1->2 : PD7 (GPIO_NPS_NE1) enables the multiplexor  : 1E\ enable input (active LOW)
       3->4 : PD13 provides 1A0 input (1A1 is grounded).  : 1A0 address input
              So will chip enable to either LCD_CS or
              Flash_CS.
       5->6 : 1Y0 output to LCD_CS                        : 1Y0 address output
       7->8 : 1Y1 output to Flash_CE                      : 1Y1 address output

       Truth Table:
       1E\ 1A0 1A1 1Y0 1Y1
       --- --- --- --- ---
       HI  N/A N/A HI  HI
       LO  LO  LO  LO  HI
       LO  HI  LO  HI  LO

Toolchains
==========

  NOTE about Windows native toolchains
  ------------------------------------

  There are several limitations to using a Windows based 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.

Configurations
==============

  Information Common to All Configurations
  ----------------------------------------
  Each SAM3U-EK configuration is maintained in a sub-directory and
  can be selected as follow:

    cd tools
    ./configure.sh viewtool-stm32f107/<subdir>
    cd -

  Before starting the build, make sure that your PATH environment variable
  includes the correct path to your toolchain.

  And then build NuttX by simply typing the following.  At the conclusion of
  the make, the nuttx binary will reside in an ELF file called, simply, nuttx.

    make

  The <subdir> that is provided above as an argument to the tools/configure.sh
  must be is one of the following.

  NOTES:

  1. These configurations use the mconf-based configuration tool.  To
    change any of these 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.

  2. Unless stated otherwise, all configurations generate console
     output on USART1.

  3. Unless otherwise stated, the configurations are setup for
     Cygwin under Windows:

     Build Setup:
       CONFIG_HOST_WINDOWS=y                   : Windows operating system
       CONFIG_WINDOWS_CYGWIN=y                 : POSIX environment under windows

  4. All of these configurations use the CodeSourcery for Windows toolchain
     (unless stated otherwise in the description of the configuration).  That
     toolchain selection can easily be reconfigured using 'make menuconfig'.
     Here are the relevant current settings:

     System Type -> Toolchain:
       CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y : GNU EABI toolchain for windows

     See also the "NOTE about Windows native toolchains" in the section call
     "GNU Toolchain Options" above.

  4. These configurations all assume that the STM32F107VCT6 is mounted on
     board.  This is configurable; you can select the STM32F103VCT6 as an
     alternative.

  5. These configurations all assume that you are loading code using
     something like the ST-Link v2 JTAG.  None of these configurations are
     setup to use the DFU bootloader but should be easily reconfigured to
     use that bootloader is so desired.

  Configuration Sub-directories
  -----------------------------

  netnsh:

    This configuration directory provide the NuttShell (NSH) with
    networking support.

    NOTES:
    1. This configuration will work only on the version the viewtool
       board with the the STM32F107VCT6 installed.  If you have a board
       with the STM32F103VCT6 installed, please use the nsh configuration
       described below.

    2. There is no PHY on the base viewtool stm32f107 board.  You must
       also have the "ViewTool DP83848 Ethernet Module" installed on J2
       in order to support networking.

    3. Since networking is enabled, you will see some boot-up delays when
       the network connection is established.  These delays can be quite
       large if no network is attached (A production design to bring up the
       network asynchronously to avoid these start up delays).

    4. This configuration uses the default USART1 serial console.  That
       is easily changed by reconfiguring to (1) enable a different
       serial peripheral, and (2) selecting that serial peripheral as
       the console device.

    5. By default, this configuration is set up to build on Windows
       under either a Cygwin or MSYS environment using a recent, Windows-
       native, generic ARM EABI GCC toolchain (such as the CodeSourcery
       toolchain).  Both the build environment and the toolchain
       selection can easily be changed by reconfiguring:

       CONFIG_HOST_WINDOWS=y                   : Windows operating system
       CONFIG_WINDOWS_CYGWIN=y                 : POSIX environment under windows
       CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y : CodeSourcery for Windows

    6. USB support is disabled by default.  See the section above entitled,
       "USB Interface"

    STATUS.  The first time I build the configuration, I get some undefined
    external references.  No idea why.  Simply cleaning the apps/ directory
    and rebuilding fixes the problem:

      make apps_clean all

  nsh:

    This configuration directory provide the basic NuttShell (NSH).

    NOTES:
    1. This configuration will work with either the version of the board
       with STM32F107VCT6 or STM32F103VCT6 installed.  The default
       configuration is for the STM32F107VCT6.  To use this configuration
       with a STM32F103VCT6, it would have to be modified as follows:

      System Type -> STM32 Configuration Options
         CONFIG_ARCH_CHIP_STM32F103VC=y
         CONFIG_ARCH_CHIP_STM32F107VC=n

    2. This configuration uses the default USART1 serial console.  That
       is easily changed by reconfiguring to (1) enable a different
       serial peripheral, and (2) selecting that serial peripheral as
       the console device.

    3. By default, this configuration is set up to build on Windows
       under either a Cygwin or MSYS environment using a recent, Windows-
       native, generic ARM EABI GCC toolchain (such as the CodeSourcery
       toolchain).  Both the build environment and the toolchain
       selection can easily be changed by reconfiguring:

       CONFIG_HOST_WINDOWS=y                   : Windows operating system
       CONFIG_WINDOWS_CYGWIN=y                 : POSIX environment under windows
       CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y : CodeSourcery for Windows

    4. USB support is disabled by default.  See the section above entitled,
       "USB Interface"

    3. This configured can be re-configured to use either the Viewtool LCD
       module. NOTE:  The LCD module can only be used on the STM32F103 version
       of the board.  The LCD requires FSMC support.

          System Type -> STM32 Chip Selection:
            CONFIG_ARCH_CHIP_STM32F103VC=y      : Select STM32F103VCT6

          System Type -> Peripherals:
            CONFIG_STM32_FSMC=y                   : Enable FSMC LCD interface

          Device Drivers -> LCD Driver Support
            CONFIG_LCD=y                          : Enable LCD support
            CONFIG_NX_LCDDRIVER=y                 : LCD graphics device
            CONFIG_LCD_MAXCONTRAST=1
            CONFIG_LCD_MAXPOWER=255
            CONFIG_LCD_LANDSCAPE=y                : Landscape orientation
            CONFIG_LCD_SSD1289=y                  : Select the SSD1289
            CONFIG_SSD1289_PROFILE1=y

          Graphics Support
            CONFIG_NX=y

          Graphics Support -> Supported Pixel Depths
            CONFIG_NX_DISABLE_1BPP=y              : Only 16BPP supported
            CONFIG_NX_DISABLE_2BPP=y
            CONFIG_NX_DISABLE_4BPP=y
            CONFIG_NX_DISABLE_8BPP=y
            CONFIG_NX_DISABLE_24BPP=y
            CONFIG_NX_DISABLE_32BPP=y

          Graphics Support -> Font Selections
            CONFIG_NXFONTS_CHARBITS=7
            CONFIG_NXFONT_SANS22X29B=y
            CONFIG_NXFONT_SANS23X27=y

          Application Configuration -> Examples
            CONFIG_EXAMPLES_NXLINES=y
            CONFIG_EXAMPLES_NXLINES_BGCOLOR=0x0320
            CONFIG_EXAMPLES_NXLINES_LINEWIDTH=16
            CONFIG_EXAMPLES_NXLINES_LINECOLOR=0xffe0
            CONFIG_EXAMPLES_NXLINES_BORDERWIDTH=4
            CONFIG_EXAMPLES_NXLINES_BORDERCOLOR=0xffe0
            CONFIG_EXAMPLES_NXLINES_CIRCLECOLOR=0xf7bb
            CONFIG_EXAMPLES_NXLINES_BPP=16

       STATUS: Not working; reads 0x8999 as device ID.  This may perhaps
               be due to incorrect jumper settings

    6. This configuration has been used for verifying the touchscreen on
       on the Viewtool LCD module.  NOTE:  The LCD module can really only
       be used on the STM32F103 version of the board.  The LCD requires
       FSMC support (the touchscreen, however, does not but the touchscreen
       is not very meaningful with no LCD).

          System Type -> STM32 Chip Selection:
           CONFIG_ARCH_CHIP_STM32F103VC=y    : Select STM32F103VCT6

       With the following modifications, you can include the touchscreen
       test program at apps/examples/touchscreen as an NSH built-in
       application.  You can enable the touchscreen and test by modifying
       the default configuration in the following ways:

          Device Drivers
            CONFIG_SPI=y                       : Enable SPI support
            CONFIG_SPI_EXCHANGE=y              : The exchange() method is supported

            CONFIG_INPUT=y                     : Enable support for input devices
            CONFIG_INPUT_ADS7843E=y            : Enable support for the XPT2046
            CONFIG_ADS7843E_SPIDEV=2           : Use SPI2 for communication
            CONFIG_ADS7843E_SPIMODE=0          : Use SPI mode 0
            CONFIG_ADS7843E_FREQUENCY=1000000  : SPI BAUD 1MHz
            CONFIG_ADS7843E_SWAPXY=y           : If landscape orientation
            CONFIG_ADS7843E_THRESHX=51         : These will probably need to be tuned
            CONFIG_ADS7843E_THRESHY=39

          System Type -> Peripherals:
            CONFIG_STM32_SPI2=y                : Enable support for SPI2

          RTOS Features:
            CONFIG_DISABLE_SIGNALS=n           : Signals are required

          Library Support:
            CONFIG_SCHED_WORKQUEUE=y           : Work queue support required

          Applicaton Configuration:
            CONFIG_EXAMPLES_TOUCHSCREEN=y      : Enable the touchscreen built-int test

          Defaults should be okay for related touchscreen settings.  Touchscreen
          debug output on USART1 can be enabled with:

          Build Setup:
            CONFIG_DEBUG_FEATURES=y            : Enable debug features
            CONFIG_DEBUG_INFO=y                : Enable verbose debug output
            CONFIG_DEBUG_INPUT=y               : Enable debug output from input devices

       STATUS: Working

  highpri:

    This configuration was used to verify the NuttX high priority, nested
    interrupt feature.  This is a board-specific test and probably not
    of much interest now other than for reference.

    This configuration targets the viewtool board with the STM32F103VCT6
    mounted.  It uses TIM6 to generated high rate interrupts for the test.
