README.txt file for the nucleo-144
This commit is contained in:
parent
abc0481a57
commit
d03b0f5188
306
configs/nucleo-144/README.txt
Normal file
306
configs/nucleo-144/README.txt
Normal file
@ -0,0 +1,306 @@
|
||||
README
|
||||
======
|
||||
|
||||
This README discusses issues unique to NuttX configurations for the ST
|
||||
Nucleo F746ZG board from ST Micro. See
|
||||
|
||||
http://www.st.com/web/catalog/tools/FM116/CL1620/SC959/SS1532/LN1847/PF261636
|
||||
|
||||
The Nucleo F746ZG order part number is NUCLEO-F746ZG. It is clumped together
|
||||
under the STM32 Nucleo-144 board family. This does provide uniformity in the
|
||||
documentation from ST and should allow us to quickly change configurations
|
||||
but just cloning this configuration and changing the CPU choice and board
|
||||
init. Unfortunately for the developer, the CPU specific information must be
|
||||
extracted from the common information in the documentation.
|
||||
|
||||
Please read the User Manaul UM1727: Getting started with STM32 Nucleo board
|
||||
software development tools and take note of the Powering options for the
|
||||
board (6.3 Power supply and power selection) and the Solder bridges based
|
||||
hardware configuration changes that are configurable (6.11 Solder bridges).
|
||||
|
||||
NUCLEO-F746ZG:
|
||||
|
||||
Microprocessor: STM32F746ZGT6 Core: ARM 32-bit Cortex®-M7 CPU with FPU,
|
||||
L1-cache: 4KB data cache and 4KB instruction cache, up to
|
||||
216 MHz, MPU, and DSP instructions.
|
||||
Memory: 1024 KB Flash 320KB of SRAM (including 64KB of data TCM RAM)
|
||||
+ 16KB of instruction TCM RAM + 4KB of backup SRAM
|
||||
ADC: 3×12-bit, 2.4 MSPS ADC: up to 24 channels and 7.2 MSPS in
|
||||
triple interleaved mode
|
||||
DMA: 16-stream DMA controllers with FIFOs and burst support
|
||||
Timers: Up to 18 timers: up to thirteen 16-bit (1x 16-bit lowpower),
|
||||
two 32-bit timers, 2x watchdogs, SysTick
|
||||
GPIO: 114 I/O ports with interrupt capability
|
||||
LCD: LCD-TFT Controllerwith (DMA2D), Parallel interface
|
||||
I2C: 4 × I2C interfaces (SMBus/PMBus)
|
||||
U[S]ARTs: 4 USARTs, 4 UARTs (27 Mbit/s, ISO7816 interface, LIN, IrDA,
|
||||
modem control)
|
||||
SPI/12Ss: 6/3 (simplex) (up to 50 Mbit/s), 3 with muxed simplex I2S
|
||||
for audio class accuracy via internal audio PLL or external
|
||||
clock
|
||||
QSPI: Dual mode Quad-SPI
|
||||
SAIs: 2 Serial Audio Interfaces
|
||||
CAN: 2 X CAN interface
|
||||
SDMMC interface
|
||||
SPDIFRX interface
|
||||
USB: USB 2.0 full-speed device/host/OTG controller with on-chip
|
||||
PHY
|
||||
10/100 Ethernet: MAC with dedicated DMA: supports IEEE 1588v2 hardware,
|
||||
MII/RMII
|
||||
Camera Interface: 8/14 Bit
|
||||
CRC calculation unit
|
||||
TRG: True random number generator
|
||||
RTC
|
||||
|
||||
Board features:
|
||||
|
||||
Peripherals: 8 leds, 2 push button (3 LEDs, 1 button) under software
|
||||
control
|
||||
Debug: STLINK/V2-1 debugger/programmer Uses a STM32F103CB to
|
||||
provide a ST-Link for programming, debug similar to the
|
||||
OpenOcd FTDI function - USB to JTAG front-end.
|
||||
|
||||
Expansion I/F ST Zio an Extended Ardino and Morpho Headers
|
||||
|
||||
See https://developer.mbed.org/platforms/ST-Nucleo-F746ZG form additional information about this board.
|
||||
|
||||
Contents
|
||||
========
|
||||
|
||||
- Development Environment
|
||||
- IDEs
|
||||
- Basic configuaration & build steps
|
||||
- Hardware
|
||||
- Button
|
||||
- LED
|
||||
- U[S]ARTs and Serial Consoles
|
||||
- Configurations
|
||||
|
||||
Development Environment
|
||||
=======================
|
||||
|
||||
Either Linux or Cygwin on Windows can be used for the development environment.
|
||||
The source has been built only using the GNU toolchain (see below). Other
|
||||
toolchains will likely cause problems.
|
||||
|
||||
All testing has been conducted using the GNU toolchain from ARM for Linux.
|
||||
found here https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update/+download/gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2
|
||||
|
||||
If you change the default toolchain, then you may also have to modify the PATH in
|
||||
the setenv.h file if your make cannot find the tools.
|
||||
|
||||
|
||||
IDEs
|
||||
====
|
||||
|
||||
NuttX is built using command-line make. It can be used with an IDE, but some
|
||||
effort will be required to create the project.
|
||||
|
||||
Makefile Build
|
||||
--------------
|
||||
Under Eclipse, it is pretty easy to set up an "empty makefile project" and
|
||||
simply use the NuttX makefile to build the system. That is almost for free
|
||||
under Linux. Under Windows, you will need to set up the "Cygwin GCC" empty
|
||||
makefile project in order to work with Windows (Google for "Eclipse Cygwin" -
|
||||
there is a lot of help on the internet).
|
||||
|
||||
|
||||
Basic configuration & build steps
|
||||
==================================
|
||||
|
||||
A GNU GCC-based toolchain is assumed. The files */setenv.sh should
|
||||
be modified to point to the correct path to the Cortex-M7 GCC toolchain (if
|
||||
different from the default in your PATH variable).
|
||||
|
||||
- Configures nuttx creating .config file in the nuttx directory
|
||||
$ cd tools && ./configure.sh nucleo-f746zg/nsh && cd ..
|
||||
- Refreshes the .config file with the latest features addes sice this writting
|
||||
$ make oldconfig
|
||||
- Select the features you want in the build.
|
||||
$ make menuconfig
|
||||
- Builds Nuttx with the features you selected.
|
||||
$ make
|
||||
|
||||
Hardware
|
||||
========
|
||||
|
||||
GPIO - there are 144 I/O lines on the STM32F746ZGT6 with various pins pined out
|
||||
on the Nucleo F746ZG
|
||||
|
||||
See https://developer.mbed.org/platforms/ST-Nucleo-F746ZG/ for slick graphic
|
||||
pinouts.
|
||||
|
||||
Keep in mind that:
|
||||
1) The I/O is 3.3 Volt not 5 Volt like on the Arduino products.
|
||||
2) The Nucleo-144 board family has 3 pages of Solder Bridges AKA Solder
|
||||
Blobs (SB) that can alter the factory configuration. We will note SB
|
||||
in effect but will assume the facitory defualt settings.
|
||||
|
||||
Our main concern is establishing a console and LED utilization for
|
||||
debugging. Because so many pins can be multiplexed with so many functions,
|
||||
the above mentioned graphic is super helpful in indentifying a serial port
|
||||
that will not rob us of another IO feature. Namely Serial Port 8 (UART8)
|
||||
with TX on PE1 and RX on PE0. Of course if your design has used those
|
||||
pins you can choose another IO configuration to bring out Serial Port 8
|
||||
or choose a completely different U[S]ART to use as the console.
|
||||
In that Case, You will need to edit the include/board.h to select different
|
||||
U[S]ART and / or pin selections.
|
||||
|
||||
|
||||
Serial
|
||||
----
|
||||
|
||||
SERIAL_RX PE_0
|
||||
SERIAL_TX PE_1
|
||||
|
||||
Buttons
|
||||
-------
|
||||
B1 USER: the user button is connected to the I/O PC13 (Tamper support, SB173
|
||||
ON and SB180 OFF)
|
||||
|
||||
LEDs
|
||||
----
|
||||
The Board provides a 3 user LEDs, LD1-LD3
|
||||
LED1 (Green) PB_0 (SB120 ON and SB119 OFF)
|
||||
LED2 (Blue) PB_7 (SB139 ON)
|
||||
LED3 (Red) PB_14 (SP118 ON)
|
||||
|
||||
- When the I/O is HIGH value, the LEDs are on.
|
||||
- When the I/O is LOW, the LEDs are off.
|
||||
|
||||
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_autoleds.c. The LEDs are used to encode OS
|
||||
related events as follows when the LEDs are available:
|
||||
|
||||
SYMBOL Meaning RED GREEN BLUE
|
||||
------------------- ----------------------- -----------
|
||||
|
||||
LED_STARTED 0 OFF OFF OFF
|
||||
LED_HEAPALLOCATE 0 OFF OFF OFF
|
||||
LED_IRQSENABLED 0 OFF OFF OFF
|
||||
LED_STACKCREATED 1 OFF ON OFF
|
||||
LED_INIRQ 2 NC NC ON (momentary)
|
||||
LED_SIGNAL 2 NC NC ON (momentary)
|
||||
LED_ASSERTION 3 ON NC NC (momentary)
|
||||
LED_PANIC 4 ON OFF OFF (flashing 2Hz)
|
||||
|
||||
OFF - means that the OS is still initializing. Initialization is very fast so
|
||||
if you see this at all, it probably means that the system is hanging up
|
||||
somewhere in the initialization phases.
|
||||
|
||||
GREEN - This means that the OS completed initialization.
|
||||
|
||||
BLUE - Whenever and interrupt or signal handler is entered, the BLUE LED is
|
||||
illuminated and extinguished when the interrupt or signal handler exits.
|
||||
|
||||
RED - If a recovered assertion occurs, the RED LED will be illuminated
|
||||
briefly while the assertion is handled. You will probably never see this.
|
||||
|
||||
Flashing RED - In the event of a fatal crash, all other LEDs will be
|
||||
extinguished and RED LED will FLASH at a 2Hz rate.
|
||||
|
||||
|
||||
Thus if the GREEN LED is lit, NuttX has successfully booted and is,
|
||||
apparently, running normally. If the RED LED is flashing at
|
||||
approximately 2Hz, then a fatal error has been detected and the system has
|
||||
halted.
|
||||
|
||||
Serial Consoles
|
||||
===============
|
||||
|
||||
USART8
|
||||
------
|
||||
Pins and Connectors:
|
||||
GPIO Connector NAME
|
||||
RXD: PE0 CN11 pin 64, PE0
|
||||
CN10 pin 33, D34
|
||||
|
||||
TXD: PE1 CN11 pin 61, PE1
|
||||
|
||||
You must use a 3.3 TTL to RS-232 converter or a USB to 3.3V TTL
|
||||
|
||||
Nucleo 144 FTDI TTL-232R-3V3
|
||||
----------- ------------
|
||||
TXD - CN11 pin 64 - RXD - Pin 5 (Yellow)
|
||||
RXD - CN11 pin 61 - TXD - Pin 4 (Orange)
|
||||
GND CN11 pin 63 GND Pin 1 (Black)
|
||||
|
||||
*Note you will be reverse RX/TX
|
||||
|
||||
Use make menuconfig to configure USART8 as the console:
|
||||
|
||||
CONFIG_STM32F7_UART8=y
|
||||
CONFIG_USART8_ISUART=y
|
||||
CONFIG_USART8_SERIAL_CONSOLE=y
|
||||
CONFIG_UART8_RXBUFSIZE=256
|
||||
CONFIG_UART8_TXBUFSIZE=256
|
||||
CONFIG_UART8_BAUD=115200
|
||||
CONFIG_UART8_BITS=8
|
||||
CONFIG_UART8_PARITY=0
|
||||
CONFIG_UART8_2STOP=0
|
||||
|
||||
Virtual COM Port
|
||||
----------------
|
||||
Yet another option is to use USART3 and the USB virtual COM port. This
|
||||
option may be more convenient for long term development, but is painful
|
||||
to use during board bring-up.
|
||||
|
||||
Solder Bridges. This configuration requires:
|
||||
|
||||
PD8 USART3 TX SB5 ON and SB7 OFF (Default)
|
||||
PD9 USART3 RX SB6 ON and SB4 OFF (Default)
|
||||
|
||||
Configuring USART3 is the same as given above but add the S and #3.
|
||||
|
||||
Question: What BAUD should be configure to interface with the Virtual
|
||||
COM port? 115200 8N1?
|
||||
|
||||
Default
|
||||
-------
|
||||
As shipped, SB4 and SB7 are open and SB5 and SB6 closed, so the
|
||||
virtual COM port is enabled.
|
||||
|
||||
|
||||
Configurations
|
||||
==============
|
||||
|
||||
nsh:
|
||||
---------
|
||||
Configures the NuttShell (nsh) located at apps/examples/nsh for the
|
||||
Nucleo-144 boards. The Configuration enables the serial interfaces
|
||||
on UART8. Support for builtin applications is enabled, but in the base
|
||||
configuration no builtin applications are selected (see NOTES below).
|
||||
|
||||
NOTES:
|
||||
|
||||
1. This configuration uses the mconf-based configuration tool. To
|
||||
change this configuration 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. If this is the intall configuration then Execute
|
||||
'cd tools && ./configure.sh stm32f746g-disco/nsh && cd ..'
|
||||
in nuttx/ in order to start configuration process.
|
||||
Caution: Doing this step more than once will overwrite .config with
|
||||
the contents of the stm32f746g-disco/nsh/defconfig file.
|
||||
|
||||
c. Execute 'make oldconfig' in nuttx/ in order to refresh the
|
||||
configuration.
|
||||
|
||||
d. Execute 'make menuconfig' in nuttx/ in order to start the
|
||||
reconfiguration process.
|
||||
|
||||
e. Save the .config file to reuse it in the future starting at step d.
|
||||
|
||||
2. By default, this configuration uses the ARM GNU toolchain
|
||||
for Linux. That can easily be reconfigured, of course.
|
||||
|
||||
CONFIG_HOST_LINUX=y : Builds under Linux
|
||||
CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL=y : ARM GNU for Linux
|
||||
|
||||
3. Although the default console is USART3 (which would correspond to
|
||||
the Virtual COM port) I have done all testing with the console
|
||||
device configured for UART8 (see instruction above under "Serial
|
||||
Consoles).
|
Loading…
Reference in New Issue
Block a user