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 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_OTG_FSDM 3 OTG_DP PA12 GPIO_OTG_FSDP 4 OTG_ID PA10 GPIO_OTG_FSID 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 NOTES: 1. GPIO_OTG_FSVBUS should not be configured. No VBUS sensing 2. GPIO_OTG_FSSOF is not used Configuration ------------- To be provided. Some logic is in place, leveraged from other boards. But this logic is not full implemented, not has it ever been built or\ tested. 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 ------------- To be provided (for the STM32F103 only) 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_NET_MULTIBUFFER=y : Required by driver CONFIG_NSH_NOMAC=y Networking (recommended/typical) CONFIG_NSOCKET_DESCRIPTORS=10 : Socket-related CONFIG_NET_SOCKOPTS=y CONFIG_NET_BUFSIZE=650 : Maximum packet size CONFIG_NET_RECEIVE_WINDOW=650 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). 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. 3. Dependencies are not made when using Windows versions of the GCC. This is because the dependencies are generated using Windows pathes which do not work with the Cygwin make. MKDEP = $(TOPDIR)/tools/mknulldeps.sh 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 - . ./setenv.sh Before sourcing the setenv.sh file above, you should examine it and perform edits as necessary so that TOOLCHAIN_BIN is the correct path to the directory than holds your toolchain binaries. 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 and misc/tools/ 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 The setenv.sh file is available for you to use to set the PATH variable. The path in the that file may not, however, be correct for your installation. 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 is 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 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_STM32F103VCT6=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 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.