/** @defgroup boards_stm32mp157c-dk2 STM32MP157C-DK2 board @ingroup boards @brief Support for the STM32MP157C-DK2 board ## Overview The STM32MP157C-DK2 is a board from ST featuring a double architecture based on a dual Cortex-A7 and a Cortex-M4 STM32MP157C microcontroller with 384KB of SRAM and no ROM Flash. ## Hardware ![STM32MP157C-DK2](https://www.st.com/bin/ecommerce/api/image.PF267415.en.feature-description-include-personalized-no-cpn-medium.jpg) ### MCU | MCU | STM32MP157CAC | |:---------- |:----------------- | | Family | ARM Dual Cortex-A7 & Cortex-M4 | | Vendor | ST Microelectronics | | RAM | 384Kb for Cortex-M4 | | Flash | None but 64KB of RETRAM | | Frequency | up to 209MHz | | FPU | yes | | Timers | 32 (3x watchdog, 2x 4 Cortex-A7 system timers, 1x SysTick, 5x 16-bit Low-Power, 12x 16-bit, 2x 32-bit, 1 RTC) | | ADCs | 2x 12-bit (16 channels), 2x 16-bit (16 channels) | | UARTs | 4x UART + 4x USART | | SPIs | 6 | | I2Cs | 6 | | RTC | 1 | | CAN | 2 | | USB | 3 | | Vcc | 1.8V - 3.6V | | Datasheet | [Datasheet](https://www.st.com/resource/en/datasheet/stm32mp157c.pdf) | | Reference Manual | [Reference Manual](https://www.st.com/resource/en/reference_manual/dm00327659-stm32mp157-advanced-armbased-32bit-mpus-stmicroelectronics.pdf) | | Programming Manual | [Programming Manual](https://www.st.com/resource/en/programming_manual/dm00046982-stm32-cortexm4-mcus-and-mpus-programming-manual-stmicroelectronics.pdf) | | Board Manual | [Board Manual](https://www.st.com/resource/en/user_manual/dm00591354-discovery-kits-with-stm32mp157-mpus-stmicroelectronics.pdf)| ## Implementation Status | Device | ID | Supported | Comments | |:------------- |:------------- |:------------- |:------------- | | MCU | STM32MP157CAC | partly | | | Low-level driver | GPIO | yes | | | | UART | 1 UART | USART3 on PB12(RX)/PB10(TX) | | | Timer | one 32 bit timer | TIM2 | ## Flashing the device Note that the STM32MP157C-DK2 board has no ROM Flash, thus the firmware needs to be reflashed each time the board is rebooted. ### Boot selection jumper: | BOOT mode | BOOT0 | BOOT2 | | :-------- |:----- |:----- | | Engineering | 1 | 1 | | SD Card (Linux) | 0 | 1 | ### Engineering mode The STM32MP157C-DK2 board includes an on-board ST-LINK V2 programmer. The easiest way to program the board is to use OpenOCD. Once you have installed OpenOCD (look [here](https://github.com/RIOT-OS/RIOT/wiki/OpenOCD) for installation instructions), you can flash the board simply by typing inside your application directory: ``` USEMODULE='stm32mp1_eng_mode' make BOARD=stm32mp157c-dk2 flash ``` and debug via GDB by simply typing ``` USEMODULE='stm32mp1_eng_mode' make BOARD=stm32mp157c-dk2 debug ``` ### SD Card (Linux) mode This assumes that Linux is booted and that your Linux kernel supports STM32 remoteproc framework. Build the firmware inside your application directory: ``` make BOARD=stm32mp157c-dk2 ``` Copy your firmware firmware.elf in /lib/firmwares on the Linux system. (replace firmware.elf by your firmware filename) Then simply launch this commands on the Linux system as root user: ``` echo firmware.elf > /sys/class/remoteproc/remoteproc0/firmware echo start > /sys/class/remoteproc/remoteproc0/state ``` You can stop RIOT from Linux command line: ``` echo stop > /sys/class/remoteproc/remoteproc0/state ``` ## Supported Toolchains For using the STM32MP157C-DK2 board we strongly recommend the usage of the [GNU Tools for ARM Embedded Processors](https://launchpad.net/gcc-arm-embedded) toolchain. */