From b4c4d554c9dea9f64461024f5ab3cf9bb60ae50a Mon Sep 17 00:00:00 2001 From: thread-liu Date: Thu, 13 Aug 2020 12:00:14 +0800 Subject: [PATCH] [update] add stm32mp157a-st-ev1 bsp --- .../Templates/arm/startup_stm32mp15xx.s | 6 +- bsp/stm32/stm32mp157a-st-ev1/.config | 450 +++ bsp/stm32/stm32mp157a-st-ev1/.gitignore | 42 + bsp/stm32/stm32mp157a-st-ev1/.project | 11 + .../stm32mp157a-st-ev1/EventRecorderStub.scvd | 9 + bsp/stm32/stm32mp157a-st-ev1/Kconfig | 22 + bsp/stm32/stm32mp157a-st-ev1/README.md | 168 + bsp/stm32/stm32mp157a-st-ev1/README_zh.md | 187 ++ bsp/stm32/stm32mp157a-st-ev1/SConscript | 15 + bsp/stm32/stm32mp157a-st-ev1/SConstruct | 60 + .../applications/SConscript | 11 + .../stm32mp157a-st-ev1/applications/main.c | 33 + .../board/CubeMX_Config/.mxproject | 14 + .../board/CubeMX_Config/CM4/Inc/main.h | 77 + .../CM4/Inc/stm32mp1xx_hal_conf.h | 396 +++ .../CubeMX_Config/CM4/Inc/stm32mp1xx_it.h | 77 + .../board/CubeMX_Config/CM4/Src/main.c | 929 ++++++ .../CM4/Src/stm32mp1xx_hal_msp.c | 987 ++++++ .../CubeMX_Config/CM4/Src/stm32mp1xx_it.c | 321 ++ .../Common/System/system_stm32mp1xx.c | 290 ++ .../board/CubeMX_Config/STM32MP157-DK1.ioc | 857 +++++ bsp/stm32/stm32mp157a-st-ev1/board/Kconfig | 177 + bsp/stm32/stm32mp157a-st-ev1/board/SConscript | 47 + bsp/stm32/stm32mp157a-st-ev1/board/board.c | 189 ++ bsp/stm32/stm32mp157a-st-ev1/board/board.h | 54 + .../board/linker_scripts/link.icf | 36 + .../board/linker_scripts/link.lds | 157 + .../board/linker_scripts/link.sct | 27 + .../board/ports/drv_hard_i2c.c | 124 + .../board/ports/drv_hard_i2c.h | 48 + .../board/ports/drv_lptim.c | 128 + .../stm32mp157a-st-ev1/board/ports/drv_wwdg.c | 103 + .../stm32mp157a-st-ev1/board/ports/stpmic.c | 1225 +++++++ .../stm32mp157a-st-ev1/board/ports/stpmic.h | 315 ++ .../stm32mp157a-st-ev1/figures/board.png | Bin 0 -> 157606 bytes bsp/stm32/stm32mp157a-st-ev1/figures/boot.png | Bin 0 -> 328289 bytes bsp/stm32/stm32mp157a-st-ev1/project.ewd | 2966 +++++++++++++++++ bsp/stm32/stm32mp157a-st-ev1/project.ewp | 2563 ++++++++++++++ bsp/stm32/stm32mp157a-st-ev1/project.ewt | 2765 +++++++++++++++ bsp/stm32/stm32mp157a-st-ev1/project.eww | 10 + bsp/stm32/stm32mp157a-st-ev1/project.uvopt | 167 + bsp/stm32/stm32mp157a-st-ev1/project.uvoptx | 1172 +++++++ bsp/stm32/stm32mp157a-st-ev1/project.uvprojx | 833 +++++ bsp/stm32/stm32mp157a-st-ev1/rtconfig.h | 175 + bsp/stm32/stm32mp157a-st-ev1/rtconfig.py | 150 + bsp/stm32/stm32mp157a-st-ev1/template.ewp | 2106 ++++++++++++ bsp/stm32/stm32mp157a-st-ev1/template.eww | 10 + bsp/stm32/stm32mp157a-st-ev1/template.uvopt | 167 + bsp/stm32/stm32mp157a-st-ev1/template.uvoptx | 192 ++ bsp/stm32/stm32mp157a-st-ev1/template.uvprojx | 411 +++ 50 files changed, 21276 insertions(+), 3 deletions(-) create mode 100644 bsp/stm32/stm32mp157a-st-ev1/.config create mode 100644 bsp/stm32/stm32mp157a-st-ev1/.gitignore create mode 100644 bsp/stm32/stm32mp157a-st-ev1/.project create mode 100644 bsp/stm32/stm32mp157a-st-ev1/EventRecorderStub.scvd create mode 100644 bsp/stm32/stm32mp157a-st-ev1/Kconfig create mode 100644 bsp/stm32/stm32mp157a-st-ev1/README.md create mode 100644 bsp/stm32/stm32mp157a-st-ev1/README_zh.md create mode 100644 bsp/stm32/stm32mp157a-st-ev1/SConscript create mode 100644 bsp/stm32/stm32mp157a-st-ev1/SConstruct create mode 100644 bsp/stm32/stm32mp157a-st-ev1/applications/SConscript create mode 100644 bsp/stm32/stm32mp157a-st-ev1/applications/main.c create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/.mxproject create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/main.h create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/stm32mp1xx_hal_conf.h create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/stm32mp1xx_it.h create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/main.c create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/stm32mp1xx_hal_msp.c create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/stm32mp1xx_it.c create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/Common/System/system_stm32mp1xx.c create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/STM32MP157-DK1.ioc create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/Kconfig create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/SConscript create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/board.c create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/board.h create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.icf create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.lds create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.sct create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_hard_i2c.c create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_hard_i2c.h create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_lptim.c create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_wwdg.c create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/ports/stpmic.c create mode 100644 bsp/stm32/stm32mp157a-st-ev1/board/ports/stpmic.h create mode 100644 bsp/stm32/stm32mp157a-st-ev1/figures/board.png create mode 100644 bsp/stm32/stm32mp157a-st-ev1/figures/boot.png create mode 100644 bsp/stm32/stm32mp157a-st-ev1/project.ewd create mode 100644 bsp/stm32/stm32mp157a-st-ev1/project.ewp create mode 100644 bsp/stm32/stm32mp157a-st-ev1/project.ewt create mode 100644 bsp/stm32/stm32mp157a-st-ev1/project.eww create mode 100644 bsp/stm32/stm32mp157a-st-ev1/project.uvopt create mode 100644 bsp/stm32/stm32mp157a-st-ev1/project.uvoptx create mode 100644 bsp/stm32/stm32mp157a-st-ev1/project.uvprojx create mode 100644 bsp/stm32/stm32mp157a-st-ev1/rtconfig.h create mode 100644 bsp/stm32/stm32mp157a-st-ev1/rtconfig.py create mode 100644 bsp/stm32/stm32mp157a-st-ev1/template.ewp create mode 100644 bsp/stm32/stm32mp157a-st-ev1/template.eww create mode 100644 bsp/stm32/stm32mp157a-st-ev1/template.uvopt create mode 100644 bsp/stm32/stm32mp157a-st-ev1/template.uvoptx create mode 100644 bsp/stm32/stm32mp157a-st-ev1/template.uvprojx diff --git a/bsp/stm32/libraries/STM32MPxx_HAL/CMSIS/Device/ST/STM32MP1xx/Source/Templates/arm/startup_stm32mp15xx.s b/bsp/stm32/libraries/STM32MPxx_HAL/CMSIS/Device/ST/STM32MP1xx/Source/Templates/arm/startup_stm32mp15xx.s index d38ddd3fa..4deacdd1e 100644 --- a/bsp/stm32/libraries/STM32MPxx_HAL/CMSIS/Device/ST/STM32MP1xx/Source/Templates/arm/startup_stm32mp15xx.s +++ b/bsp/stm32/libraries/STM32MPxx_HAL/CMSIS/Device/ST/STM32MP1xx/Source/Templates/arm/startup_stm32mp15xx.s @@ -14,8 +14,8 @@ ;****************************************************************************** ;* @attention ;* -;*

© Copyright (c) 2019 STMicroelectronics. -;* All rights reserved.

+;* © Copyright (c) 2019 STMicroelectronics. +;* All rights reserved. ;* ;* This software component is licensed by ST under BSD 3-Clause license, ;* the "License"; You may not use this file except in compliance with the @@ -30,7 +30,7 @@ ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> ; -Stack_Size EQU 0x00000400 +Stack_Size EQU 0x00000800 AREA STACK, NOINIT, READWRITE, ALIGN=3 __stack_limit diff --git a/bsp/stm32/stm32mp157a-st-ev1/.config b/bsp/stm32/stm32mp157a-st-ev1/.config new file mode 100644 index 000000000..4f6a2ab16 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/.config @@ -0,0 +1,450 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_ALIGN_SIZE=4 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=100 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=256 +CONFIG_RT_USING_TIMER_SOFT=y +CONFIG_RT_TIMER_THREAD_PRIO=4 +CONFIG_RT_TIMER_THREAD_STACK_SIZE=512 +CONFIG_RT_DEBUG=y +CONFIG_RT_DEBUG_COLOR=y +# CONFIG_RT_DEBUG_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +CONFIG_RT_USING_MEMHEAP=y +# CONFIG_RT_USING_NOHEAP is not set +# CONFIG_RT_USING_SMALL_MEM is not set +# CONFIG_RT_USING_SLAB is not set +CONFIG_RT_USING_MEMHEAP_AS_HEAP=y +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart4" +CONFIG_RT_VER_NUM=0x40003 +CONFIG_ARCH_ARM=y +CONFIG_RT_USING_CPU_FFS=y +CONFIG_ARCH_ARM_CORTEX_M=y +CONFIG_ARCH_ARM_CORTEX_M4=y +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_CMD_SIZE=80 +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_USING_MSH_DEFAULT=y +# CONFIG_FINSH_USING_MSH_ONLY is not set +CONFIG_FINSH_ARG_MAX=10 + +# +# Device virtual file system +# +# CONFIG_RT_USING_DFS is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_PIPE_BUFSZ=512 +# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +# CONFIG_RT_USING_I2C is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +# CONFIG_RT_USING_WDT is not set +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_WIFI is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# POSIX layer and C standard library +# +CONFIG_RT_USING_LIBC=y +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Network +# + +# +# Socket abstraction layer +# +# CONFIG_RT_USING_SAL is not set + +# +# Network interface device +# +# CONFIG_RT_USING_NETDEV is not set + +# +# light weight TCP/IP stack +# +# CONFIG_RT_USING_LWIP is not set + +# +# AT commands +# +# CONFIG_RT_USING_AT is not set + +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_LWP is not set + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_LIBMODBUS is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_EZXML is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOTHUB is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_libsodium is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set + +# +# language packages +# +# CONFIG_PKG_USING_LUA is not set +# CONFIG_PKG_USING_JERRYSCRIPT is not set +# CONFIG_PKG_USING_MICROPYTHON is not set + +# +# multimedia packages +# +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set + +# +# system packages +# +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_PKG_USING_PERSIMMON is not set +# CONFIG_PKG_USING_CAIRO is not set +# CONFIG_PKG_USING_PIXMAN is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_PARTITION is not set +# CONFIG_PKG_USING_FAL is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_CMSIS is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# CONFIG_PKG_USING_WM_LIBRARIES is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_AGILE_BUTTON is not set +# CONFIG_PKG_USING_AGILE_LED is not set +# CONFIG_PKG_USING_AT24CXX is not set +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_TOUCH_DRIVERS is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set + +# +# miscellaneous packages +# +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_UKAL is not set +CONFIG_SOC_FAMILY_STM32=y +CONFIG_SOC_SERIES_STM32MP1=y + +# +# Hardware Drivers Config +# +CONFIG_SOC_STM32MP157A=y + +# +# Onboard Peripheral Drivers +# +CONFIG_BSP_USING_STLINK_TO_USART=y + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +# CONFIG_BSP_USING_WWDG is not set +CONFIG_BSP_USING_UART=y +# CONFIG_BSP_USING_UART3 is not set +# CONFIG_BSP_UART3_RX_USING_DMA is not set +CONFIG_BSP_USING_UART4=y +# CONFIG_BSP_UART4_RX_USING_DMA is not set +# CONFIG_BSP_UART4_TX_USING_DMA is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_LPTIM is not set +# CONFIG_BSP_USING_PWM is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_DAC is not set +# CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_SPI is not set +# CONFIG_BSP_USING_CRC is not set +# CONFIG_BSP_USING_RNG is not set +# CONFIG_BSP_USING_UDID is not set + +# +# Board extended module Drivers +# diff --git a/bsp/stm32/stm32mp157a-st-ev1/.gitignore b/bsp/stm32/stm32mp157a-st-ev1/.gitignore new file mode 100644 index 000000000..7221bde01 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/.gitignore @@ -0,0 +1,42 @@ +*.pyc +*.map +*.dblite +*.elf +*.bin +*.hex +*.axf +*.exe +*.pdb +*.idb +*.ilk +*.old +build +Debug +documentation/html +packages/ +*~ +*.o +*.obj +*.out +*.bak +*.dep +*.lib +*.i +*.d +.DS_Stor* +.config 3 +.config 4 +.config 5 +Midea-X1 +*.uimg +GPATH +GRTAGS +GTAGS +.vscode +JLinkLog.txt +JLinkSettings.ini +DebugConfig/ +RTE/ +settings/ +*.uvguix* +cconfig.h diff --git a/bsp/stm32/stm32mp157a-st-ev1/.project b/bsp/stm32/stm32mp157a-st-ev1/.project new file mode 100644 index 000000000..29d7c74de --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/.project @@ -0,0 +1,11 @@ + + + STM32MP157 + + + + + + + + diff --git a/bsp/stm32/stm32mp157a-st-ev1/EventRecorderStub.scvd b/bsp/stm32/stm32mp157a-st-ev1/EventRecorderStub.scvd new file mode 100644 index 000000000..2956b2968 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bsp/stm32/stm32mp157a-st-ev1/Kconfig b/bsp/stm32/stm32mp157a-st-ev1/Kconfig new file mode 100644 index 000000000..7a400db91 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/Kconfig @@ -0,0 +1,22 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" + diff --git a/bsp/stm32/stm32mp157a-st-ev1/README.md b/bsp/stm32/stm32mp157a-st-ev1/README.md new file mode 100644 index 000000000..a4798872c --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/README.md @@ -0,0 +1,168 @@ +# STM32MP157A-EV1 BSP (Board Support Package) Execution Instruction + +[中文页](README_zh.md) | + +# Introduction + +This document records the execution instruction of the BSP (board support package) provided by the RT-Thread development team for the STM32MP157A-EV1 development board. + +The document is covered in three parts: + +- STM32MP157A-EV1 Board Resources Introduction + +- Quickly Get Started + +- Advanced Features + +By reading the Quickly Get Started section developers can quickly get their hands on this BSP and run RT-Thread on the board. More advanced features will be introduced in the Advanced Features section to help developers take advantage of RT-Thread to drive more on-board resources. + +## STM32MP157A-EV1 Board Resources Introduction + +The STM32MP157A-EV1 is a development board based on a dual Cortex-A7 and Cortex-M4 core. The Cortex-A7 core operates at 650 MHZ and the Cortex-M4 operates at 209MHZ. There is no Flash inside the STM32MP157A. + +​ ![board](figures/board.png) + +The mainly-used **on-board resources** are shown as follows: + +* MCU : STM32MP157AAAx +* Common peripherals: + - 4 LEDs: LD4(PD8), LD5(PD9), LD2(PA13), LD3(PA14) + - 4 Buttons: WAKE_UP, RESET (NRST), USER1(PA13), USER2 (PA14) +* Common-used interface: USB, SD card, Ethernet, MIPI, USB HOST, Audio, HDMI, Arduino. +* Debug interface: Standard JTAG/SWD. + +For more details about this board, please refer to the ST official documentation: + +[STM32MP157A-EV1 Development board introduction](https://www.st.com/content/st_com/zh/products/evaluation-tools/product-evaluation-tools/mcu-mpu-eval-tools/stm32-mcu-mpu-eval-tools/stm32-eval-boards/stm32mp157a-ev1.html) + +## Peripheral Condition + +Each peripheral supporting condition for this BSP is as follows: + +| On-board Peripheral | **Support** | **Remark** | +| :----------------------------- | :---------: | :--------------: | +| USB TO UART | YES | | +| PMIC | NO | | +| CAMERA | NO | OV5640 | +| MFX | NO | | +| FMC | NO | MT25F8G08A8ACAH4 | +| QSPI FLASH | NO | MX25L51245G | +| OpenAMP | NO | | +| POWER | NO | | +| SD Card (SDMMC1) | NO | | +| EMMC(SDMMC2) | NO | | +| ETH | NO | | +| AUDIO | NO | WM8994 | +| **On-chip Peripheral Drivers** | **Support** | **Remark** | +| GPIO | YES | | +| UART | YES | UART4 (ST-Link) | +| EXTI | YES | | +| SPI | YES | | +| TIM | YES | | +| LPTIM | YES | | +| I2C | YES | Software | +| ADC | YES | | +| DAC | YES | | +| WWDG | YES | | +| MDMA | NO | | +| SPDIFRX | NO | | +| DFSDM | NO | | +| PWM | NO | | +| FDCAN | NO | | +| CRC | NO | | +| RNG | NO | | +| HASH | NO | | +| CRYP | NO | | + +## Execution Instruction + +### Quickly Get Started + +This BSP provides IAR projects for developers. Here's an example of the IAR development environment, to introduce how to run the system. + +#### Hardware Connection + +Use a USB cable to connect the development board to the PC and turn on the power switch. + +#### Compile And Download + +Double-click the project.eww file, to open the IAR project, compile and download the program to the board. + +> By default, the project uses ST_LINK simulator to download the program, when the ST_LINK connects the board, clicking the download button can download the program to the board. + +#### Running Results + +After the program is successfully downloaded, the system runs automatically. Observe the running results of the LED on the development board, the orange LD4 will flash periodically. + +Connect the serial port of the board to PC, communicate with it via a serial terminal tool (115200-8-1-N). Restart the board and the startup information of RT-Thread will be observed: + +```bash + \ | / +- RT - Thread Operating System + / | \ 3.1.1 build Nov 19 2018 + 2006 - 2018 Copyright by rt-thread team +msh > +``` + +#### Drivers + +##### 1. DAC + +* Open the [Env](https://www.rt-thread.io/download.html?download=Env) tool under this BSP; +* Enter the `menuconfig` command, enter the Hardware Drivers config and open DAC, save and exit; + +* Enter the `scons --target=iar` command to regenerate project. + +###### Finsh + +Before you use a device, you need to find out if the device exists, and you can use the name of the DAC device that is enrolled with the command `dac probe` . As shown as follows. + +``` +msh />dac probe dac1 +probe dac1 success +``` + +Enable the channel of the device can use the command `dac enable` followed by the channel number. + + ```shell +msh />dac probe dac1 +probe dac1 success + ``` + +Set up the data of the channel for a DAC device can use the command `dac write` followed by the channel number. + +``` +msh />dac write 1 1000 +dac1 channel 1 write value is 1000 +``` + +Disable the channel of the device can use the command `dac disable` followed by the channel number. + +```c +msh />dac disable 1 +dac1 channel 1 disable success +``` + +### Advanced Features + +This BSP only enables GPIO and serial port 4 by default. If need more advanced features, you need to configure the BSP with RT-Thread Env tools, as follows: + +* Open the [Env](https://www.rt-thread.io/download.html?download=Env) tool under this BSP; +* Enter the `menuconfig` command to configure the project, then save and exit; +* Enter the `pkgs --update` command to update the packages; +* Enter the `scons --target=iar `command to regenerate the project. + +## Notes + +* Before downloading the program, set the board to the mode of "Engineering Mode". The BOOT switch sets to BOOT0=0,BOOT1 = 0 and BOOT2=1, as shown below: + + ​ boot_switch + +* If need to reburn the program, please reset the development board. + + +## Contact Information + +accendant: + +- [liukang](https://github.com/thread-liu) diff --git a/bsp/stm32/stm32mp157a-st-ev1/README_zh.md b/bsp/stm32/stm32mp157a-st-ev1/README_zh.md new file mode 100644 index 000000000..8b5e3a2ad --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/README_zh.md @@ -0,0 +1,187 @@ +# STM32MP157A-DK1 开发板 BSP 说明 + +## 简介 + +本文档为 RT-Thread 开发团队为 STM32MP157A-DK1 开发板提供的 BSP (板级支持包) 说明。 + +主要内容如下: + +- 开发板资源介绍 +- BSP 快速上手 +- 进阶使用方法 + +通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。在进阶使用指南章节,将会介绍更多高级功能,帮助开发者利用 RT-Thread 驱动更多板载资源。 + +## 开发板介绍 + +STM32MP157A-DK1 是 ST 推出的一款基于双 Cortex-A7 + Cortex-M4 内核的开发板。Cortex-A7 核工作频率为 800 MHZ,Cortex-M4 工作频率为 209MHZ。STM32MP157A 内部没有 Flash。 + +开发板外观如下图所示: + +​ ![board](figures/board.png) + +该开发板常用 **板载资源** 如下: + +- MCU:STM32MP157AACx +- 常用外设 + - LED:4个 ,LD4 (PA14), LD6 (PA13),LD7 (PH7),LD8 (PD11) + - 按键,4个,WAKE_UP,RESET (NRST),USER1(PA14),USER2 (PA13) +- 常用接口:USB 转串口、SD 卡接口、以太网接口、MIPI接口、USB HOST、Audio、HDMI、Arduino +- 调试接口,标准 JTAG/SWD + +开发板更多详细信息请参考 ST 官方文档 [STM32MP157A-DK1 开发板介绍](https://www.st.com/content/st_com/zh/products/evaluation-tools/product-evaluation-tools/mcu-mpu-eval-tools/stm32-mcu-mpu-eval-tools/stm32-discovery-kits/stm32mp157a-dk1.html)。 + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **板载外设** | **支持情况** | **备注** | +| :----------- | :----------: | :--------------: | +| USB 转串口 | 支持 | | +| SD卡 | 暂不支持 | | +| 以太网 | 暂不支持 | | +| 音频接口 | 暂不支持 | | +| **片上外设** | **支持情况** | **备注** | +| GPIO | 支持 | | +| UART | 支持 | UART4 (ST-Link) | +| EXTI | 支持 | | +| SPI | 支持 | | +| TIM | 支持 | | +| LPTIM | 支持 | | +| I2C | 支持 | 软件、硬件都支持 | +| ADC | 支持 | | +| DAC | 支持 | | +| WWDG | 支持 | | +| USB Device | 暂不支持 | | +| USB Host | 暂不支持 | | + + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + + +### 快速上手 + +本 BSP 为开发者提供 IAR 工程。下面以 IAR 开发环境为例,介绍如何将系统运行起来。 + +#### 硬件连接 + +使用数据线连接开发板到 PC,打开电源开关。 + +#### 编译下载 + +双击 project.eww 文件,打开 IAR 工程,编译并下载程序到开发板。 + +> 工程默认配置使用 ST-LINK 下载程序,在通过 ST-LINK连接开发板的基础上,点击下载按钮即可下载程序到开发板 + +#### 运行结果 + +下载程序成功之后,系统会自动运行,观察开发板上 LED 的运行效果,蓝色 LD8 会周期性闪烁,终端会周期性输出 ”Hello RT-Thread!“ + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),可以看到 RT-Thread 的输出信息: + +> 注:正点原子开发板 在使用终端工具如:PuTTy、XShell 时,会出现系统不能启动的问题,推荐使用串口调试助手如:sscom + +```bash + \ | / +- RT - Thread Operating System + / | \ 3.1.1 build Nov 19 2018 + 2006 - 2018 Copyright by rt-thread team +msh > +Hello RT-Thread! +``` +#### 驱动使用 +##### 1. WWDG + +1. 在 bsp 下打开 env 工具; +2. 输入 `menuconfig` 命令, 进入 Hardware Drivers config 打开 wwdg,保存并退出; +3. 输入 `scons --target=iar` 命令重新生成工程; +4. wwdg 设备会在喂狗前触发中断,LD5 会在中断中不停的闪烁; +5. 在终端输入 `wwdg_sample` ,获取 wwdg 设备 Finsh 命令; +6. `wwdg_sample run` 开启 wwdg 设备; +7. `wwdg_sample set` 设置 wwdg 设备分频率; +8. 通过调整 wwdg 设备分频率,开发板上 LD5 会有不同的闪烁频率。 + +##### 2. DAC + +1. 在 bsp 下打开 env 工具; +2. 输入`menuconfig`命令, 进入 Hardware Drivers config 打开 dac,保存并退出; +3. 输入 `scons --target=iar` 命令重新生成工程; + +###### Finsh + +在使用设备前,需要先查找设备是否存在,可以使用命令 `dac probe` 后面跟注册的 DAC 设备的名称。如下所示: + +```c +msh />dac probe dac1 +probe dac1 success +``` + +使能设备的某个通道可以使用命令 `dac enable` 后面跟通道号。 + +```c +msh />dac enable 1 +dac1 channel 1 enables success +``` + +设置 DAC 设备某个通道的数据可以使用命令 `dac write` 后面跟通道号。 + +```c +msh />dac write 1 1000 +dac1 channel 1 write value is 1000 +``` + +关闭设备的某个通道可以使用命令 `dac disable` 后面跟通道号。 + +```c +msh />dac disable 1 +dac1 channel 1 disable success +``` +#### 3. LPTIM + +1. 在 bsp 下打开 env 工具; +2. 输入 `menuconfig` 命令, 进入 Hardware Drivers config 打开 lptim,保存并退出; +3. 输入 `scons --target=iar` 命令重新生成工程; +4. lptim 设备计时溢出时会触发中断,中断会打印字符串 `"hello rt-thread!"`; +5. 在终端输入 `lptim_sample` ,获取 lptim 设备 Finsh 命令; +6. `lptim_sample run` 开启 lptim 设备; +7. `lptim_sample set` 设置 lptim 设备分频率。 + + +### 进阶使用 + +此 BSP 默认只开启了 GPIO 和 串口4 的功能,如果需更多高级功能,需要利用 ENV 工具对BSP 进行配置,步骤如下: + +1. 在 bsp 下打开 env 工具。 + +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 + +3. 输入`pkgs --update`命令更新软件包。 + +4. 输入`scons --target=iar` 命令重新生成工程。 + +本章节更多详细的介绍请参考 [STM32 系列 BSP 外设驱动使用教程](../docs/STM32系列BSP外设驱动使用教程.md)。 + +## 注意事项 + +1. 下载程序前,将开发板设置为 "Engineering Mode" 模式。 在 DK1 开发板上,将底下的BOOT开关设成 BOOT0=0,BOOT2=1状态,就进入"Engineering Mode",如下图所示: + + ​ boot_switch + +2. 再次烧写程序时,需要复位开发板。 + +## 联系人信息 + +维护人: + +- [liukang](https://github.com/thread-liu) + diff --git a/bsp/stm32/stm32mp157a-st-ev1/SConscript b/bsp/stm32/stm32mp157a-st-ev1/SConscript new file mode 100644 index 000000000..20f7689c5 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/SConscript @@ -0,0 +1,15 @@ +# for module compiling +import os +Import('RTT_ROOT') +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(d, 'SConscript')) + +Return('objs') diff --git a/bsp/stm32/stm32mp157a-st-ev1/SConstruct b/bsp/stm32/stm32mp157a-st-ev1/SConstruct new file mode 100644 index 000000000..e1481a896 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/SConstruct @@ -0,0 +1,60 @@ +import os +import sys +import rtconfig + +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') +else: + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + +sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] +try: + from building import * +except: + print('Cannot found RT-Thread root directory, please check RTT_ROOT') + print(RTT_ROOT) + exit(-1) + +TARGET = 'rt-thread.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) + +if rtconfig.PLATFORM == 'iar': + env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) + env.Replace(ARFLAGS = ['']) + env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map') + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') + +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) + +stm32_library = 'STM32MPxx_HAL' +rtconfig.BSP_LIBRARY_TYPE = stm32_library + +# include libraries +objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SConscript'))) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/stm32/stm32mp157a-st-ev1/applications/SConscript b/bsp/stm32/stm32mp157a-st-ev1/applications/SConscript new file mode 100644 index 000000000..04f04dd54 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/applications/SConscript @@ -0,0 +1,11 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') +CPPPATH = [cwd, str(Dir('#'))] + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/stm32/stm32mp157a-st-ev1/applications/main.c b/bsp/stm32/stm32mp157a-st-ev1/applications/main.c new file mode 100644 index 000000000..b38732f06 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/applications/main.c @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2020-06-05 thread-liu first version + */ + +#include +#include +#include + +/* defined the LD4 pin: PD8 */ +#define LED4_PIN GET_PIN(D, 8) + +int main(void) +{ + int count = 1; + /* set LD8 pin mode to output */ + rt_pin_mode(LED4_PIN, PIN_MODE_OUTPUT); + + while (count++) + { + rt_pin_write(LED4_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED4_PIN, PIN_LOW); + rt_thread_mdelay(500); + } + + return RT_EOK; +} diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/.mxproject b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/.mxproject new file mode 100644 index 000000000..d2274cfbc --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/.mxproject @@ -0,0 +1,14 @@ +[PreviousGenFiles] +HeaderPath=D:/3_work/GitRepositories/rt-thread/bsp/stm32/stm32mp157a-st-discovery/board/CubeMX_Config/CM4/Inc +HeaderFiles=stm32mp1xx_it.h;stm32mp1xx_hal_conf.h;main.h; +SourcePath=D:/3_work/GitRepositories/rt-thread/bsp/stm32/stm32mp157a-st-discovery/board/CubeMX_Config/CM4/Src +SourceFiles=stm32mp1xx_it.c;stm32mp1xx_hal_msp.c;main.c; + +[PreviousLibFiles] +LibFiles=Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_adc.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_adc_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_ll_adc.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_rcc.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_rcc_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_gpio.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_gpio_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_hsem.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_dma.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_dma_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_mdma.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_pwr.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_pwr_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_cortex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_def.h;Drivers/STM32MP1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_exti.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_dac.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_dac_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_ipcc.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_lptim.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_spi.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_spi_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_tim.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_tim_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_uart.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_uart_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_wwdg.h;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_ll_adc.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_adc.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_adc_ex.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_rcc.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_rcc_ex.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_gpio.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_hsem.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dma.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dma_ex.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_mdma.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_pwr.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_pwr_ex.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_cortex.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_exti.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dac.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dac_ex.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_ipcc.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_lptim.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_spi.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_spi_ex.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_tim.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_tim_ex.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_uart.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_uart_ex.c;Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_wwdg.c;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_adc.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_adc_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_ll_adc.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_rcc.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_rcc_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_gpio.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_gpio_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_hsem.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_dma.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_dma_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_mdma.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_pwr.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_pwr_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_cortex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_def.h;Drivers/STM32MP1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_exti.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_dac.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_dac_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_ipcc.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_lptim.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_spi.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_spi_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_tim.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_tim_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_uart.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_uart_ex.h;Drivers/STM32MP1xx_HAL_Driver/Inc/stm32mp1xx_hal_wwdg.h;Drivers/CMSIS/Device/ST/STM32MP1xx/Include/stm32mp157axx_cm4.h;Drivers/CMSIS/Device/ST/STM32MP1xx/Include/stm32mp1xx.h;Drivers/CMSIS/Device/ST/STM32MP1xx/Include/system_stm32mp1xx.h;Drivers/CMSIS/Device/ST/STM32MP1xx/Source/Templates/system_stm32mp1xx.c;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h; + +[PreviousUsedIarFiles] +SourceFiles=..\CM4\Src\main.c;..\CM4\Src\stm32mp1xx_it.c;..\CM4\Src\stm32mp1xx_hal_msp.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_ll_adc.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_adc.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_adc_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_rcc.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_rcc_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_gpio.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_hsem.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dma.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dma_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_mdma.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_pwr.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_pwr_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_cortex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_exti.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dac.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dac_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_ipcc.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_lptim.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_spi.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_spi_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_tim.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_tim_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_uart.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_uart_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_wwdg.c;..\Common/System/system_stm32mp1xx.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_ll_adc.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_adc.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_adc_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_rcc.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_rcc_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_gpio.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_hsem.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dma.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dma_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_mdma.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_pwr.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_pwr_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_cortex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_exti.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dac.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_dac_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_ipcc.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_lptim.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_spi.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_spi_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_tim.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_tim_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_uart.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_uart_ex.c;..\Drivers/STM32MP1xx_HAL_Driver/Src/stm32mp1xx_hal_wwdg.c;..\Common/System/system_stm32mp1xx.c;..\Drivers/CMSIS/Device/ST/STM32MP1xx/Source/Templates/system_stm32mp1xx.c;; +HeaderPath=..\Drivers\STM32MP1xx_HAL_Driver\Inc;..\Drivers\STM32MP1xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32MP1xx\Include;..\Drivers\CMSIS\Include;..\CM4\Inc; +CDefines=CORE_CM4;CORE_CM4;CORE_CM4;USE_HAL_DRIVER;STM32MP157Axx;USE_HAL_DRIVER;USE_HAL_DRIVER; + diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/main.h b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/main.h new file mode 100644 index 000000000..9880e4f88 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/main.h @@ -0,0 +1,77 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32mp1xx_hal.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ +#define STLINK_RX_Pin GPIO_PIN_11 +#define STLINK_RX_GPIO_Port GPIOG +#define STLINK_TX_Pin GPIO_PIN_2 +#define STLINK_TX_GPIO_Port GPIOB +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/stm32mp1xx_hal_conf.h b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/stm32mp1xx_hal_conf.h new file mode 100644 index 000000000..424bdc02a --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/stm32mp1xx_hal_conf.h @@ -0,0 +1,396 @@ +/** + ****************************************************************************** + * @file stm32mp1xx_hal_conf.h + * @brief HAL configuration file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32MP1xx_HAL_CONF_H +#define STM32MP1xx_HAL_CONF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ +/** + * @brief This is the list of modules to be used in the HAL driver + */ +#define HAL_MODULE_ENABLED +#define HAL_ADC_MODULE_ENABLED +/*#define HAL_CEC_MODULE_ENABLED */ +/*#define HAL_CRC_MODULE_ENABLED */ +/*#define HAL_CRYP_MODULE_ENABLED */ +#define HAL_DAC_MODULE_ENABLED +/*#define HAL_DCMI_MODULE_ENABLED */ +/*#define HAL_DSI_MODULE_ENABLED */ +/*#define HAL_DFSDM_MODULE_ENABLED */ +/*#define HAL_DTS_MODULE_ENABLED */ +/*#define HAL_ETH_MODULE_ENABLED */ +/*#define HAL_FDCAN_MODULE_ENABLED */ +/*#define HAL_HASH_MODULE_ENABLED */ +/*#define HAL_HCD_MODULE_ENABLED */ +#define HAL_HSEM_MODULE_ENABLED +#define HAL_I2C_MODULE_ENABLED +/*#define HAL_I2S_MODULE_ENABLED */ +#define HAL_IPCC_MODULE_ENABLED +/*#define HAL_IWDG_MODULE_ENABLED */ +#define HAL_LPTIM_MODULE_ENABLED +/*#define HAL_LTDC_MODULE_ENABLED */ +/*#define HAL_NAND_MODULE_ENABLED */ +/*#define HAL_NOR_MODULE_ENABLED */ +/*#define HAL_PCD_MODULE_ENABLED */ +/*#define HAL_QSPI_MODULE_ENABLED */ +/*#define HAL_RNG_MODULE_ENABLED */ +/*#define HAL_SAI_MODULE_ENABLED */ +/*#define HAL_SD_MODULE_ENABLED */ +/*#define HAL_MMC_MODULE_ENABLED */ +/*#define HAL_RTC_MODULE_ENABLED */ +/*#define HAL_SMBUS_MODULE_ENABLED */ +/*#define HAL_SPDIFRX_MODULE_ENABLED */ +#define HAL_SPI_MODULE_ENABLED +/*#define HAL_SRAM_MODULE_ENABLED */ +/*#define HAL_TAMP_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED +#define HAL_UART_MODULE_ENABLED +/*#define HAL_USART_MODULE_ENABLED */ +/*#define HAL_SMARTCARD_MODULE_ENABLED */ +#define HAL_WWDG_MODULE_ENABLED +#define HAL_GPIO_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_MDMA_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED + +/* ########################## Register Callbacks selection ############################## */ +/** + * @brief This is the list of modules where register callback can be used + */ +#define USE_HAL_ADC_REGISTER_CALLBACKS 0u +#define USE_HAL_CEC_REGISTER_CALLBACKS 0u +#define USE_HAL_DAC_REGISTER_CALLBACKS 0u +#define USE_HAL_I2C_REGISTER_CALLBACKS 0u +#define USE_HAL_RNG_REGISTER_CALLBACKS 0u +#define USE_HAL_SPI_REGISTER_CALLBACKS 0u +#define USE_HAL_UART_REGISTER_CALLBACKS 0u +#define USE_HAL_USART_REGISTER_CALLBACKS 0u +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0u + +/* ########################## Oscillator Values adaptation ####################*/ +/** + * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSE is used as system clock source, directly or through the PLL). + */ +#if !defined (HSE_VALUE) +#define HSE_VALUE (24000000U) /*!< Value of the External oscillator in Hz : FPGA case fixed to 60MHZ */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT (100U) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) + #define HSI_VALUE (64000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief In the following line adjust the Internal High Speed oscillator (HSI) Startup + * Timeout value + */ +#if !defined (HSI_STARTUP_TIMEOUT) + #define HSI_STARTUP_TIMEOUT 5000U /*!< Time out for HSI start up */ +#endif /* HSI_STARTUP_TIMEOUT */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) + #define LSI_VALUE 32000U +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature. */ + +/** + * @brief External Low Speed oscillator (LSE) value. + * This value is used by the UART, RTC HAL module to compute the system frequency + */ +#if !defined (LSE_VALUE) + #define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal oscillator (CSI) default value. + * This value is the default CSI value after Reset. + */ +#if !defined (CSI_VALUE) + #define CSI_VALUE 4000000U /*!< Value of the Internal oscillator in Hz*/ +#endif /* CSI_VALUE */ + +/** + * @brief External clock source for I2S peripheral + * This value is used by the I2S HAL module to compute the I2S clock source + * frequency, this source is inserted directly through I2S_CKIN pad. + */ +#if !defined (EXTERNAL_CLOCK_VALUE) + #define EXTERNAL_CLOCK_VALUE 12288000U /*!< Value of the External clock in Hz*/ +#endif /* EXTERNAL_CLOCK_VALUE */ + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** + * @brief This is the HAL system configuration section + */ +#define VDD_VALUE 3300U /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY 0U /*!< tick interrupt priority (lowest by default) */ + /* Warning: Must be set to higher priority for HAL_Delay() */ + /* and HAL_GetTick() usage under interrupt context */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 0U +#define INSTRUCTION_CACHE_ENABLE 0U +#define DATA_CACHE_ENABLE 0U + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32mp1xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32mp1xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32mp1xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_HSEM_MODULE_ENABLED + #include "stm32mp1xx_hal_hsem.h" +#endif /* HAL_HSEM_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32mp1xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_MDMA_MODULE_ENABLED + #include "stm32mp1xx_hal_mdma.h" +#endif /* HAL_MDMA_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32mp1xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32mp1xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED + #include "stm32mp1xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32mp1xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED + #include "stm32mp1xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32mp1xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_DCMI_MODULE_ENABLED + #include "stm32mp1xx_hal_dcmi.h" +#endif /* HAL_DCMI_MODULE_ENABLED */ + +#ifdef HAL_DFSDM_MODULE_ENABLED + #include "stm32mp1xx_hal_dfsdm.h" +#endif /* HAL_DFSDM_MODULE_ENABLED */ + +#ifdef HAL_DSI_MODULE_ENABLED + #include "stm32mp1xx_hal_dsi.h" +#endif /* HAL_DSI_MODULE_ENABLED */ + +#ifdef HAL_ETH_MODULE_ENABLED + #include "stm32mp1xx_hal_eth.h" +#endif /* HAL_ETH_MODULE_ENABLED */ + +#ifdef HAL_FDCAN_MODULE_ENABLED + #include "stm32mp1xx_hal_fdcan.h" +#endif /* HAL_FDCAN_MODULE_ENABLED */ + +#ifdef HAL_HASH_MODULE_ENABLED + #include "stm32mp1xx_hal_hash.h" +#endif /* HAL_HASH_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED + #include "stm32mp1xx_hal_hcd.h" +#endif /* HAL_HASH_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32mp1xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED + #include "stm32mp1xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IPCC_MODULE_ENABLED + #include "stm32mp1xx_hal_ipcc.h" +#endif /* HAL_IPCC_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32mp1xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32mp1xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED + #include "stm32mp1xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_LTDC_MODULE_ENABLED + #include "stm32mp1xx_hal_ltdc.h" +#endif /* HAL_LTDC_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED + #include "stm32mp1xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32mp1xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32mp1xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32mp1xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_QSPI_MODULE_ENABLED + #include "stm32mp1xx_hal_qspi.h" +#endif /* HAL_QSPI_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED + #include "stm32mp1xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_SAI_MODULE_ENABLED + #include "stm32mp1xx_hal_sai.h" +#endif /* HAL_SAI_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED + #include "stm32mp1xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32mp1xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_SMBUS_MODULE_ENABLED + #include "stm32mp1xx_hal_smbus.h" +#endif /* HAL_SMBUS_MODULE_ENABLED */ + +#ifdef HAL_SPDIFRX_MODULE_ENABLED + #include "stm32mp1xx_hal_spdifrx.h" +#endif /* HAL_SPDIFRX_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32mp1xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32mp1xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32mp1xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_TAMP_MODULE_ENABLED + #include "stm32mp1xx_hal_tamp.h" +#endif /* HAL_TAMP_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32mp1xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32mp1xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32mp1xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32mp1xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32MP1xx_HAL_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/stm32mp1xx_it.h b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/stm32mp1xx_it.h new file mode 100644 index 000000000..50c502088 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Inc/stm32mp1xx_it.h @@ -0,0 +1,77 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32mp1xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32MP1xx_IT_H +#define __STM32MP1xx_IT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); +void WWDG1_IRQHandler(void); +void LPTIM1_IRQHandler(void); +void IPCC_RX1_IRQHandler(void); +void IPCC_TX1_IRQHandler(void); +void LPTIM2_IRQHandler(void); +void LPTIM3_IRQHandler(void); +void LPTIM4_IRQHandler(void); +void LPTIM5_IRQHandler(void); +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32MP1xx_IT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/main.c b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/main.c new file mode 100644 index 000000000..32ea4f86c --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/main.c @@ -0,0 +1,929 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +ADC_HandleTypeDef hadc2; + +DAC_HandleTypeDef hdac1; + +IPCC_HandleTypeDef hipcc; + +LPTIM_HandleTypeDef hlptim1; +LPTIM_HandleTypeDef hlptim2; +LPTIM_HandleTypeDef hlptim3; +LPTIM_HandleTypeDef hlptim4; +LPTIM_HandleTypeDef hlptim5; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim4; +TIM_HandleTypeDef htim14; +TIM_HandleTypeDef htim16; +TIM_HandleTypeDef htim17; + +UART_HandleTypeDef huart4; +UART_HandleTypeDef huart3; + +WWDG_HandleTypeDef hwwdg1; + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +void PeriphCommonClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_IPCC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM4_Init(void); +static void MX_TIM14_Init(void); +static void MX_TIM16_Init(void); +static void MX_TIM17_Init(void); +static void MX_UART4_Init(void); +static void MX_ADC2_Init(void); +static void MX_DAC1_Init(void); +static void MX_LPTIM1_Init(void); +static void MX_LPTIM2_Init(void); +static void MX_LPTIM3_Init(void); +static void MX_LPTIM4_Init(void); +static void MX_LPTIM5_Init(void); +static void MX_USART3_UART_Init(void); +static void MX_WWDG1_Init(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + if(IS_ENGINEERING_BOOT_MODE()) + { + /* Configure the system clock */ + SystemClock_Config(); + } + + if(IS_ENGINEERING_BOOT_MODE()) + { + /* Configure the peripherals common clocks */ + PeriphCommonClock_Config(); + } + + /* IPCC initialisation */ + MX_IPCC_Init(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_SPI5_Init(); + MX_TIM4_Init(); + MX_TIM14_Init(); + MX_TIM16_Init(); + MX_TIM17_Init(); + MX_UART4_Init(); + MX_ADC2_Init(); + MX_DAC1_Init(); + MX_LPTIM1_Init(); + MX_LPTIM2_Init(); + MX_LPTIM3_Init(); + MX_LPTIM4_Init(); + MX_LPTIM5_Init(); + MX_USART3_UART_Init(); + MX_WWDG1_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure LSE Drive Capability + */ + HAL_PWR_EnableBkUpAccess(); + __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_MEDIUMHIGH); + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE + |RCC_OSCILLATORTYPE_LSE; + RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS_DIG; + RCC_OscInitStruct.LSEState = RCC_LSE_ON; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = 16; + RCC_OscInitStruct.HSIDivValue = RCC_HSI_DIV1; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + RCC_OscInitStruct.PLL2.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL2.PLLSource = RCC_PLL12SOURCE_HSE; + RCC_OscInitStruct.PLL2.PLLM = 3; + RCC_OscInitStruct.PLL2.PLLN = 66; + RCC_OscInitStruct.PLL2.PLLP = 2; + RCC_OscInitStruct.PLL2.PLLQ = 1; + RCC_OscInitStruct.PLL2.PLLR = 1; + RCC_OscInitStruct.PLL2.PLLFRACV = 0x1400; + RCC_OscInitStruct.PLL2.PLLMODE = RCC_PLL_FRACTIONAL; + RCC_OscInitStruct.PLL3.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL3.PLLSource = RCC_PLL3SOURCE_HSE; + RCC_OscInitStruct.PLL3.PLLM = 2; + RCC_OscInitStruct.PLL3.PLLN = 34; + RCC_OscInitStruct.PLL3.PLLP = 2; + RCC_OscInitStruct.PLL3.PLLQ = 17; + RCC_OscInitStruct.PLL3.PLLR = 37; + RCC_OscInitStruct.PLL3.PLLRGE = RCC_PLL3IFRANGE_1; + RCC_OscInitStruct.PLL3.PLLFRACV = 6660; + RCC_OscInitStruct.PLL3.PLLMODE = RCC_PLL_FRACTIONAL; + RCC_OscInitStruct.PLL4.PLLState = RCC_PLL_NONE; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** RCC Clock Config + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_ACLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2 + |RCC_CLOCKTYPE_PCLK3|RCC_CLOCKTYPE_PCLK4 + |RCC_CLOCKTYPE_PCLK5; + RCC_ClkInitStruct.AXISSInit.AXI_Clock = RCC_AXISSOURCE_PLL2; + RCC_ClkInitStruct.AXISSInit.AXI_Div = RCC_AXI_DIV1; + RCC_ClkInitStruct.MCUInit.MCU_Clock = RCC_MCUSSOURCE_PLL3; + RCC_ClkInitStruct.MCUInit.MCU_Div = RCC_MCU_DIV1; + RCC_ClkInitStruct.APB4_Div = RCC_APB4_DIV2; + RCC_ClkInitStruct.APB5_Div = RCC_APB5_DIV4; + RCC_ClkInitStruct.APB1_Div = RCC_APB1_DIV2; + RCC_ClkInitStruct.APB2_Div = RCC_APB2_DIV2; + RCC_ClkInitStruct.APB3_Div = RCC_APB3_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct) != HAL_OK) + { + Error_Handler(); + } + /** Set the HSE division factor for RTC clock + */ + __HAL_RCC_RTC_HSEDIV(24); +} + +/** + * @brief Peripherals Common Clock Configuration + * @retval None + */ +void PeriphCommonClock_Config(void) +{ + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + /** Initializes the common periph clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_CKPER; + PeriphClkInit.CkperClockSelection = RCC_CKPERCLKSOURCE_HSE; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief ADC2 Initialization Function + * @param None + * @retval None + */ +static void MX_ADC2_Init(void) +{ + + /* USER CODE BEGIN ADC2_Init 0 */ + + /* USER CODE END ADC2_Init 0 */ + + ADC_ChannelConfTypeDef sConfig = {0}; + + /* USER CODE BEGIN ADC2_Init 1 */ + + /* USER CODE END ADC2_Init 1 */ + /** Common config + */ + hadc2.Instance = ADC2; + hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV2; + hadc2.Init.Resolution = ADC_RESOLUTION_16B; + hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE; + hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV; + hadc2.Init.LowPowerAutoWait = DISABLE; + hadc2.Init.ContinuousConvMode = DISABLE; + hadc2.Init.NbrOfConversion = 1; + hadc2.Init.DiscontinuousConvMode = DISABLE; + hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START; + hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; + hadc2.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DR; + hadc2.Init.Overrun = ADC_OVR_DATA_PRESERVED; + hadc2.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE; + hadc2.Init.OversamplingMode = DISABLE; + if (HAL_ADC_Init(&hadc2) != HAL_OK) + { + Error_Handler(); + } + /** Configure Regular Channel + */ + sConfig.Channel = ADC_CHANNEL_6; + sConfig.Rank = ADC_REGULAR_RANK_1; + sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + sConfig.SingleDiff = ADC_SINGLE_ENDED; + sConfig.OffsetNumber = ADC_OFFSET_NONE; + sConfig.Offset = 0; + if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN ADC2_Init 2 */ + + /* USER CODE END ADC2_Init 2 */ + +} + +/** + * @brief DAC1 Initialization Function + * @param None + * @retval None + */ +static void MX_DAC1_Init(void) +{ + + /* USER CODE BEGIN DAC1_Init 0 */ + + /* USER CODE END DAC1_Init 0 */ + + DAC_ChannelConfTypeDef sConfig = {0}; + + /* USER CODE BEGIN DAC1_Init 1 */ + + /* USER CODE END DAC1_Init 1 */ + /** DAC Initialization + */ + hdac1.Instance = DAC1; + if (HAL_DAC_Init(&hdac1) != HAL_OK) + { + Error_Handler(); + } + /** DAC channel OUT1 config + */ + sConfig.DAC_HighFrequency = DAC_HIGH_FREQUENCY_INTERFACE_MODE_DISABLE; + sConfig.DAC_SampleAndHold = DAC_SAMPLEANDHOLD_DISABLE; + sConfig.DAC_Trigger = DAC_TRIGGER_NONE; + sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE; + sConfig.DAC_ConnectOnChipPeripheral = DAC_CHIPCONNECT_DISABLE; + sConfig.DAC_UserTrimming = DAC_TRIMMING_FACTORY; + if (HAL_DAC_ConfigChannel(&hdac1, &sConfig, DAC_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DAC1_Init 2 */ + + /* USER CODE END DAC1_Init 2 */ + +} + +/** + * @brief IPCC Initialization Function + * @param None + * @retval None + */ +static void MX_IPCC_Init(void) +{ + + /* USER CODE BEGIN IPCC_Init 0 */ + + /* USER CODE END IPCC_Init 0 */ + + /* USER CODE BEGIN IPCC_Init 1 */ + + /* USER CODE END IPCC_Init 1 */ + hipcc.Instance = IPCC; + if (HAL_IPCC_Init(&hipcc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN IPCC_Init 2 */ + + /* USER CODE END IPCC_Init 2 */ + +} + +/** + * @brief LPTIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_LPTIM1_Init(void) +{ + + /* USER CODE BEGIN LPTIM1_Init 0 */ + + /* USER CODE END LPTIM1_Init 0 */ + + /* USER CODE BEGIN LPTIM1_Init 1 */ + + /* USER CODE END LPTIM1_Init 1 */ + hlptim1.Instance = LPTIM1; + hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC; + hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1; + hlptim1.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE; + hlptim1.Init.OutputPolarity = LPTIM_OUTPUTPOLARITY_HIGH; + hlptim1.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE; + hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL; + hlptim1.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO; + hlptim1.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO; + if (HAL_LPTIM_Init(&hlptim1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LPTIM1_Init 2 */ + + /* USER CODE END LPTIM1_Init 2 */ + +} + +/** + * @brief LPTIM2 Initialization Function + * @param None + * @retval None + */ +static void MX_LPTIM2_Init(void) +{ + + /* USER CODE BEGIN LPTIM2_Init 0 */ + + /* USER CODE END LPTIM2_Init 0 */ + + /* USER CODE BEGIN LPTIM2_Init 1 */ + + /* USER CODE END LPTIM2_Init 1 */ + hlptim2.Instance = LPTIM2; + hlptim2.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC; + hlptim2.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1; + hlptim2.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE; + hlptim2.Init.OutputPolarity = LPTIM_OUTPUTPOLARITY_HIGH; + hlptim2.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE; + hlptim2.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL; + hlptim2.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO; + hlptim2.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO; + if (HAL_LPTIM_Init(&hlptim2) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LPTIM2_Init 2 */ + + /* USER CODE END LPTIM2_Init 2 */ + +} + +/** + * @brief LPTIM3 Initialization Function + * @param None + * @retval None + */ +static void MX_LPTIM3_Init(void) +{ + + /* USER CODE BEGIN LPTIM3_Init 0 */ + + /* USER CODE END LPTIM3_Init 0 */ + + /* USER CODE BEGIN LPTIM3_Init 1 */ + + /* USER CODE END LPTIM3_Init 1 */ + hlptim3.Instance = LPTIM3; + hlptim3.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC; + hlptim3.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1; + hlptim3.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE; + hlptim3.Init.OutputPolarity = LPTIM_OUTPUTPOLARITY_HIGH; + hlptim3.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE; + hlptim3.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL; + if (HAL_LPTIM_Init(&hlptim3) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LPTIM3_Init 2 */ + + /* USER CODE END LPTIM3_Init 2 */ + +} + +/** + * @brief LPTIM4 Initialization Function + * @param None + * @retval None + */ +static void MX_LPTIM4_Init(void) +{ + + /* USER CODE BEGIN LPTIM4_Init 0 */ + + /* USER CODE END LPTIM4_Init 0 */ + + /* USER CODE BEGIN LPTIM4_Init 1 */ + + /* USER CODE END LPTIM4_Init 1 */ + hlptim4.Instance = LPTIM4; + hlptim4.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC; + hlptim4.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1; + hlptim4.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE; + hlptim4.Init.OutputPolarity = LPTIM_OUTPUTPOLARITY_HIGH; + hlptim4.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE; + hlptim4.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL; + if (HAL_LPTIM_Init(&hlptim4) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LPTIM4_Init 2 */ + + /* USER CODE END LPTIM4_Init 2 */ + +} + +/** + * @brief LPTIM5 Initialization Function + * @param None + * @retval None + */ +static void MX_LPTIM5_Init(void) +{ + + /* USER CODE BEGIN LPTIM5_Init 0 */ + + /* USER CODE END LPTIM5_Init 0 */ + + /* USER CODE BEGIN LPTIM5_Init 1 */ + + /* USER CODE END LPTIM5_Init 1 */ + hlptim5.Instance = LPTIM5; + hlptim5.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC; + hlptim5.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1; + hlptim5.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE; + hlptim5.Init.OutputPolarity = LPTIM_OUTPUTPOLARITY_HIGH; + hlptim5.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE; + hlptim5.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL; + if (HAL_LPTIM_Init(&hlptim5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LPTIM5_Init 2 */ + + /* USER CODE END LPTIM5_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES_TXONLY; + hspi5.Init.DataSize = SPI_DATASIZE_4BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 0x0; + hspi5.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; + hspi5.Init.NSSPolarity = SPI_NSS_POLARITY_LOW; + hspi5.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA; + hspi5.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN; + hspi5.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN; + hspi5.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE; + hspi5.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE; + hspi5.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE; + hspi5.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_DISABLE; + hspi5.Init.IOSwap = SPI_IO_SWAP_DISABLE; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM4 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM4_Init(void) +{ + + /* USER CODE BEGIN TIM4_Init 0 */ + + /* USER CODE END TIM4_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + TIM_OC_InitTypeDef sConfigOC = {0}; + + /* USER CODE BEGIN TIM4_Init 1 */ + + /* USER CODE END TIM4_Init 1 */ + htim4.Instance = TIM4; + htim4.Init.Prescaler = 0; + htim4.Init.CounterMode = TIM_COUNTERMODE_UP; + htim4.Init.Period = 0; + htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim4) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + sConfigOC.Pulse = 0; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM4_Init 2 */ + + /* USER CODE END TIM4_Init 2 */ + HAL_TIM_MspPostInit(&htim4); + +} + +/** + * @brief TIM14 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM14_Init(void) +{ + + /* USER CODE BEGIN TIM14_Init 0 */ + + /* USER CODE END TIM14_Init 0 */ + + /* USER CODE BEGIN TIM14_Init 1 */ + + /* USER CODE END TIM14_Init 1 */ + htim14.Instance = TIM14; + htim14.Init.Prescaler = 0; + htim14.Init.CounterMode = TIM_COUNTERMODE_UP; + htim14.Init.Period = 0; + htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim14) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM14_Init 2 */ + + /* USER CODE END TIM14_Init 2 */ + +} + +/** + * @brief TIM16 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM16_Init(void) +{ + + /* USER CODE BEGIN TIM16_Init 0 */ + + /* USER CODE END TIM16_Init 0 */ + + /* USER CODE BEGIN TIM16_Init 1 */ + + /* USER CODE END TIM16_Init 1 */ + htim16.Instance = TIM16; + htim16.Init.Prescaler = 0; + htim16.Init.CounterMode = TIM_COUNTERMODE_UP; + htim16.Init.Period = 0; + htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim16.Init.RepetitionCounter = 0; + htim16.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim16) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM16_Init 2 */ + + /* USER CODE END TIM16_Init 2 */ + +} + +/** + * @brief TIM17 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM17_Init(void) +{ + + /* USER CODE BEGIN TIM17_Init 0 */ + + /* USER CODE END TIM17_Init 0 */ + + /* USER CODE BEGIN TIM17_Init 1 */ + + /* USER CODE END TIM17_Init 1 */ + htim17.Instance = TIM17; + htim17.Init.Prescaler = 0; + htim17.Init.CounterMode = TIM_COUNTERMODE_UP; + htim17.Init.Period = 0; + htim17.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim17.Init.RepetitionCounter = 0; + htim17.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim17) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM17_Init 2 */ + + /* USER CODE END TIM17_Init 2 */ + +} + +/** + * @brief UART4 Initialization Function + * @param None + * @retval None + */ +static void MX_UART4_Init(void) +{ + + /* USER CODE BEGIN UART4_Init 0 */ + + /* USER CODE END UART4_Init 0 */ + + /* USER CODE BEGIN UART4_Init 1 */ + + /* USER CODE END UART4_Init 1 */ + huart4.Instance = UART4; + huart4.Init.BaudRate = 115200; + huart4.Init.WordLength = UART_WORDLENGTH_8B; + huart4.Init.StopBits = UART_STOPBITS_1; + huart4.Init.Parity = UART_PARITY_NONE; + huart4.Init.Mode = UART_MODE_TX_RX; + huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart4.Init.OverSampling = UART_OVERSAMPLING_16; + huart4.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + huart4.Init.ClockPrescaler = UART_PRESCALER_DIV1; + huart4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + if (HAL_UART_Init(&huart4) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_SetTxFifoThreshold(&huart4, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_SetRxFifoThreshold(&huart4, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_DisableFifoMode(&huart4) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN UART4_Init 2 */ + + /* USER CODE END UART4_Init 2 */ + +} + +/** + * @brief USART3 Initialization Function + * @param None + * @retval None + */ +static void MX_USART3_UART_Init(void) +{ + + /* USER CODE BEGIN USART3_Init 0 */ + + /* USER CODE END USART3_Init 0 */ + + /* USER CODE BEGIN USART3_Init 1 */ + + /* USER CODE END USART3_Init 1 */ + huart3.Instance = USART3; + huart3.Init.BaudRate = 115200; + huart3.Init.WordLength = UART_WORDLENGTH_8B; + huart3.Init.StopBits = UART_STOPBITS_1; + huart3.Init.Parity = UART_PARITY_NONE; + huart3.Init.Mode = UART_MODE_TX_RX; + huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart3.Init.OverSampling = UART_OVERSAMPLING_16; + huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + huart3.Init.ClockPrescaler = UART_PRESCALER_DIV1; + huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + if (HAL_UART_Init(&huart3) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_SetTxFifoThreshold(&huart3, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_SetRxFifoThreshold(&huart3, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_DisableFifoMode(&huart3) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART3_Init 2 */ + + /* USER CODE END USART3_Init 2 */ + +} + +/** + * @brief WWDG1 Initialization Function + * @param None + * @retval None + */ +static void MX_WWDG1_Init(void) +{ + + /* USER CODE BEGIN WWDG1_Init 0 */ + + /* USER CODE END WWDG1_Init 0 */ + + /* USER CODE BEGIN WWDG1_Init 1 */ + + /* USER CODE END WWDG1_Init 1 */ + hwwdg1.Instance = WWDG1; + hwwdg1.Init.Prescaler = WWDG_PRESCALER_8; + hwwdg1.Init.Window = 64; + hwwdg1.Init.Counter = 64; + hwwdg1.Init.EWIMode = WWDG_EWI_DISABLE; + if (HAL_WWDG_Init(&hwwdg1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN WWDG1_Init 2 */ + + /* USER CODE END WWDG1_Init 2 */ + +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/stm32mp1xx_hal_msp.c b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/stm32mp1xx_hal_msp.c new file mode 100644 index 000000000..efb81996f --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/stm32mp1xx_hal_msp.c @@ -0,0 +1,987 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * File Name : stm32mp1xx_hal_msp.c + * Description : This file provides code for the MSP Initialization + * and de-Initialization codes. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +/* USER CODE BEGIN Includes */ +#include "stpmic.h" +#include "rtconfig.h" +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN Define */ + +/* USER CODE END Define */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN Macro */ + +/* USER CODE END Macro */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* External functions --------------------------------------------------------*/ +/* USER CODE BEGIN ExternalFunctions */ + +/* USER CODE END ExternalFunctions */ + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_HSEM_CLK_ENABLE(); + + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + if(IS_ENGINEERING_BOOT_MODE()) + { +#if defined(BSP_USING_ADC) || defined(BSP_USING_DAC) + /* Configure PMIC */ + BSP_PMIC_Init(); + BSP_PMIC_InitRegulators(); + + __HAL_RCC_VREF_CLK_ENABLE(); + HAL_SYSCFG_VREFBUF_HighImpedanceConfig(SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE); + HAL_SYSCFG_EnableVREFBUF(); +#endif + } + /* USER CODE END MspInit 1 */ +} + +/** +* @brief ADC MSP Initialization +* This function configures the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ +void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + if(hadc->Instance==ADC2) + { + /* USER CODE BEGIN ADC2_MspInit 0 */ + + /* USER CODE END ADC2_MspInit 0 */ + if(IS_ENGINEERING_BOOT_MODE()) + { + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; + PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_PER; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + } + + /* Peripheral clock enable */ + __HAL_RCC_ADC12_CLK_ENABLE(); + + __HAL_RCC_GPIOF_CLK_ENABLE(); + /**ADC2 GPIO Configuration + PF14 ------> ADC2_INP6 + */ + GPIO_InitStruct.Pin = GPIO_PIN_14; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + + /* USER CODE BEGIN ADC2_MspInit 1 */ + /* USER CODE END ADC2_MspInit 1 */ + } + +} + +/** +* @brief ADC MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ +void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) +{ + if(hadc->Instance==ADC2) + { + /* USER CODE BEGIN ADC2_MspDeInit 0 */ + + /* USER CODE END ADC2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_ADC12_CLK_DISABLE(); + + /**ADC2 GPIO Configuration + PF14 ------> ADC2_INP6 + */ + HAL_GPIO_DeInit(GPIOF, GPIO_PIN_14); + + /* USER CODE BEGIN ADC2_MspDeInit 1 */ + + /* USER CODE END ADC2_MspDeInit 1 */ + } + +} + +/** +* @brief DAC MSP Initialization +* This function configures the hardware resources used in this example +* @param hdac: DAC handle pointer +* @retval None +*/ +void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(hdac->Instance==DAC1) + { + /* USER CODE BEGIN DAC1_MspInit 0 */ + + /* USER CODE END DAC1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_DAC12_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**DAC1 GPIO Configuration + PA4 ------> DAC1_OUT1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_4; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN DAC1_MspInit 1 */ + + /* USER CODE END DAC1_MspInit 1 */ + } + +} + +/** +* @brief DAC MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hdac: DAC handle pointer +* @retval None +*/ +void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac) +{ + if(hdac->Instance==DAC1) + { + /* USER CODE BEGIN DAC1_MspDeInit 0 */ + + /* USER CODE END DAC1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_DAC12_CLK_DISABLE(); + + /**DAC1 GPIO Configuration + PA4 ------> DAC1_OUT1 + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4); + + /* USER CODE BEGIN DAC1_MspDeInit 1 */ + + /* USER CODE END DAC1_MspDeInit 1 */ + } + +} + +/** +* @brief IPCC MSP Initialization +* This function configures the hardware resources used in this example +* @param hipcc: IPCC handle pointer +* @retval None +*/ +void HAL_IPCC_MspInit(IPCC_HandleTypeDef* hipcc) +{ + if(hipcc->Instance==IPCC) + { + /* USER CODE BEGIN IPCC_MspInit 0 */ + + /* USER CODE END IPCC_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_IPCC_CLK_ENABLE(); + /* IPCC interrupt Init */ + HAL_NVIC_SetPriority(IPCC_RX1_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(IPCC_RX1_IRQn); + HAL_NVIC_SetPriority(IPCC_TX1_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(IPCC_TX1_IRQn); + /* USER CODE BEGIN IPCC_MspInit 1 */ + + /* USER CODE END IPCC_MspInit 1 */ + } + +} + +/** +* @brief IPCC MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hipcc: IPCC handle pointer +* @retval None +*/ +void HAL_IPCC_MspDeInit(IPCC_HandleTypeDef* hipcc) +{ + if(hipcc->Instance==IPCC) + { + /* USER CODE BEGIN IPCC_MspDeInit 0 */ + + /* USER CODE END IPCC_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_IPCC_CLK_DISABLE(); + + /* IPCC interrupt DeInit */ + HAL_NVIC_DisableIRQ(IPCC_RX1_IRQn); + HAL_NVIC_DisableIRQ(IPCC_TX1_IRQn); + /* USER CODE BEGIN IPCC_MspDeInit 1 */ + + /* USER CODE END IPCC_MspDeInit 1 */ + } + +} + +/** +* @brief LPTIM MSP Initialization +* This function configures the hardware resources used in this example +* @param hlptim: LPTIM handle pointer +* @retval None +*/ +void HAL_LPTIM_MspInit(LPTIM_HandleTypeDef* hlptim) +{ + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + if(hlptim->Instance==LPTIM1) + { + /* USER CODE BEGIN LPTIM1_MspInit 0 */ + + /* USER CODE END LPTIM1_MspInit 0 */ + if(IS_ENGINEERING_BOOT_MODE()) + { + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPTIM1; + PeriphClkInit.Lptim1ClockSelection = RCC_LPTIM1CLKSOURCE_PCLK1; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + } + + /* Peripheral clock enable */ + __HAL_RCC_LPTIM1_CLK_ENABLE(); + /* LPTIM1 interrupt Init */ + HAL_NVIC_SetPriority(LPTIM1_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(LPTIM1_IRQn); + /* USER CODE BEGIN LPTIM1_MspInit 1 */ + + /* USER CODE END LPTIM1_MspInit 1 */ + } + else if(hlptim->Instance==LPTIM2) + { + /* USER CODE BEGIN LPTIM2_MspInit 0 */ + + /* USER CODE END LPTIM2_MspInit 0 */ + + if(IS_ENGINEERING_BOOT_MODE()) + { + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPTIM23; + PeriphClkInit.Lptim23ClockSelection = RCC_LPTIM23CLKSOURCE_PCLK3; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + } + + /* Peripheral clock enable */ + __HAL_RCC_LPTIM2_CLK_ENABLE(); + /* LPTIM2 interrupt Init */ + HAL_NVIC_SetPriority(LPTIM2_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(LPTIM2_IRQn); + /* USER CODE BEGIN LPTIM2_MspInit 1 */ + + /* USER CODE END LPTIM2_MspInit 1 */ + } + else if(hlptim->Instance==LPTIM3) + { + /* USER CODE BEGIN LPTIM3_MspInit 0 */ + + /* USER CODE END LPTIM3_MspInit 0 */ + + if(IS_ENGINEERING_BOOT_MODE()) + { + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPTIM23; + PeriphClkInit.Lptim23ClockSelection = RCC_LPTIM23CLKSOURCE_PCLK3; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + } + + /* Peripheral clock enable */ + __HAL_RCC_LPTIM3_CLK_ENABLE(); + /* LPTIM3 interrupt Init */ + HAL_NVIC_SetPriority(LPTIM3_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(LPTIM3_IRQn); + /* USER CODE BEGIN LPTIM3_MspInit 1 */ + + /* USER CODE END LPTIM3_MspInit 1 */ + } + else if(hlptim->Instance==LPTIM4) + { + /* USER CODE BEGIN LPTIM4_MspInit 0 */ + + /* USER CODE END LPTIM4_MspInit 0 */ + + if(IS_ENGINEERING_BOOT_MODE()) + { + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPTIM45; + PeriphClkInit.Lptim45ClockSelection = RCC_LPTIM45CLKSOURCE_PCLK3; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + } + + /* Peripheral clock enable */ + __HAL_RCC_LPTIM4_CLK_ENABLE(); + /* LPTIM4 interrupt Init */ + HAL_NVIC_SetPriority(LPTIM4_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(LPTIM4_IRQn); + /* USER CODE BEGIN LPTIM4_MspInit 1 */ + + /* USER CODE END LPTIM4_MspInit 1 */ + } + else if(hlptim->Instance==LPTIM5) + { + /* USER CODE BEGIN LPTIM5_MspInit 0 */ + + /* USER CODE END LPTIM5_MspInit 0 */ + + if(IS_ENGINEERING_BOOT_MODE()) + { + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPTIM45; + PeriphClkInit.Lptim45ClockSelection = RCC_LPTIM45CLKSOURCE_PCLK3; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + } + + /* Peripheral clock enable */ + __HAL_RCC_LPTIM5_CLK_ENABLE(); + /* LPTIM5 interrupt Init */ + HAL_NVIC_SetPriority(LPTIM5_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(LPTIM5_IRQn); + /* USER CODE BEGIN LPTIM5_MspInit 1 */ + + /* USER CODE END LPTIM5_MspInit 1 */ + } + +} + +/** +* @brief LPTIM MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hlptim: LPTIM handle pointer +* @retval None +*/ +void HAL_LPTIM_MspDeInit(LPTIM_HandleTypeDef* hlptim) +{ + if(hlptim->Instance==LPTIM1) + { + /* USER CODE BEGIN LPTIM1_MspDeInit 0 */ + + /* USER CODE END LPTIM1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_LPTIM1_CLK_DISABLE(); + + /* LPTIM1 interrupt DeInit */ + HAL_NVIC_DisableIRQ(LPTIM1_IRQn); + /* USER CODE BEGIN LPTIM1_MspDeInit 1 */ + + /* USER CODE END LPTIM1_MspDeInit 1 */ + } + else if(hlptim->Instance==LPTIM2) + { + /* USER CODE BEGIN LPTIM2_MspDeInit 0 */ + + /* USER CODE END LPTIM2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_LPTIM2_CLK_DISABLE(); + + /* LPTIM2 interrupt DeInit */ + HAL_NVIC_DisableIRQ(LPTIM2_IRQn); + /* USER CODE BEGIN LPTIM2_MspDeInit 1 */ + + /* USER CODE END LPTIM2_MspDeInit 1 */ + } + else if(hlptim->Instance==LPTIM3) + { + /* USER CODE BEGIN LPTIM3_MspDeInit 0 */ + + /* USER CODE END LPTIM3_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_LPTIM3_CLK_DISABLE(); + + /* LPTIM3 interrupt DeInit */ + HAL_NVIC_DisableIRQ(LPTIM3_IRQn); + /* USER CODE BEGIN LPTIM3_MspDeInit 1 */ + + /* USER CODE END LPTIM3_MspDeInit 1 */ + } + else if(hlptim->Instance==LPTIM4) + { + /* USER CODE BEGIN LPTIM4_MspDeInit 0 */ + + /* USER CODE END LPTIM4_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_LPTIM4_CLK_DISABLE(); + + /* LPTIM4 interrupt DeInit */ + HAL_NVIC_DisableIRQ(LPTIM4_IRQn); + /* USER CODE BEGIN LPTIM4_MspDeInit 1 */ + + /* USER CODE END LPTIM4_MspDeInit 1 */ + } + else if(hlptim->Instance==LPTIM5) + { + /* USER CODE BEGIN LPTIM5_MspDeInit 0 */ + + /* USER CODE END LPTIM5_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_LPTIM5_CLK_DISABLE(); + + /* LPTIM5 interrupt DeInit */ + HAL_NVIC_DisableIRQ(LPTIM5_IRQn); + /* USER CODE BEGIN LPTIM5_MspDeInit 1 */ + + /* USER CODE END LPTIM5_MspDeInit 1 */ + } + +} + +/** +* @brief SPI MSP Initialization +* This function configures the hardware resources used in this example +* @param hspi: SPI handle pointer +* @retval None +*/ +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + if(hspi->Instance==SPI5) + { + /* USER CODE BEGIN SPI5_MspInit 0 */ + + /* USER CODE END SPI5_MspInit 0 */ + if(IS_ENGINEERING_BOOT_MODE()) + { + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_SPI45; + PeriphClkInit.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PCLK2; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + } + + /* Peripheral clock enable */ + __HAL_RCC_SPI5_CLK_ENABLE(); + + __HAL_RCC_GPIOF_CLK_ENABLE(); + /**SPI5 GPIO Configuration + PF9 ------> SPI5_MOSI + PF7 ------> SPI5_SCK + */ + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_7; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; + GPIO_InitStruct.Alternate = GPIO_AF5_SPI5; + HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + + /* USER CODE BEGIN SPI5_MspInit 1 */ + + /* USER CODE END SPI5_MspInit 1 */ + } + +} + +/** +* @brief SPI MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hspi: SPI handle pointer +* @retval None +*/ +void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) +{ + if(hspi->Instance==SPI5) + { + /* USER CODE BEGIN SPI5_MspDeInit 0 */ + + /* USER CODE END SPI5_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_SPI5_CLK_DISABLE(); + + /**SPI5 GPIO Configuration + PF9 ------> SPI5_MOSI + PF7 ------> SPI5_SCK + */ + HAL_GPIO_DeInit(GPIOF, GPIO_PIN_9|GPIO_PIN_7); + + /* USER CODE BEGIN SPI5_MspDeInit 1 */ + + /* USER CODE END SPI5_MspDeInit 1 */ + } + +} + +/** +* @brief TIM_Base MSP Initialization +* This function configures the hardware resources used in this example +* @param htim_base: TIM_Base handle pointer +* @retval None +*/ +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + if(htim_base->Instance==TIM4) + { + /* USER CODE BEGIN TIM4_MspInit 0 */ + + /* USER CODE END TIM4_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM4_CLK_ENABLE(); + /* USER CODE BEGIN TIM4_MspInit 1 */ + + /* USER CODE END TIM4_MspInit 1 */ + } + else if(htim_base->Instance==TIM14) + { + /* USER CODE BEGIN TIM14_MspInit 0 */ + + /* USER CODE END TIM14_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM14_CLK_ENABLE(); + /* USER CODE BEGIN TIM14_MspInit 1 */ + + /* USER CODE END TIM14_MspInit 1 */ + } + else if(htim_base->Instance==TIM16) + { + /* USER CODE BEGIN TIM16_MspInit 0 */ + + /* USER CODE END TIM16_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM16_CLK_ENABLE(); + /* USER CODE BEGIN TIM16_MspInit 1 */ + + /* USER CODE END TIM16_MspInit 1 */ + } + else if(htim_base->Instance==TIM17) + { + /* USER CODE BEGIN TIM17_MspInit 0 */ + + /* USER CODE END TIM17_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM17_CLK_ENABLE(); + /* USER CODE BEGIN TIM17_MspInit 1 */ + + /* USER CODE END TIM17_MspInit 1 */ + } + +} + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(htim->Instance==TIM4) + { + /* USER CODE BEGIN TIM4_MspPostInit 0 */ + + /* USER CODE END TIM4_MspPostInit 0 */ + + __HAL_RCC_GPIOD_CLK_ENABLE(); + /**TIM4 GPIO Configuration + PD13 ------> TIM4_CH2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_13; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM4_MspPostInit 1 */ + + /* USER CODE END TIM4_MspPostInit 1 */ + } + +} +/** +* @brief TIM_Base MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param htim_base: TIM_Base handle pointer +* @retval None +*/ +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) +{ + if(htim_base->Instance==TIM4) + { + /* USER CODE BEGIN TIM4_MspDeInit 0 */ + + /* USER CODE END TIM4_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM4_CLK_DISABLE(); + /* USER CODE BEGIN TIM4_MspDeInit 1 */ + + /* USER CODE END TIM4_MspDeInit 1 */ + } + else if(htim_base->Instance==TIM14) + { + /* USER CODE BEGIN TIM14_MspDeInit 0 */ + + /* USER CODE END TIM14_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM14_CLK_DISABLE(); + /* USER CODE BEGIN TIM14_MspDeInit 1 */ + + /* USER CODE END TIM14_MspDeInit 1 */ + } + else if(htim_base->Instance==TIM16) + { + /* USER CODE BEGIN TIM16_MspDeInit 0 */ + + /* USER CODE END TIM16_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM16_CLK_DISABLE(); + /* USER CODE BEGIN TIM16_MspDeInit 1 */ + + /* USER CODE END TIM16_MspDeInit 1 */ + } + else if(htim_base->Instance==TIM17) + { + /* USER CODE BEGIN TIM17_MspDeInit 0 */ + + /* USER CODE END TIM17_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM17_CLK_DISABLE(); + /* USER CODE BEGIN TIM17_MspDeInit 1 */ + + /* USER CODE END TIM17_MspDeInit 1 */ + } + +} + +/** +* @brief UART MSP Initialization +* This function configures the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspInit(UART_HandleTypeDef* huart) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + if(huart->Instance==UART4) + { + /* USER CODE BEGIN UART4_MspInit 0 */ + + /* USER CODE END UART4_MspInit 0 */ + if(IS_ENGINEERING_BOOT_MODE()) + { + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_UART24; + PeriphClkInit.Uart24ClockSelection = RCC_UART24CLKSOURCE_HSI; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + } + + /* Peripheral clock enable */ + __HAL_RCC_UART4_CLK_ENABLE(); + + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**UART4 GPIO Configuration + PG11 ------> UART4_TX + PB2 ------> UART4_RX + */ + GPIO_InitStruct.Pin = STLINK_RX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF6_UART4; + HAL_GPIO_Init(STLINK_RX_GPIO_Port, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = STLINK_TX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Alternate = GPIO_AF8_UART4; + HAL_GPIO_Init(STLINK_TX_GPIO_Port, &GPIO_InitStruct); + + /* USER CODE BEGIN UART4_MspInit 1 */ + + /* USER CODE END UART4_MspInit 1 */ + } + else if(huart->Instance==USART3) + { + /* USER CODE BEGIN USART3_MspInit 0 */ + + /* USER CODE END USART3_MspInit 0 */ + + if(IS_ENGINEERING_BOOT_MODE()) + { + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_UART35; + PeriphClkInit.Uart35ClockSelection = RCC_UART35CLKSOURCE_PCLK1; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + } + + /* Peripheral clock enable */ + __HAL_RCC_USART3_CLK_ENABLE(); + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**USART3 GPIO Configuration + PB10 ------> USART3_TX + PB12 ------> USART3_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF7_USART3; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_12; + GPIO_InitStruct.Mode = GPIO_MODE_AF; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Alternate = GPIO_AF8_USART3; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN USART3_MspInit 1 */ + + /* USER CODE END USART3_MspInit 1 */ + } + +} + +/** +* @brief UART MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) +{ + if(huart->Instance==UART4) + { + /* USER CODE BEGIN UART4_MspDeInit 0 */ + + /* USER CODE END UART4_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_UART4_CLK_DISABLE(); + + /**UART4 GPIO Configuration + PG11 ------> UART4_TX + PB2 ------> UART4_RX + */ + HAL_GPIO_DeInit(STLINK_RX_GPIO_Port, STLINK_RX_Pin); + + HAL_GPIO_DeInit(STLINK_TX_GPIO_Port, STLINK_TX_Pin); + + /* USER CODE BEGIN UART4_MspDeInit 1 */ + + /* USER CODE END UART4_MspDeInit 1 */ + } + else if(huart->Instance==USART3) + { + /* USER CODE BEGIN USART3_MspDeInit 0 */ + + /* USER CODE END USART3_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART3_CLK_DISABLE(); + + /**USART3 GPIO Configuration + PB10 ------> USART3_TX + PB12 ------> USART3_RX + */ + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10|GPIO_PIN_12); + + /* USER CODE BEGIN USART3_MspDeInit 1 */ + + /* USER CODE END USART3_MspDeInit 1 */ + } + +} + +/** +* @brief WWDG MSP Initialization +* This function configures the hardware resources used in this example +* @param hwwdg: WWDG handle pointer +* @retval None +*/ +void HAL_WWDG_MspInit(WWDG_HandleTypeDef* hwwdg) +{ + if(hwwdg->Instance==WWDG1) + { + /* USER CODE BEGIN WWDG1_MspInit 0 */ + + /* USER CODE END WWDG1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_WWDG1_CLK_ENABLE(); + /* WWDG1 interrupt Init */ + HAL_NVIC_SetPriority(WWDG1_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(WWDG1_IRQn); + /* USER CODE BEGIN WWDG1_MspInit 1 */ + + /* USER CODE END WWDG1_MspInit 1 */ + } + +} + +/* USER CODE BEGIN 1 */ +/** + * @brief Initializes I2C MSP. + * @param hI2c : I2C handler + * @retval None + */ +void HAL_I2C_MspInit(I2C_HandleTypeDef *hI2c) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + if(hI2c->Instance == I2C4) + { + if(IS_ENGINEERING_BOOT_MODE()) + { + /*** Configure the I2C peripheral clock ***/ + PeriphClkInit.I2c46ClockSelection = RCC_I2C46CLKSOURCE_HSI; + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_I2C46; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + } + + /* Enable GPIO clock */ + __HAL_RCC_GPIOZ_CLK_ENABLE(); + + /* Configure I2C Tx/RX as alternate function */ + GPIO_InitStruct.Pin = GPIO_PIN_4 | GPIO_PIN_5; + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF6_I2C4; + HAL_GPIO_Init(GPIOZ, &GPIO_InitStruct); + + /* Enable I2C clock */ + __HAL_RCC_I2C4_CLK_ENABLE(); + /* Force the I2C peripheral clock reset */ + __HAL_RCC_I2C4_FORCE_RESET(); + /* Release the I2C peripheral clock reset */ + __HAL_RCC_I2C4_RELEASE_RESET(); + + HAL_NVIC_SetPriority(I2C4_ER_IRQn, 0, 1); + HAL_NVIC_EnableIRQ(I2C4_ER_IRQn); + HAL_NVIC_SetPriority(I2C4_EV_IRQn, 0, 2); + HAL_NVIC_EnableIRQ(I2C4_EV_IRQn); + } +} + +/** + * @brief DeInitializes I2C MSP. + * @param hI2c : I2C handler + * @retval None + */ +void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hI2c) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + + if(hI2c->Instance == I2C4) + { + /* Configure I2C Tx, Rx as alternate function */ + GPIO_InitStruct.Pin = GPIO_PIN_4 | GPIO_PIN_5; + HAL_GPIO_DeInit(GPIOZ, GPIO_InitStruct.Pin); + + /* Disable I2C clock */ + __HAL_RCC_I2C4_CLK_DISABLE(); + + /* Disable NVIC for I2C */ + HAL_NVIC_DisableIRQ(I2C4_ER_IRQn); + HAL_NVIC_DisableIRQ(I2C4_EV_IRQn); + } +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + + /* USER CODE END Error_Handler_Debug */ +} +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/stm32mp1xx_it.c b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/stm32mp1xx_it.c new file mode 100644 index 000000000..18c094f48 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/CM4/Src/stm32mp1xx_it.c @@ -0,0 +1,321 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32mp1xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32mp1xx_it.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* External variables --------------------------------------------------------*/ +extern IPCC_HandleTypeDef hipcc; +extern LPTIM_HandleTypeDef hlptim1; +extern LPTIM_HandleTypeDef hlptim2; +extern LPTIM_HandleTypeDef hlptim3; +extern LPTIM_HandleTypeDef hlptim4; +extern LPTIM_HandleTypeDef hlptim5; +extern WWDG_HandleTypeDef hwwdg1; +/* USER CODE BEGIN EV */ + +/* USER CODE END EV */ + +/******************************************************************************/ +/* Cortex-M4 Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + /* USER CODE END W1_HardFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ + /* USER CODE END W1_MemoryManagement_IRQn 0 */ + } +} + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_BusFault_IRQn 0 */ + /* USER CODE END W1_BusFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ + /* USER CODE END W1_UsageFault_IRQn 0 */ + } +} + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + /* USER CODE BEGIN SVCall_IRQn 0 */ + + /* USER CODE END SVCall_IRQn 0 */ + /* USER CODE BEGIN SVCall_IRQn 1 */ + + /* USER CODE END SVCall_IRQn 1 */ +} + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + /* USER CODE BEGIN DebugMonitor_IRQn 0 */ + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + /* USER CODE BEGIN PendSV_IRQn 0 */ + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + +/******************************************************************************/ +/* STM32MP1xx Peripheral Interrupt Handlers */ +/* Add here the Interrupt Handlers for the used peripherals. */ +/* For the available peripheral interrupt handler names, */ +/* please refer to the startup file (startup_stm32mp1xx.s). */ +/******************************************************************************/ + +/** + * @brief This function handles Window watchdog interrupt. + */ +void WWDG1_IRQHandler(void) +{ + /* USER CODE BEGIN WWDG1_IRQn 0 */ + + /* USER CODE END WWDG1_IRQn 0 */ + HAL_WWDG_IRQHandler(&hwwdg1); + /* USER CODE BEGIN WWDG1_IRQn 1 */ + + /* USER CODE END WWDG1_IRQn 1 */ +} + +/** + * @brief This function handles LPTIM1 global interrupt. + */ +void LPTIM1_IRQHandler(void) +{ + /* USER CODE BEGIN LPTIM1_IRQn 0 */ + + /* USER CODE END LPTIM1_IRQn 0 */ + HAL_LPTIM_IRQHandler(&hlptim1); + /* USER CODE BEGIN LPTIM1_IRQn 1 */ + + /* USER CODE END LPTIM1_IRQn 1 */ +} + +/** + * @brief This function handles IPCC RX1 occupied interrupt. + */ +void IPCC_RX1_IRQHandler(void) +{ + /* USER CODE BEGIN IPCC_RX1_IRQn 0 */ + + /* USER CODE END IPCC_RX1_IRQn 0 */ + HAL_IPCC_RX_IRQHandler(&hipcc); + /* USER CODE BEGIN IPCC_RX1_IRQn 1 */ + + /* USER CODE END IPCC_RX1_IRQn 1 */ +} + +/** + * @brief This function handles IPCC TX1 free interrupt. + */ +void IPCC_TX1_IRQHandler(void) +{ + /* USER CODE BEGIN IPCC_TX1_IRQn 0 */ + + /* USER CODE END IPCC_TX1_IRQn 0 */ + HAL_IPCC_TX_IRQHandler(&hipcc); + /* USER CODE BEGIN IPCC_TX1_IRQn 1 */ + + /* USER CODE END IPCC_TX1_IRQn 1 */ +} + +/** + * @brief This function handles LPTIM2 global interrupt. + */ +void LPTIM2_IRQHandler(void) +{ + /* USER CODE BEGIN LPTIM2_IRQn 0 */ + + /* USER CODE END LPTIM2_IRQn 0 */ + HAL_LPTIM_IRQHandler(&hlptim2); + /* USER CODE BEGIN LPTIM2_IRQn 1 */ + + /* USER CODE END LPTIM2_IRQn 1 */ +} + +/** + * @brief This function handles LPTIM3 global interrupt. + */ +void LPTIM3_IRQHandler(void) +{ + /* USER CODE BEGIN LPTIM3_IRQn 0 */ + + /* USER CODE END LPTIM3_IRQn 0 */ + HAL_LPTIM_IRQHandler(&hlptim3); + /* USER CODE BEGIN LPTIM3_IRQn 1 */ + + /* USER CODE END LPTIM3_IRQn 1 */ +} + +/** + * @brief This function handles LPTIM4 global interrupt. + */ +void LPTIM4_IRQHandler(void) +{ + /* USER CODE BEGIN LPTIM4_IRQn 0 */ + + /* USER CODE END LPTIM4_IRQn 0 */ + HAL_LPTIM_IRQHandler(&hlptim4); + /* USER CODE BEGIN LPTIM4_IRQn 1 */ + + /* USER CODE END LPTIM4_IRQn 1 */ +} + +/** + * @brief This function handles LPTIM5 global interrupt. + */ +void LPTIM5_IRQHandler(void) +{ + /* USER CODE BEGIN LPTIM5_IRQn 0 */ + + /* USER CODE END LPTIM5_IRQn 0 */ + HAL_LPTIM_IRQHandler(&hlptim5); + /* USER CODE BEGIN LPTIM5_IRQn 1 */ + + /* USER CODE END LPTIM5_IRQn 1 */ +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/Common/System/system_stm32mp1xx.c b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/Common/System/system_stm32mp1xx.c new file mode 100644 index 000000000..6e606791b --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/Common/System/system_stm32mp1xx.c @@ -0,0 +1,290 @@ +/** + ****************************************************************************** + * @file system_stm32mp1xx.c + * @author MCD Application Team + * @brief CMSIS Cortex Device Peripheral Access Layer System Source File. + * + * This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32mp1xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock frequency, it can + * be used by the user application to setup + * the SysTick timer or configure other + * parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * + ****************************************************************************** + * + * @attention + * + *

© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32mp1xx_system + * @{ + */ + +/** @addtogroup STM32MP1xx_System_Private_Includes + * @{ + */ + +#include "stm32mp1xx_hal.h" + +/** + * @} + */ + +/** @addtogroup STM32MP1xx_System_Private_TypesDefinitions + * @{ + */ + + +/** + * @} + */ + +/** @addtogroup STM32MP1xx_System_Private_Defines + * @{ + */ + + +/************************* Miscellaneous Configuration ************************/ +/*!< Uncomment the following line if you need to use external SRAM mounted + on EVAL board as data memory */ +/* #define DATA_IN_ExtSRAM */ + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. + This value must be a multiple of 0x400. */ +/******************************************************************************/ + +/** + * @} + */ + +/** @addtogroup STM32MP1xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32MP1xx_System_Private_Variables + * @{ + */ + /* This variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) each time HAL_RCC_ClockConfig() is called to configure the system clock + frequency + Note: If you use this function to configure the system clock; + then there is no need to call the first functions listed above, + since SystemCoreClock variable is updated automatically. + */ + uint32_t SystemCoreClock = HSI_VALUE; +/** + * @} + */ + +/** @addtogroup STM32MP1xx_System_Private_FunctionPrototypes + * @{ + */ + +#if defined (DATA_IN_ExtSRAM) + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM */ + +/** + * @} + */ + +/** @addtogroup STM32MP1xx_System_Private_Functions + * @{ + */ + + /** + * @brief Setup the microcontroller system + * Initialize the FPU setting, vector table location and External memory + * configuration. + * @param None + * @retval None + */ +void SystemInit (void) +{ + /* FPU settings ------------------------------------------------------------*/ +#if defined (CORE_CM4) + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ + #endif + + /* Configure the Vector Table location add offset address ------------------*/ +#if defined (VECT_TAB_SRAM) + SCB->VTOR = MCU_AHB_SRAM | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ +#endif + /* Disable all interrupts and events */ + CLEAR_REG(EXTI_C2->IMR1); + CLEAR_REG(EXTI_C2->IMR2); + CLEAR_REG(EXTI_C2->IMR3); + CLEAR_REG(EXTI_C2->EMR1); + CLEAR_REG(EXTI_C2->EMR2); + CLEAR_REG(EXTI_C2->EMR3); +#else +#error Please #define CORE_CM4 +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock frequency (Hz), + * it can be used by the user application to setup the SysTick timer or + * configure other parameters. + * + * @note Each time the core clock changes, this function must be called to + * update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the + * HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the + * HSE_VALUE(**) + * + * - If SYSCLK source is CSI, SystemCoreClock will contain the + * CSI_VALUE(***) + * + * - If SYSCLK source is PLL3_P, SystemCoreClock will contain the + * HSI_VALUE(*) or the HSE_VALUE(*) or the CSI_VALUE(***) + * multiplied/divided by the PLL3 factors. + * + * (*) HSI_VALUE is a constant defined in stm32mp1xx_hal_conf.h file + * (default value 64 MHz) but the real value may vary depending + * on the variations in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32mp1xx_hal_conf.h file + * (default value 24 MHz), user has to ensure that HSE_VALUE is + * same as the real frequency of the crystal used. Otherwise, this + * function may have wrong result. + * + * (***) CSI_VALUE is a constant defined in stm32mp1xx_hal_conf.h file + * (default value 4 MHz)but the real value may vary depending + * on the variations in voltage and temperature. + * + * - The result of this function could be not correct when using + * fractional value for HSE crystal. + * + * @param None + * @retval None + */ +void SystemCoreClockUpdate (void) +{ + uint32_t pllsource, pll3m, pll3fracen; + float fracn1, pll3vco; + + switch (RCC->MSSCKSELR & RCC_MSSCKSELR_MCUSSRC) + { + case 0x00: /* HSI used as system clock source */ + SystemCoreClock = (HSI_VALUE >> (RCC->HSICFGR & RCC_HSICFGR_HSIDIV)); + break; + + case 0x01: /* HSE used as system clock source */ + SystemCoreClock = HSE_VALUE; + break; + + case 0x02: /* CSI used as system clock source */ + SystemCoreClock = CSI_VALUE; + break; + + case 0x03: /* PLL3_P used as system clock source */ + pllsource = (RCC->RCK3SELR & RCC_RCK3SELR_PLL3SRC); + pll3m = ((RCC->PLL3CFGR1 & RCC_PLL3CFGR1_DIVM3) >> RCC_PLL3CFGR1_DIVM3_Pos) + 1U; + pll3fracen = (RCC->PLL3FRACR & RCC_PLL3FRACR_FRACLE) >> 16U; + fracn1 = (float)(pll3fracen * ((RCC->PLL3FRACR & RCC_PLL3FRACR_FRACV) >> 3U)); + pll3vco = (float)((float)((RCC->PLL3CFGR1 & RCC_PLL3CFGR1_DIVN) + 1U) + (fracn1 / (float) 0x1FFF)); + + if (pll3m != 0U) + { + switch (pllsource) + { + case 0x00: /* HSI used as PLL clock source */ + pll3vco *= (float)((HSI_VALUE >> (RCC->HSICFGR & RCC_HSICFGR_HSIDIV)) / pll3m); + break; + + case 0x01: /* HSE used as PLL clock source */ + pll3vco *= (float)(HSE_VALUE / pll3m); + break; + + case 0x02: /* CSI used as PLL clock source */ + pll3vco *= (float)(CSI_VALUE / pll3m); + break; + + case 0x03: /* No clock source for PLL */ + pll3vco = 0; + break; + } + SystemCoreClock = (uint32_t)(pll3vco/ ((float)((RCC->PLL3CFGR2 & RCC_PLL3CFGR2_DIVP) + 1U))); + } + else + { + SystemCoreClock = 0U; + } + break; + } + + /* Compute mcu_ck */ + SystemCoreClock = SystemCoreClock >> (RCC->MCUDIVR & RCC_MCUDIVR_MCUDIV); +} + + +#ifdef DATA_IN_ExtSRAM +/** + * @brief Setup the external memory controller. + * Called in startup_stm32mp15xx.s before jump to main. + * This function configures the external SRAM mounted on Eval boards + * This SRAM will be used as program data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ + +} +#endif /* DATA_IN_ExtSRAM */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/STM32MP157-DK1.ioc b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/STM32MP157-DK1.ioc new file mode 100644 index 000000000..2a094a9c1 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/CubeMX_Config/STM32MP157-DK1.ioc @@ -0,0 +1,857 @@ +#MicroXplorer Configuration settings - do not modify +ADC2.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_6 +ADC2.ClockPrescaler=ADC_CLOCK_ASYNC_DIV2 +ADC2.IPParameters=Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,NbrOfConversionFlag,Resolution,ClockPrescaler +ADC2.NbrOfConversionFlag=1 +ADC2.OffsetNumber-2\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC2.Rank-2\#ChannelRegularConversion=1 +ADC2.Resolution=ADC_RESOLUTION_16B +ADC2.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 +BootLoader.IPs=RCC,DDR +BootROM.IPs=RCC +CortexA7NS.IPs=DDR\:I,RCC\:I,RTC\:I,BSEC,ETZPC,GIC,TAMP\:I,DMA\:I,PWR,SPI2\:I,I2S2\:I,IPCC\:I,TIM3\:I,VREFBUF\:I,SAI4\:I,HSEM\:I,RNG1,DMA1\:I,MDMA_A7NS\:I +CortexA7S.IPs=BSEC\:I,ETZPC\:I,GIC\:I,RCC,PWR\:I,RNG1\:I,RTC,DDR,HSEM,TAMP,MDMA_A7S\:I +CortexM4.IPs=IPCC,HSEM,RCC,NVIC\:I,ETZPC,FREERTOS\:I,DMA,PWR,SYS\:I,TIM4\:I,TIM14\:I,TIM16\:I,TIM17\:I,SPI5\:I,UART4\:I,UART5\:I,USART2\:I,ADC1\:I,ADC2\:I,USART3\:I,DAC1\:I,WWDG1\:I,LPTIM1\:I,LPTIM2\:I,LPTIM3\:I,LPTIM4\:I,LPTIM5\:I,DMA2\:I +DDR.ADDRMAP1=0x00070707 +DDR.ADDRMAP3=0x1F000000 +DDR.ADDRMAP5=0x06060606 +DDR.ADDRMAP6=0x0F060606 +DDR.DDR_Frequency=533.0 +DDR.DFITMG0=0x02060105 +DDR.IPParameters=DDR_Frequency,RL,addrmap_col_b9,addrmap_col_b10,addrmap_col_b11,addrmap_bank_b0,addrmap_bank_b1,addrmap_bank_b2,addrmap_row_b0,addrmap_row_b1,addrmap_row_b2_10,addrmap_row_b11,addrmap_row_b12,addrmap_row_b13,addrmap_row_b14,addrmap_row_b15,MSTR,DFITMG0,SCHED,ADDRMAP1,ADDRMAP3,ADDRMAP5,ADDRMAP6 +DDR.MSTR=0x00041401 +DDR.RL=8 +DDR.SCHED=0x00000C01 +DDR.addrmap_bank_b0=7 +DDR.addrmap_bank_b1=7 +DDR.addrmap_bank_b2=7 +DDR.addrmap_col_b10=31 +DDR.addrmap_col_b11=31 +DDR.addrmap_col_b9=31 +DDR.addrmap_row_b0=6 +DDR.addrmap_row_b1=6 +DDR.addrmap_row_b11=6 +DDR.addrmap_row_b12=6 +DDR.addrmap_row_b13=6 +DDR.addrmap_row_b14=6 +DDR.addrmap_row_b15=15 +DDR.addrmap_row_b2_10=6 +DDR_A0.GPIOParameters=GPIO_Label +DDR_A0.GPIO_Label=DDR_A0 [MT41K256M16TW_A0] +DDR_A0.Locked=true +DDR_A0.Mode=DDR3 +DDR_A0.Signal=DDR_A0 +DDR_A1.GPIOParameters=GPIO_Label +DDR_A1.GPIO_Label=DDR_A1 [MT41K256M16TW_A1] +DDR_A1.Locked=true +DDR_A1.Mode=DDR3 +DDR_A1.Signal=DDR_A1 +DDR_A10.GPIOParameters=GPIO_Label +DDR_A10.GPIO_Label=DDR_A10 [MT41K256M16TW_A10] +DDR_A10.Locked=true +DDR_A10.Mode=DDR3 +DDR_A10.Signal=DDR_A10 +DDR_A11.GPIOParameters=GPIO_Label +DDR_A11.GPIO_Label=DDR_A11 [MT41K256M16TW_A11] +DDR_A11.Locked=true +DDR_A11.Mode=DDR3 +DDR_A11.Signal=DDR_A11 +DDR_A12.GPIOParameters=GPIO_Label +DDR_A12.GPIO_Label=DDR_A12 [MT41K256M16TW_A12] +DDR_A12.Locked=true +DDR_A12.Mode=4Gb_16bits +DDR_A12.Signal=DDR_A12 +DDR_A13.GPIOParameters=GPIO_Label +DDR_A13.GPIO_Label=DDR_A13 [MT41K256M16TW_A13] +DDR_A13.Locked=true +DDR_A13.Mode=4Gb_16bits +DDR_A13.Signal=DDR_A13 +DDR_A14.GPIOParameters=GPIO_Label +DDR_A14.GPIO_Label=DDR_A14 [MT41K256M16TW_A14] +DDR_A14.Locked=true +DDR_A14.Mode=4Gb_16bits +DDR_A14.Signal=DDR_A14 +DDR_A2.GPIOParameters=GPIO_Label +DDR_A2.GPIO_Label=DDR_A2 [MT41K256M16TW_A2] +DDR_A2.Locked=true +DDR_A2.Mode=DDR3 +DDR_A2.Signal=DDR_A2 +DDR_A3.GPIOParameters=GPIO_Label +DDR_A3.GPIO_Label=DDR_A3 [MT41K256M16TW_A3] +DDR_A3.Locked=true +DDR_A3.Mode=DDR3 +DDR_A3.Signal=DDR_A3 +DDR_A4.GPIOParameters=GPIO_Label +DDR_A4.GPIO_Label=DDR_A4 [MT41K256M16TW_A4] +DDR_A4.Locked=true +DDR_A4.Mode=DDR3 +DDR_A4.Signal=DDR_A4 +DDR_A5.GPIOParameters=GPIO_Label +DDR_A5.GPIO_Label=DDR_A5 [MT41K256M16TW_A5] +DDR_A5.Locked=true +DDR_A5.Mode=DDR3 +DDR_A5.Signal=DDR_A5 +DDR_A6.GPIOParameters=GPIO_Label +DDR_A6.GPIO_Label=DDR_A6 [MT41K256M16TW_A6] +DDR_A6.Locked=true +DDR_A6.Mode=DDR3 +DDR_A6.Signal=DDR_A6 +DDR_A7.GPIOParameters=GPIO_Label +DDR_A7.GPIO_Label=DDR_A7 [MT41K256M16TW_A7] +DDR_A7.Locked=true +DDR_A7.Mode=DDR3 +DDR_A7.Signal=DDR_A7 +DDR_A8.GPIOParameters=GPIO_Label +DDR_A8.GPIO_Label=DDR_A8 [MT41K256M16TW_A8] +DDR_A8.Locked=true +DDR_A8.Mode=DDR3 +DDR_A8.Signal=DDR_A8 +DDR_A9.GPIOParameters=GPIO_Label +DDR_A9.GPIO_Label=DDR_A9 [MT41K256M16TW_A9] +DDR_A9.Locked=true +DDR_A9.Mode=DDR3 +DDR_A9.Signal=DDR_A9 +DDR_ATO.GPIOParameters=GPIO_Label +DDR_ATO.GPIO_Label=DDR_ATO +DDR_ATO.Locked=true +DDR_ATO.Mode=DDR3 +DDR_ATO.Signal=DDR_ATO +DDR_BA0.GPIOParameters=GPIO_Label +DDR_BA0.GPIO_Label=DDR_BA0 [MT41K256M16TW_BA0] +DDR_BA0.Locked=true +DDR_BA0.Mode=DDR3 +DDR_BA0.Signal=DDR_BA0 +DDR_BA1.GPIOParameters=GPIO_Label +DDR_BA1.GPIO_Label=DDR_BA1 [MT41K256M16TW_BA1] +DDR_BA1.Locked=true +DDR_BA1.Mode=DDR3 +DDR_BA1.Signal=DDR_BA1 +DDR_BA2.GPIOParameters=GPIO_Label +DDR_BA2.GPIO_Label=DDR_BA2 [MT41K256M16TW_BA2] +DDR_BA2.Locked=true +DDR_BA2.Mode=DDR3 +DDR_BA2.Signal=DDR_BA2 +DDR_CASN.GPIOParameters=GPIO_Label +DDR_CASN.GPIO_Label=DDR_CASN [MT41K256M16TW_CAS\#] +DDR_CASN.Locked=true +DDR_CASN.Mode=DDR3 +DDR_CASN.Signal=DDR_CASN +DDR_CKE.GPIOParameters=GPIO_Label +DDR_CKE.GPIO_Label=DDR_CKE [MT41K256M16TW_CKE] +DDR_CKE.Locked=true +DDR_CKE.Mode=DDR3 +DDR_CKE.Signal=DDR_CKE +DDR_CLKN.GPIOParameters=GPIO_Label +DDR_CLKN.GPIO_Label=DDR_CLK_N [MT41K256M16TW_CK\#] +DDR_CLKN.Locked=true +DDR_CLKN.Mode=DDR3 +DDR_CLKN.Signal=DDR_CLKN +DDR_CLKP.GPIOParameters=GPIO_Label +DDR_CLKP.GPIO_Label=DDR_CLK_P [MT41K256M16TW_CK] +DDR_CLKP.Locked=true +DDR_CLKP.Mode=DDR3 +DDR_CLKP.Signal=DDR_CLKP +DDR_CSN.GPIOParameters=GPIO_Label +DDR_CSN.GPIO_Label=DDR_CSN [MT41K256M16TW_CS\#] +DDR_CSN.Locked=true +DDR_CSN.Mode=DDR3 +DDR_CSN.Signal=DDR_CSN +DDR_DQ0.GPIOParameters=GPIO_Label +DDR_DQ0.GPIO_Label=DDR_DQ0 [MT41K256M16TW_DQU5] +DDR_DQ0.Locked=true +DDR_DQ0.Mode=DDR3 +DDR_DQ0.Signal=DDR_DQ0 +DDR_DQ1.GPIOParameters=GPIO_Label +DDR_DQ1.GPIO_Label=DDR_DQ1 [MT41K256M16TW_DQU1] +DDR_DQ1.Locked=true +DDR_DQ1.Mode=DDR3 +DDR_DQ1.Signal=DDR_DQ1 +DDR_DQ10.GPIOParameters=GPIO_Label +DDR_DQ10.GPIO_Label=DDR_DQ10 [MT41K256M16TW_DQL6] +DDR_DQ10.Locked=true +DDR_DQ10.Mode=DDR3 +DDR_DQ10.Signal=DDR_DQ10 +DDR_DQ11.GPIOParameters=GPIO_Label +DDR_DQ11.GPIO_Label=DDR_DQ11 [MT41K256M16TW_DQL1] +DDR_DQ11.Locked=true +DDR_DQ11.Mode=DDR3 +DDR_DQ11.Signal=DDR_DQ11 +DDR_DQ12.GPIOParameters=GPIO_Label +DDR_DQ12.GPIO_Label=DDR_DQ12 [MT41K256M16TW_DQL5] +DDR_DQ12.Locked=true +DDR_DQ12.Mode=DDR3 +DDR_DQ12.Signal=DDR_DQ12 +DDR_DQ13.GPIOParameters=GPIO_Label +DDR_DQ13.GPIO_Label=DDR_DQ13 [MT41K256M16TW_DQL4] +DDR_DQ13.Locked=true +DDR_DQ13.Mode=DDR3 +DDR_DQ13.Signal=DDR_DQ13 +DDR_DQ14.GPIOParameters=GPIO_Label +DDR_DQ14.GPIO_Label=DDR_DQ14 [MT41K256M16TW_DQL7] +DDR_DQ14.Locked=true +DDR_DQ14.Mode=DDR3 +DDR_DQ14.Signal=DDR_DQ14 +DDR_DQ15.GPIOParameters=GPIO_Label +DDR_DQ15.GPIO_Label=DDR_DQ15 [MT41K256M16TW_DQL3] +DDR_DQ15.Locked=true +DDR_DQ15.Mode=DDR3 +DDR_DQ15.Signal=DDR_DQ15 +DDR_DQ2.GPIOParameters=GPIO_Label +DDR_DQ2.GPIO_Label=DDR_DQ2 [MT41K256M16TW_DQU4] +DDR_DQ2.Locked=true +DDR_DQ2.Mode=DDR3 +DDR_DQ2.Signal=DDR_DQ2 +DDR_DQ3.GPIOParameters=GPIO_Label +DDR_DQ3.GPIO_Label=DDR_DQ3 [MT41K256M16TW_DQU3] +DDR_DQ3.Locked=true +DDR_DQ3.Mode=DDR3 +DDR_DQ3.Signal=DDR_DQ3 +DDR_DQ4.GPIOParameters=GPIO_Label +DDR_DQ4.GPIO_Label=DDR_DQ4 [MT41K256M16TW_DQU6] +DDR_DQ4.Locked=true +DDR_DQ4.Mode=DDR3 +DDR_DQ4.Signal=DDR_DQ4 +DDR_DQ5.GPIOParameters=GPIO_Label +DDR_DQ5.GPIO_Label=DDR_DQ5 [MT41K256M16TW_DQU2] +DDR_DQ5.Locked=true +DDR_DQ5.Mode=DDR3 +DDR_DQ5.Signal=DDR_DQ5 +DDR_DQ6.GPIOParameters=GPIO_Label +DDR_DQ6.GPIO_Label=DDR_DQ6 [MT41K256M16TW_DQU0] +DDR_DQ6.Locked=true +DDR_DQ6.Mode=DDR3 +DDR_DQ6.Signal=DDR_DQ6 +DDR_DQ7.GPIOParameters=GPIO_Label +DDR_DQ7.GPIO_Label=DDR_DQ7 [MT41K256M16TW_DQU7] +DDR_DQ7.Locked=true +DDR_DQ7.Mode=DDR3 +DDR_DQ7.Signal=DDR_DQ7 +DDR_DQ8.GPIOParameters=GPIO_Label +DDR_DQ8.GPIO_Label=DDR_DQ8 [MT41K256M16TW_DQL2] +DDR_DQ8.Locked=true +DDR_DQ8.Mode=DDR3 +DDR_DQ8.Signal=DDR_DQ8 +DDR_DQ9.GPIOParameters=GPIO_Label +DDR_DQ9.GPIO_Label=DDR_DQ9 [MT41K256M16TW_DQL0] +DDR_DQ9.Locked=true +DDR_DQ9.Mode=DDR3 +DDR_DQ9.Signal=DDR_DQ9 +DDR_DQM0.GPIOParameters=GPIO_Label +DDR_DQM0.GPIO_Label=DDR_DQM0 [MT41K256M16TW_DMU] +DDR_DQM0.Locked=true +DDR_DQM0.Mode=DDR3 +DDR_DQM0.Signal=DDR_DQM0 +DDR_DQM1.GPIOParameters=GPIO_Label +DDR_DQM1.GPIO_Label=DDR_DQM1 [MT41K256M16TW_DML] +DDR_DQM1.Locked=true +DDR_DQM1.Mode=DDR3 +DDR_DQM1.Signal=DDR_DQM1 +DDR_DQS0N.GPIOParameters=GPIO_Label +DDR_DQS0N.GPIO_Label=DDR_DQS0_N [MT41K256M16TW_DQSU\#] +DDR_DQS0N.Locked=true +DDR_DQS0N.Mode=DDR3 +DDR_DQS0N.Signal=DDR_DQS0N +DDR_DQS0P.GPIOParameters=GPIO_Label +DDR_DQS0P.GPIO_Label=DDR_DQS0_P [MT41K256M16TW_DQSU] +DDR_DQS0P.Locked=true +DDR_DQS0P.Mode=DDR3 +DDR_DQS0P.Signal=DDR_DQS0P +DDR_DQS1N.GPIOParameters=GPIO_Label +DDR_DQS1N.GPIO_Label=DDR_DQS1_N [MT41K256M16TW_DQSL\#] +DDR_DQS1N.Locked=true +DDR_DQS1N.Mode=DDR3 +DDR_DQS1N.Signal=DDR_DQS1N +DDR_DQS1P.GPIOParameters=GPIO_Label +DDR_DQS1P.GPIO_Label=DDR_DQS1_P [MT41K256M16TW_DQSL] +DDR_DQS1P.Locked=true +DDR_DQS1P.Mode=DDR3 +DDR_DQS1P.Signal=DDR_DQS1P +DDR_DTO0.GPIOParameters=GPIO_Label +DDR_DTO0.GPIO_Label=DDR_DTO0 +DDR_DTO0.Locked=true +DDR_DTO0.Mode=DDR3 +DDR_DTO0.Signal=DDR_DTO0 +DDR_DTO1.GPIOParameters=GPIO_Label +DDR_DTO1.GPIO_Label=DDR_DTO1 +DDR_DTO1.Locked=true +DDR_DTO1.Mode=DDR3 +DDR_DTO1.Signal=DDR_DTO1 +DDR_ODT.GPIOParameters=GPIO_Label +DDR_ODT.GPIO_Label=DDR_ODT [MT41K256M16TW_ODT] +DDR_ODT.Locked=true +DDR_ODT.Mode=DDR3 +DDR_ODT.Signal=DDR_ODT +DDR_RASN.GPIOParameters=GPIO_Label +DDR_RASN.GPIO_Label=DDR_RASN [MT41K256M16TW_RAS\#] +DDR_RASN.Locked=true +DDR_RASN.Mode=DDR3 +DDR_RASN.Signal=DDR_RASN +DDR_RESETN.GPIOParameters=GPIO_Label +DDR_RESETN.GPIO_Label=DDR_RESETN [MT41K256M16TW_RESET\#] +DDR_RESETN.Locked=true +DDR_RESETN.Mode=DDR3 +DDR_RESETN.Signal=DDR_RESETN +DDR_VREF.GPIOParameters=GPIO_Label +DDR_VREF.GPIO_Label=VREF_DDR +DDR_VREF.Locked=true +DDR_VREF.Mode=DDR3 +DDR_VREF.Signal=DDR_VREF +DDR_WEN.GPIOParameters=GPIO_Label +DDR_WEN.GPIO_Label=DDR_WEN_P [MT41K256M16TW_WE\#] +DDR_WEN.Locked=true +DDR_WEN.Mode=DDR3 +DDR_WEN.Signal=DDR_WEN +DDR_ZQ.GPIOParameters=GPIO_Label +DDR_ZQ.GPIO_Label=DDR_ZQ +DDR_ZQ.Locked=true +DDR_ZQ.Mode=DDR3 +DDR_ZQ.Signal=DDR_ZQ +File.Version=6 +GIC.IPCC_RX0_IRQn=true\:false\:High level +GIC.IPCC_TX0_IRQn=true\:false\:High level +GIC.PMUIRQ0_IRQn=true\:false\:High level +GIC.PMUIRQ1_IRQn=true\:false\:High level +GIC.RCC_IRQn=true\:false\:High level +GIC.RTC_WKUP_ALARM_IRQn=true\:false\:High level +GIC.WAKEUP_PIN_IRQn=true\:false\:High level +GPIO.groupedBy=Expand Peripherals +KeepUserPlacement=false +Mcu.Context0=BootROM +Mcu.Context1=BootLoader +Mcu.Context2=CortexA7S +Mcu.Context3=CortexA7NS +Mcu.Context4=CortexM4 +Mcu.ContextNb=5 +Mcu.Family=STM32MP1 +Mcu.IP0=ADC2 +Mcu.IP1=BSEC +Mcu.IP10=LPTIM4 +Mcu.IP11=LPTIM5 +Mcu.IP12=NVIC +Mcu.IP13=PWR +Mcu.IP14=RCC +Mcu.IP15=RTC +Mcu.IP16=SPI5 +Mcu.IP17=SYS +Mcu.IP18=TAMP +Mcu.IP19=TIM4 +Mcu.IP2=DAC1 +Mcu.IP20=TIM14 +Mcu.IP21=TIM16 +Mcu.IP22=TIM17 +Mcu.IP23=UART4 +Mcu.IP24=USART3 +Mcu.IP25=VREFBUF +Mcu.IP26=WWDG1 +Mcu.IP3=DDR +Mcu.IP4=GIC +Mcu.IP5=HSEM +Mcu.IP6=IPCC +Mcu.IP7=LPTIM1 +Mcu.IP8=LPTIM2 +Mcu.IP9=LPTIM3 +Mcu.IPNb=27 +Mcu.Name=STM32MP157AACx +Mcu.Package=TFBGA361 +Mcu.Pin0=PH5 +Mcu.Pin1=PF2 +Mcu.Pin10=DDR_DQ3 +Mcu.Pin100=VP_TAMP_VS_TAMP_Activate +Mcu.Pin101=VP_TIM4_VS_ClockSourceINT +Mcu.Pin102=VP_TIM14_VS_ClockSourceINT +Mcu.Pin103=VP_TIM16_VS_ClockSourceINT +Mcu.Pin104=VP_TIM17_VS_ClockSourceINT +Mcu.Pin105=VP_VREFBUF_VS_VREFBUF +Mcu.Pin106=VP_WWDG1_VS_WWDG +Mcu.Pin107=VP_DMA_VS_DMA1_A7NS +Mcu.Pin108=VP_DMA_VS_DMA2_M4 +Mcu.Pin109=VP_MDMA_VS_MDMA_A7NS_8 +Mcu.Pin11=DDR_DQ0 +Mcu.Pin12=DDR_A13 +Mcu.Pin13=DDR_DQ1 +Mcu.Pin14=DDR_A9 +Mcu.Pin15=DDR_DQ7 +Mcu.Pin16=DDR_DQS0P +Mcu.Pin17=DDR_DQS0N +Mcu.Pin18=PZ6 +Mcu.Pin19=DDR_A5 +Mcu.Pin2=PH4 +Mcu.Pin20=DDR_DQ2 +Mcu.Pin21=DDR_DQ6 +Mcu.Pin22=DDR_DQM0 +Mcu.Pin23=PZ7 +Mcu.Pin24=DDR_A2 +Mcu.Pin25=DDR_DQ4 +Mcu.Pin26=DDR_DQ5 +Mcu.Pin27=PC13 +Mcu.Pin28=DDR_DTO0 +Mcu.Pin29=DDR_A3 +Mcu.Pin3=PD0 +Mcu.Pin30=DDR_ZQ +Mcu.Pin31=PC15-OSC32_OUT +Mcu.Pin32=PC14-OSC32_IN +Mcu.Pin33=DDR_A0 +Mcu.Pin34=DDR_DTO1 +Mcu.Pin35=DDR_ODT +Mcu.Pin36=DDR_BA0 +Mcu.Pin37=DDR_WEN +Mcu.Pin38=DDR_BA2 +Mcu.Pin39=DDR_CSN +Mcu.Pin4=PC6 +Mcu.Pin40=PA13 +Mcu.Pin41=DDR_CASN +Mcu.Pin42=DDR_RASN +Mcu.Pin43=DDR_CLKP +Mcu.Pin44=DDR_CLKN +Mcu.Pin45=PH0-OSC_IN +Mcu.Pin46=PI11 +Mcu.Pin47=DDR_A1 +Mcu.Pin48=DDR_A12 +Mcu.Pin49=DDR_A11 +Mcu.Pin5=PA15 +Mcu.Pin50=DDR_A14 +Mcu.Pin51=DDR_A10 +Mcu.Pin52=PA14 +Mcu.Pin53=DDR_CKE +Mcu.Pin54=DDR_DQ8 +Mcu.Pin55=DDR_DQ10 +Mcu.Pin56=DDR_DQ13 +Mcu.Pin57=DDR_BA1 +Mcu.Pin58=DDR_DQ9 +Mcu.Pin59=DDR_DQS1P +Mcu.Pin6=PB7 +Mcu.Pin60=DDR_DQS1N +Mcu.Pin61=PA4 +Mcu.Pin62=DDR_A4 +Mcu.Pin63=DDR_DQM1 +Mcu.Pin64=PG1 +Mcu.Pin65=PH7 +Mcu.Pin66=DDR_A6 +Mcu.Pin67=DDR_DQ11 +Mcu.Pin68=DDR_DQ14 +Mcu.Pin69=DDR_DQ12 +Mcu.Pin7=PE4 +Mcu.Pin70=PB10 +Mcu.Pin71=PG11 +Mcu.Pin72=PG9 +Mcu.Pin73=PB2 +Mcu.Pin74=PA10 +Mcu.Pin75=DDR_ATO +Mcu.Pin76=DDR_A8 +Mcu.Pin77=DDR_DQ15 +Mcu.Pin78=PF9 +Mcu.Pin79=PD13 +Mcu.Pin8=DDR_RESETN +Mcu.Pin80=PA0 +Mcu.Pin81=PF7 +Mcu.Pin82=PF14 +Mcu.Pin83=PB12 +Mcu.Pin84=PA6 +Mcu.Pin85=PD11 +Mcu.Pin86=DDR_VREF +Mcu.Pin87=VP_BSEC_VS_BSEC +Mcu.Pin88=VP_DDR_DDR3 +Mcu.Pin89=VP_DDR_DDR_16_bits +Mcu.Pin9=DDR_A7 +Mcu.Pin90=VP_DDR_DDR3_16_4Gb +Mcu.Pin91=VP_HSEM_VS_HSEM +Mcu.Pin92=VP_IPCC_VS_IPCC +Mcu.Pin93=VP_LPTIM1_VS_LPTIM_counterModeInternalClock +Mcu.Pin94=VP_LPTIM2_VS_LPTIM_counterModeInternalClock +Mcu.Pin95=VP_LPTIM3_VS_LPTIM_counterModeInternalClock +Mcu.Pin96=VP_LPTIM4_VS_LPTIM_counterModeInternalClock +Mcu.Pin97=VP_LPTIM5_VS_LPTIM_counterModeInternalClock +Mcu.Pin98=VP_RTC_VS_RTC_Activate +Mcu.Pin99=VP_SYS_VS_Systick +Mcu.PinsNb=110 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32MP157AACx +MxCube.Version=5.6.1 +MxDb.Version=DB.5.0.60 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.IPCC_RX1_IRQn=true\:0\:0\:false\:false\:true\:true\:true +NVIC.IPCC_TX1_IRQn=true\:0\:0\:false\:false\:true\:true\:true +NVIC.LPTIM1_IRQn=true\:0\:0\:false\:false\:true\:true\:true +NVIC.LPTIM2_IRQn=true\:0\:0\:false\:false\:true\:true\:true +NVIC.LPTIM3_IRQn=true\:0\:0\:false\:false\:true\:true\:true +NVIC.LPTIM4_IRQn=true\:0\:0\:false\:false\:true\:true\:true +NVIC.LPTIM5_IRQn=true\:0\:0\:false\:false\:true\:true\:true +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.WWDG1_IRQn=true\:0\:0\:false\:false\:true\:true\:true +PA0.Locked=true +PA0.Mode=WakeUp1 +PA0.Signal=PWR_WKUP1 +PA10.GPIOParameters=GPIO_Label +PA10.GPIO_Label=HDMI_NRST [SiI9022ACNU_RESET\#] +PA10.Locked=true +PA10.Signal=GPIO_Output +PA13.GPIOParameters=GPIO_Label +PA13.GPIO_Label=PA13 [LD6_RED] +PA13.Locked=true +PA13.Signal=GPIO_Output +PA14.GPIOParameters=GPIO_Label +PA14.GPIO_Label=PA14 [SW-PUSH-TS-02H-Blue] +PA14.Locked=true +PA14.Signal=GPIO_Input +PA15.GPIOParameters=GPIO_Label +PA15.GPIO_Label=BL_CTRL [STLD40DPUR_EN] +PA15.Locked=true +PA15.Signal=GPIO_Output +PA4.Signal=COMP_DAC11_group +PA6.GPIOParameters=GPIO_Label +PA6.GPIO_Label=ETH_MDINT [RTL8211F_INT] +PA6.Locked=true +PA6.Signal=GPIO_Input +PB10.Locked=true +PB10.Mode=Asynchronous +PB10.Signal=USART3_TX +PB12.Locked=true +PB12.Mode=Asynchronous +PB12.Signal=USART3_RX +PB2.GPIOParameters=GPIO_Label +PB2.GPIO_Label=STLINK_TX [STM32F103CBT6_PA2] +PB2.Locked=true +PB2.Mode=Asynchronous +PB2.Signal=UART4_RX +PB7.GPIOParameters=GPIO_Label +PB7.GPIO_Label=uSD_DETECT [PJS008-2003-1] +PB7.Locked=true +PB7.Signal=GPIO_Input +PC13.GPIOParameters=GPIO_Label +PC13.GPIO_Label=PMIC_WAKEUP [STPMU1A_WAKEUP] +PC13.Locked=true +PC13.Signal=GPIO_Output +PC14-OSC32_IN.Locked=true +PC14-OSC32_IN.Mode=LSE-External-Oscillator +PC14-OSC32_IN.Signal=RCC_OSC32_IN +PC15-OSC32_OUT.Locked=true +PC15-OSC32_OUT.Mode=LSE-External-Oscillator +PC15-OSC32_OUT.Signal=RCC_OSC32_OUT +PC6.GPIOParameters=GPIO_Label +PC6.GPIO_Label=TE [FH26W-25S_TE] +PC6.Locked=true +PC6.Signal=GPIO_Output +PD0.GPIOParameters=GPIO_Label +PD0.GPIO_Label=WL_HOST_WAKE [LBEE5KL1DX_WL_HOST_WAKE] +PD0.Locked=true +PD0.Signal=GPIO_Input +PD11.GPIOParameters=GPIO_Label +PD11.GPIO_Label=LED_B [LD8_BLUE] +PD11.Locked=true +PD11.Signal=GPIO_Output +PD13.Signal=S_TIM4_CH2 +PE4.GPIOParameters=GPIO_Label +PE4.GPIO_Label=RSTN [FH26W-25S_RSTN] +PE4.Locked=true +PE4.Signal=GPIO_Output +PF14.Locked=true +PF14.Mode=IN6-Single-Ended +PF14.Signal=ADC2_INP6 +PF2.GPIOParameters=GPIO_Label +PF2.GPIO_Label=INT [FH26W-25S_INT] +PF2.Locked=true +PF2.Signal=GPIO_Input +PF7.Locked=true +PF7.Mode=TX_Only_Simplex_Unidirect_Master +PF7.Signal=SPI5_SCK +PF9.Mode=TX_Only_Simplex_Unidirect_Master +PF9.Signal=SPI5_MOSI +PG1.GPIOParameters=GPIO_Label +PG1.GPIO_Label=HDMI_INT [SiI9022ACNU_INT] +PG1.Locked=true +PG1.Signal=GPIO_Input +PG11.GPIOParameters=GPIO_Label +PG11.GPIO_Label=STLINK_RX [STM32F103CBT6_PA3] +PG11.Locked=true +PG11.Mode=Asynchronous +PG11.Signal=UART4_TX +PG9.GPIOParameters=GPIO_Label +PG9.GPIO_Label=AUDIO_RST [CS42L51-CNZ_RESET] +PG9.Locked=true +PG9.Signal=GPIO_Output +PH0-OSC_IN.Locked=true +PH0-OSC_IN.Mode=HSE-DIG-External-Clock-Source +PH0-OSC_IN.Signal=RCC_OSC_IN +PH4.GPIOParameters=GPIO_Label +PH4.GPIO_Label=WL_REG_ON [LBEE5KL1DX_WL_REG_ON] +PH4.Locked=true +PH4.Signal=GPIO_Output +PH5.GPIOParameters=GPIO_Label +PH5.GPIO_Label=BT_HOST_WAKE [LBEE5KL1DX_BT_HOST_WAKE] +PH5.Locked=true +PH5.Signal=GPIO_Input +PH7.GPIOParameters=GPIO_Label +PH7.GPIO_Label=LED_Y [LD7_ORANGE] +PH7.Locked=true +PH7.Signal=GPIO_Output +PI11.GPIOParameters=GPIO_Label +PI11.GPIO_Label=STUSB1600_IRQOUTn [STUSB1600_ALERT\#] +PI11.Locked=true +PI11.Signal=GPIO_Input +PZ6.GPIOParameters=GPIO_Label +PZ6.GPIO_Label=BT_REG_ON [LBEE5KL1DX_BT_REG_ON] +PZ6.Locked=true +PZ6.Signal=GPIO_Output +PZ7.GPIOParameters=GPIO_Label +PZ7.GPIO_Label=BT_DEV_WAKE [LBEE5KL1DX_BT_DEV_WAKE] +PZ7.Locked=true +PZ7.Signal=GPIO_Output +PinOutPanel.CurrentBGAView=Top +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32MP157AACx +ProjectManager.DeviceTreeLocation=D\:\\3_work\\GitRepositories\\rt-thread\\bsp\\stm32\\stm32mp157a-st-discovery\\board\\CubeMX_Config\\STM32MP157-DK1\\CA7\\DeviceTree\\ +ProjectManager.FirmwarePackage=STM32Cube FW_MP1 V1.2.0 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=0 +ProjectManager.MainLocation=Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=STM32MP157-DK1.ioc +ProjectManager.ProjectName=STM32MP157-DK1 +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=EWARM V8.32 +ProjectManager.ToolChainLocation= +ProjectManager.UnderRoot=false +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_IPCC_Init-IPCC-false-HAL-true,4-MX_SPI5_Init-SPI5-false-HAL-true,5-MX_TIM4_Init-TIM4-false-HAL-true,6-MX_TIM14_Init-TIM14-false-HAL-true,7-MX_TIM16_Init-TIM16-false-HAL-true,8-MX_TIM17_Init-TIM17-false-HAL-true,9-MX_UART4_Init-UART4-false-HAL-true,10-MX_ADC2_Init-ADC2-false-HAL-true,11-MX_DAC1_Init-DAC1-false-HAL-true,12-MX_LPTIM1_Init-LPTIM1-false-HAL-true,13-MX_LPTIM2_Init-LPTIM2-false-HAL-true,14-MX_LPTIM3_Init-LPTIM3-false-HAL-true,15-MX_LPTIM4_Init-LPTIM4-false-HAL-true,16-MX_LPTIM5_Init-LPTIM5-false-HAL-true,17-MX_USART3_UART_Init-USART3-false-HAL-true,18-MX_WWDG1_Init-WWDG1-false-HAL-true,0-MX_PWR_Init-PWR-false-HAL-true +RCC.ADCCLockSelection=RCC_ADCCLKSOURCE_PER +RCC.ADCFreq_Value=24000000 +RCC.AHB1234Freq_Value=208877929.6875 +RCC.APB1DIV=RCC_APB1_DIV2 +RCC.APB1Freq_Value=104438964.84375 +RCC.APB2DIV=RCC_APB2_DIV2 +RCC.APB2Freq_Value=104438964.84375 +RCC.APB3DIV=RCC_APB3_DIV2 +RCC.APB3Freq_Value=104438964.84375 +RCC.APB4DIV=RCC_APB4_DIV2 +RCC.APB4Freq_Value=133250000 +RCC.APB5DIV=RCC_APB5_DIV4 +RCC.APB5DIVClockFreq_Value=66625000 +RCC.AXICLKFreq_VALUE=266500000 +RCC.AXICLKSource=RCC_AXISSOURCE_PLL2 +RCC.AXIDIVFreq_Value=266500000 +RCC.CECFreq_Value=32768 +RCC.CKPERCLKFreq_VALUE=24000000 +RCC.CKPERCLKSource=RCC_CKPERCLKSOURCE_HSE +RCC.CSI_VALUE=4000000 +RCC.CortexFreq_Value=208877929.6875 +RCC.DACCLKFreq_VALUE=32000 +RCC.DDRCFreq_Value=533000000 +RCC.DDRPERFMFreq_Value=533000000 +RCC.DDRPHYFreq_Value=533000000 +RCC.DFSDFAFreq_Value=74250000 +RCC.DFSDMFreq_Value=208877929.6875 +RCC.DIVM1=3 +RCC.DIVM2=3 +RCC.DIVM3=2 +RCC.DIVM4=4 +RCC.DIVN1=81 +RCC.DIVN2=66 +RCC.DIVN3=34 +RCC.DIVN4=99 +RCC.DIVP1Freq_Value=650000000 +RCC.DIVP2Freq_Value=266500000 +RCC.DIVP3Freq_Value=208877929.6875 +RCC.DIVP4=6 +RCC.DIVP4Freq_Value=99000000 +RCC.DIVQ1Freq_Value=325000000 +RCC.DIVQ2=1 +RCC.DIVQ2Freq_Value=533000000 +RCC.DIVQ3=17 +RCC.DIVQ3Freq_Value=24573874.08088235 +RCC.DIVQ4=8 +RCC.DIVQ4Freq_Value=74250000 +RCC.DIVR1Freq_Value=325000000 +RCC.DIVR2=1 +RCC.DIVR2Freq_Value=533000000 +RCC.DIVR3=37 +RCC.DIVR3Freq_Value=11290698.902027028 +RCC.DIVR4=8 +RCC.DIVR4Freq_Value=74250000 +RCC.DSIFreq_Value=60000000 +RCC.DSIPixelFreq_Value=74250000 +RCC.DSITXEscFreq_Value=15000000 +RCC.DSI_VALUE=60000000 +RCC.ETHFreq_Value=99000000 +RCC.FCLKFreq_Value=196000000 +RCC.FDCANFreq_Value=24000000 +RCC.FMCCLockSelection=RCC_FMCCLKSOURCE_ACLK +RCC.FMCFreq_Value=266500000 +RCC.FamilyName=M +RCC.HSE_VALUE=24000000 +RCC.HSIDivClkFreq_Value=64000000 +RCC.HSI_VALUE=64000000 +RCC.Hclk5DIVFreq_Value=266500000 +RCC.Hclk6DIVFreq_Value=266500000 +RCC.I2C12CLockSelection=RCC_I2C12CLKSOURCE_HSI +RCC.I2C12Freq_Value=64000000 +RCC.I2C35CLockSelection=RCC_I2C35CLKSOURCE_PCLK1 +RCC.I2C35Freq_Value=104438964.84375 +RCC.I2C46CLockSelection=RCC_I2C46CLKSOURCE_HSI +RCC.I2C46Freq_Value=64000000 +RCC.IPParameters=ADCCLockSelection,ADCFreq_Value,AHB1234Freq_Value,APB1DIV,APB1Freq_Value,APB2DIV,APB2Freq_Value,APB3DIV,APB3Freq_Value,APB4DIV,APB4Freq_Value,APB5DIV,APB5DIVClockFreq_Value,AXICLKFreq_VALUE,AXICLKSource,AXIDIVFreq_Value,CECFreq_Value,CKPERCLKFreq_VALUE,CKPERCLKSource,CSI_VALUE,CortexFreq_Value,DACCLKFreq_VALUE,DDRCFreq_Value,DDRPERFMFreq_Value,DDRPHYFreq_Value,DFSDFAFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVM4,DIVN1,DIVN2,DIVN3,DIVN4,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVP4,DIVP4Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVQ4,DIVQ4Freq_Value,DIVR1Freq_Value,DIVR2,DIVR2Freq_Value,DIVR3,DIVR3Freq_Value,DIVR4,DIVR4Freq_Value,DSIFreq_Value,DSIPixelFreq_Value,DSITXEscFreq_Value,DSI_VALUE,ETHFreq_Value,FCLKFreq_Value,FDCANFreq_Value,FMCCLockSelection,FMCFreq_Value,FamilyName,HSE_VALUE,HSIDivClkFreq_Value,HSI_VALUE,Hclk5DIVFreq_Value,Hclk6DIVFreq_Value,I2C12CLockSelection,I2C12Freq_Value,I2C35CLockSelection,I2C35Freq_Value,I2C46CLockSelection,I2C46Freq_Value,LPTIM1CLockSelection,LPTIM1Freq_Value,LPTIM23CLockSelection,LPTIM23Freq_Value,LPTIM45CLockSelection,LPTIM45Freq_Value,LSI_VALUE,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,MCUCLKFreq_VALUE,MCUCLKSource,MCUClockFreq_Value,MCUDIVCLKFreq_Value,MPUCLKFreq_VALUE,MPUCLKSource,PLL12Source,PLL1FRACV,PLL1UserDefinedConfig,PLL2FRACV,PLL3FRACV,PLL3Source,PLL4FRACV,PLL4PDSIFreq_Value,PLL4Source,PLLDSIFreq_Value,PLLDSIVCOFreq_Value,PUBLFreq_Value,QSPICLockSelection,QSPIFreq_Value,RCC_RTC_Clock_Source_FROM_HSE,RNG1CLockSelection,RNG1Freq_Value,RNG2Freq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SAI2CLockSelection,SAI2Freq_Value,SAI3Freq_Value,SAI4Freq_Value,SDMMC12CLockSelection,SDMMC12Freq_Value,SDMMC3CLockSelection,SDMMC3Freq_Value,SPDIFRXFreq_Value,SPI1CLockSelection,SPI1Freq_Value,SPI23CLockSelection,SPI23Freq_Value,SPI45CLockSelection,SPI45Freq_Value,SPI6CLockSelection,SPI6Freq_Value,STGENCLockSelection,STGENFreq_Value,Tim1OutputFreq_Value,Tim2OutputFreq_Value,UART78CLockSelection,UART78Freq_Value,USART1CLockSelection,USART1Freq_Value,USART24CLockSelection,USART24Freq_Value,USART35CLockSelection,USART35Freq_Value,USART6CLockSelection,USART6Freq_Value,USBOCLKSource,USBOHSFreq_Value,USBPHYCLKSource,USBPHYFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCO4OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value,VCOInput4Freq_Value +RCC.LPTIM1CLockSelection=RCC_LPTIM1CLKSOURCE_PCLK1 +RCC.LPTIM1Freq_Value=104438964.84375 +RCC.LPTIM23CLockSelection=RCC_LPTIM23CLKSOURCE_PCLK3 +RCC.LPTIM23Freq_Value=104438964.84375 +RCC.LPTIM45CLockSelection=RCC_LPTIM45CLKSOURCE_PCLK3 +RCC.LPTIM45Freq_Value=104438964.84375 +RCC.LSI_VALUE=32000 +RCC.LTDCFreq_Value=74250000 +RCC.MCO1PinFreq_Value=64000000 +RCC.MCO2PinFreq_Value=650000000 +RCC.MCUCLKFreq_VALUE=208877929.6875 +RCC.MCUCLKSource=RCC_MCUSSOURCE_PLL3 +RCC.MCUClockFreq_Value=208877929.6875 +RCC.MCUDIVCLKFreq_Value=208877929.6875 +RCC.MPUCLKFreq_VALUE=650000000 +RCC.MPUCLKSource=RCC_MPUSOURCE_PLL1 +RCC.PLL12Source=RCC_PLL12SOURCE_HSE +RCC.PLL1FRACV=0x800 +RCC.PLL1UserDefinedConfig=false +RCC.PLL2FRACV=0x1400 +RCC.PLL3FRACV=6660 +RCC.PLL3Source=RCC_PLL3SOURCE_HSE +RCC.PLL4FRACV=0 +RCC.PLL4PDSIFreq_Value=99000000 +RCC.PLL4Source=RCC_PLL4SOURCE_HSE +RCC.PLLDSIFreq_Value=480000000 +RCC.PLLDSIVCOFreq_Value=960000000 +RCC.PUBLFreq_Value=533000000 +RCC.QSPICLockSelection=RCC_QSPICLKSOURCE_ACLK +RCC.QSPIFreq_Value=266500000 +RCC.RCC_RTC_Clock_Source_FROM_HSE=24 +RCC.RNG1CLockSelection=RCC_RNG1CLKSOURCE_LSI +RCC.RNG1Freq_Value=32000 +RCC.RNG2Freq_Value=4000000 +RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE +RCC.RTCFreq_Value=32768 +RCC.SAI1Freq_Value=74250000 +RCC.SAI2CLockSelection=RCC_SAI2CLKSOURCE_PLL3_Q +RCC.SAI2Freq_Value=24573874.08088235 +RCC.SAI3Freq_Value=74250000 +RCC.SAI4Freq_Value=74250000 +RCC.SDMMC12CLockSelection=RCC_SDMMC12CLKSOURCE_PLL4 +RCC.SDMMC12Freq_Value=99000000 +RCC.SDMMC3CLockSelection=RCC_SDMMC3CLKSOURCE_HCLK2 +RCC.SDMMC3Freq_Value=208877929.6875 +RCC.SPDIFRXFreq_Value=99000000 +RCC.SPI1CLockSelection=RCC_SPI1CLKSOURCE_PLL3_Q +RCC.SPI1Freq_Value=24573874.08088235 +RCC.SPI23CLockSelection=RCC_SPI23CLKSOURCE_PLL3_Q +RCC.SPI23Freq_Value=24573874.08088235 +RCC.SPI45CLockSelection=RCC_SPI45CLKSOURCE_PCLK2 +RCC.SPI45Freq_Value=104438964.84375 +RCC.SPI6CLockSelection=RCC_SPI6CLKSOURCE_PCLK5 +RCC.SPI6Freq_Value=66625000 +RCC.STGENCLockSelection=RCC_STGENCLKSOURCE_HSE +RCC.STGENFreq_Value=24000000 +RCC.Tim1OutputFreq_Value=208877929.6875 +RCC.Tim2OutputFreq_Value=208877929.6875 +RCC.UART78CLockSelection=RCC_UART78CLKSOURCE_PCLK1 +RCC.UART78Freq_Value=104438964.84375 +RCC.USART1CLockSelection=RCC_USART1CLKSOURCE_PCLK5 +RCC.USART1Freq_Value=66625000 +RCC.USART24CLockSelection=RCC_UART24CLKSOURCE_HSI +RCC.USART24Freq_Value=64000000 +RCC.USART35CLockSelection=RCC_UART35CLKSOURCE_PCLK1 +RCC.USART35Freq_Value=104438964.84375 +RCC.USART6CLockSelection=RCC_USART6CLKSOURCE_PCLK2 +RCC.USART6Freq_Value=104438964.84375 +RCC.USBOCLKSource=RCC_USBOCLKSOURCE_PHY +RCC.USBOHSFreq_Value=48000000 +RCC.USBPHYCLKSource=RCC_USBPHYCLKSOURCE_HSE +RCC.USBPHYFreq_Value=24000000 +RCC.VCO1OutputFreq_Value=1300000000 +RCC.VCO2OutputFreq_Value=1066000000 +RCC.VCO3OutputFreq_Value=417755859.375 +RCC.VCO4OutputFreq_Value=594000000 +RCC.VCOInput1Freq_Value=8000000 +RCC.VCOInput2Freq_Value=8000000 +RCC.VCOInput3Freq_Value=12000000 +RCC.VCOInput4Freq_Value=6000000 +SH.COMP_DAC11_group.0=DAC1_OUT1,DAC_OUT1 +SH.COMP_DAC11_group.ConfNb=1 +SH.S_TIM4_CH2.0=TIM4_CH2,PWM Generation2 CH2 +SH.S_TIM4_CH2.ConfNb=1 +SPI5.CalculateBaudRate=26.10974 MBits/s +SPI5.Direction=SPI_DIRECTION_2LINES_TXONLY +SPI5.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate +SPI5.Mode=SPI_MODE_MASTER +SPI5.VirtualType=VM_MASTER +TIM4.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM4.IPParameters=Channel-PWM Generation2 CH2 +USART3.IPParameters=VirtualMode-Asynchronous +USART3.VirtualMode-Asynchronous=VM_ASYNC +VP_BSEC_VS_BSEC.Mode=BSEC_Activate +VP_BSEC_VS_BSEC.Signal=BSEC_VS_BSEC +VP_DDR_DDR3.Mode=DDR3 +VP_DDR_DDR3.Signal=DDR_DDR3 +VP_DDR_DDR3_16_4Gb.Mode=4Gb_16bits +VP_DDR_DDR3_16_4Gb.Signal=DDR_DDR3_16_4Gb +VP_DDR_DDR_16_bits.Mode=16bits +VP_DDR_DDR_16_bits.Signal=DDR_DDR_16_bits +VP_DMA_VS_DMA1_A7NS.Mode=CortexA7NS +VP_DMA_VS_DMA1_A7NS.Signal=DMA_VS_DMA1_A7NS +VP_DMA_VS_DMA2_M4.Mode=CortexM4 +VP_DMA_VS_DMA2_M4.Signal=DMA_VS_DMA2_M4 +VP_HSEM_VS_HSEM.Mode=HSEM_Activate +VP_HSEM_VS_HSEM.Signal=HSEM_VS_HSEM +VP_IPCC_VS_IPCC.Mode=IPCC_Activate +VP_IPCC_VS_IPCC.Signal=IPCC_VS_IPCC +VP_LPTIM1_VS_LPTIM_counterModeInternalClock.Mode=Counts__internal_clock_event_00 +VP_LPTIM1_VS_LPTIM_counterModeInternalClock.Signal=LPTIM1_VS_LPTIM_counterModeInternalClock +VP_LPTIM2_VS_LPTIM_counterModeInternalClock.Mode=Counts__internal_clock_event_00 +VP_LPTIM2_VS_LPTIM_counterModeInternalClock.Signal=LPTIM2_VS_LPTIM_counterModeInternalClock +VP_LPTIM3_VS_LPTIM_counterModeInternalClock.Mode=Counts__internal_clock_event_00 +VP_LPTIM3_VS_LPTIM_counterModeInternalClock.Signal=LPTIM3_VS_LPTIM_counterModeInternalClock +VP_LPTIM4_VS_LPTIM_counterModeInternalClock.Mode=Counts__internal_clock_event_00 +VP_LPTIM4_VS_LPTIM_counterModeInternalClock.Signal=LPTIM4_VS_LPTIM_counterModeInternalClock +VP_LPTIM5_VS_LPTIM_counterModeInternalClock.Mode=Counts__internal_clock_event_00 +VP_LPTIM5_VS_LPTIM_counterModeInternalClock.Signal=LPTIM5_VS_LPTIM_counterModeInternalClock +VP_MDMA_VS_MDMA_A7NS_8.Mode=8\:8 +VP_MDMA_VS_MDMA_A7NS_8.Signal=MDMA_VS_MDMA_A7NS_8 +VP_RTC_VS_RTC_Activate.Mode=RTC_Enabled +VP_RTC_VS_RTC_Activate.Signal=RTC_VS_RTC_Activate +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_TAMP_VS_TAMP_Activate.Mode=TAMP_Enabled +VP_TAMP_VS_TAMP_Activate.Signal=TAMP_VS_TAMP_Activate +VP_TIM14_VS_ClockSourceINT.Mode=Enable_Timer +VP_TIM14_VS_ClockSourceINT.Signal=TIM14_VS_ClockSourceINT +VP_TIM16_VS_ClockSourceINT.Mode=Enable_Timer +VP_TIM16_VS_ClockSourceINT.Signal=TIM16_VS_ClockSourceINT +VP_TIM17_VS_ClockSourceINT.Mode=Enable_Timer +VP_TIM17_VS_ClockSourceINT.Signal=TIM17_VS_ClockSourceINT +VP_TIM4_VS_ClockSourceINT.Mode=Internal +VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT +VP_VREFBUF_VS_VREFBUF.Mode=VREFBUF_Activate +VP_VREFBUF_VS_VREFBUF.Signal=VREFBUF_VS_VREFBUF +VP_WWDG1_VS_WWDG.Mode=WWDG_Activate +VP_WWDG1_VS_WWDG.Signal=WWDG1_VS_WWDG +WWDG1.IPParameters=Prescaler +WWDG1.Prescaler=WWDG_PRESCALER_8 +board=STM32MP157A-DK1 +boardIOC=true diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig b/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig new file mode 100644 index 000000000..bdcc20f61 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/Kconfig @@ -0,0 +1,177 @@ +menu "Hardware Drivers Config" + +config SOC_STM32MP157A + bool + select SOC_SERIES_STM32MP1 + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + +menu "Onboard Peripheral Drivers" + + config BSP_USING_STLINK_TO_USART + bool "Enable STLINK TO USART (uart4)" + select BSP_USING_UART + select BSP_USING_UART4 + default y + +endmenu + +menu "On-chip Peripheral Drivers" + config BSP_USING_GPIO + bool "Enable GPIO" + select RT_USING_PIN + default y + + config BSP_USING_WWDG + bool "Enable WWDG" + select RT_USING_WWDG + default n + + menuconfig BSP_USING_UART + bool "Enable UART" + select RT_USING_SERIAL + default y + if BSP_USING_UART + config BSP_USING_UART3 + bool "Enable UART3" + default y + + config BSP_UART3_RX_USING_DMA + bool "Enable UART3 RX DMA" + depends on BSP_USING_UART4 && RT_SERIAL_USING_DMA + default n + + config BSP_UART3_TX_USING_DMA + bool "Enable UART3 TX DMA" + depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART4 + bool "Enable UART4" + default y + + config BSP_UART4_RX_USING_DMA + bool "Enable UART4 RX DMA" + depends on BSP_USING_UART4 && RT_SERIAL_USING_DMA + default n + + config BSP_UART4_TX_USING_DMA + bool "Enable UART4 TX DMA" + depends on BSP_USING_UART4 && RT_SERIAL_USING_DMA + default n + + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM14 + bool "Enable TIM14" + default n + + config BSP_USING_TIM16 + bool "Enable TIM16" + default n + + config BSP_USING_TIM17 + bool "Enable TIM17" + default n + + endif + menuconfig BSP_USING_LPTIM + bool "Enable lptimer" + default n + select RT_USING_LPTIMER + if BSP_USING_LPTIM + config BSP_USING_LPTIM1 + bool "Enable LPTIM1" + default n + endif + + menuconfig BSP_USING_PWM + bool "Enable pwm" + default n + select RT_USING_PWM + if BSP_USING_PWM + menuconfig BSP_USING_PWM4 + bool "Enable timer4 output pwm" + default n + if BSP_USING_PWM4 + config BSP_USING_PWM4_CH2 + bool "Enable PWM4 channel2" + default n + endif + endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC2 + bool "Enable ADC2" + default n + endif + + menuconfig BSP_USING_DAC + bool "Enable DAC" + default n + select RT_USING_DAC + if BSP_USING_DAC + config BSP_USING_DAC1 + bool "Enable DAC1" + default n + endif + + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + default n + if BSP_USING_I2C1 + comment "Notice: PD7 --> 55; PG15 --> 111" + config BSP_I2C1_SCL_PIN + int "I2C1 scl pin number" + range 1 176 + default 55 + config BSP_I2C1_SDA_PIN + int "I2C1 sda pin number" + range 1 176 + default 111 + + endif + + menuconfig BSP_USING_SPI + bool "Enable SPI BUS" + select RT_USING_SPI + default n + if BSP_USING_SPI + config BSP_USING_SPI5 + bool "Enable SPI5 BUS" + default n + + config BSP_SPI5_TX_USING_DMA + bool "Enable SPI5 TX DMA" + depends on BSP_USING_SPI5 + default n + + config BSP_SPI5_RX_USING_DMA + bool "Enable SPI5 RX DMA" + depends on BSP_USING_SPI5 + select BSP_SPI5_TX_USING_DMA + default n + endif + + source "../libraries/HAL_Drivers/Kconfig" + +endmenu + +menu "Board extended module Drivers" + +endmenu + +endmenu diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/SConscript b/bsp/stm32/stm32mp157a-st-ev1/board/SConscript new file mode 100644 index 000000000..2d4657da9 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/SConscript @@ -0,0 +1,47 @@ +import os +import rtconfig +from building import * + +Import('SDK_LIB') + +cwd = GetCurrentDir() + +# add general drivers +src = Split(''' +board.c +CubeMX_Config/Common/System/system_stm32mp1xx.c +CubeMX_Config/CM4/Src/stm32mp1xx_hal_msp.c +''') + +if GetDepend(['BSP_USING_ADC']): + src += Glob('ports/drv_hard_i2c.c') + src += Glob('ports/stpmic.c') + +if GetDepend(['BSP_USING_DAC']): + src += Glob('ports/drv_hard_i2c.c') + src += Glob('ports/stpmic.c') + +if GetDepend(['BSP_USING_WWDG']): + src += Glob('ports/drv_wwdg.c') + +if GetDepend(['BSP_USING_LPTIM']): + src += Glob('ports/drv_lptim.c') + +path = [cwd] +path += [cwd + '/CubeMX_Config/CM4/Inc'] +path += [cwd + '/ports'] + +startup_path_prefix = SDK_LIB + +if rtconfig.CROSS_TOOL == 'gcc': + src += [startup_path_prefix + '/STM32MPxx_HAL/CMSIS/Device/ST/STM32MP1xx/Source/Templates/gcc/startup_stm32mp15xx.s'] +elif rtconfig.CROSS_TOOL == 'keil': + src += [startup_path_prefix + '/STM32MPxx_HAL/CMSIS/Device/ST/STM32MP1xx/Source/Templates/arm/startup_stm32mp15xx.s'] +elif rtconfig.CROSS_TOOL == 'iar': + src += [startup_path_prefix + '/STM32MPxx_HAL/CMSIS/Device/ST/STM32MP1xx/Source/Templates/iar/startup_stm32mp15xx.s'] + +CPPDEFINES = ['CORE_CM4', 'STM32MP157Axx', 'USE_HAL_DRIVER'] + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) + +Return('group') diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/board.c b/bsp/stm32/stm32mp157a-st-ev1/board/board.c new file mode 100644 index 000000000..0a7bda208 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/board.c @@ -0,0 +1,189 @@ +/* +* Copyright (c) 2006-2018, RT-Thread Development Team +* +* SPDX-License-Identifier: Apache-2.0 +* +* Change Logs: +* Date Author Notes +* 2018-11-06 SummerGift first version +* 2019-04-09 WillianChan add stm32f469-st-disco bsp +* 2020-06-20 thread-liu add stm32mp157-dk1 bsp +*/ + +#include "board.h" + +/** +* @brief System Clock Configuration +* @retval None +*/ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /**Configure LSE Drive Capability + */ + HAL_PWR_EnableBkUpAccess(); + __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_MEDIUMHIGH); + + /**Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE + |RCC_OSCILLATORTYPE_LSE; + RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS_DIG; + RCC_OscInitStruct.LSEState = RCC_LSE_ON; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = 16; + RCC_OscInitStruct.HSIDivValue = RCC_HSI_DIV1; + + /**PLL1 Config + */ + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLL12SOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 3; + RCC_OscInitStruct.PLL.PLLN = 81; + RCC_OscInitStruct.PLL.PLLP = 1; + RCC_OscInitStruct.PLL.PLLQ = 1; + RCC_OscInitStruct.PLL.PLLR = 1; + RCC_OscInitStruct.PLL.PLLFRACV = 0x800; + RCC_OscInitStruct.PLL.PLLMODE = RCC_PLL_FRACTIONAL; + RCC_OscInitStruct.PLL.RPDFN_DIS = RCC_RPDFN_DIS_DISABLED; + RCC_OscInitStruct.PLL.TPDFN_DIS = RCC_TPDFN_DIS_DISABLED; + + /**PLL2 Config + */ + RCC_OscInitStruct.PLL2.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL2.PLLSource = RCC_PLL12SOURCE_HSE; + RCC_OscInitStruct.PLL2.PLLM = 3; + RCC_OscInitStruct.PLL2.PLLN = 66; + RCC_OscInitStruct.PLL2.PLLP = 2; + RCC_OscInitStruct.PLL2.PLLQ = 1; + RCC_OscInitStruct.PLL2.PLLR = 1; + RCC_OscInitStruct.PLL2.PLLFRACV = 0x1400; + RCC_OscInitStruct.PLL2.PLLMODE = RCC_PLL_FRACTIONAL; + RCC_OscInitStruct.PLL2.RPDFN_DIS = RCC_RPDFN_DIS_DISABLED; + RCC_OscInitStruct.PLL2.TPDFN_DIS = RCC_TPDFN_DIS_DISABLED; + + /**PLL3 Config + */ + RCC_OscInitStruct.PLL3.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL3.PLLSource = RCC_PLL3SOURCE_HSE; + RCC_OscInitStruct.PLL3.PLLM = 2; + RCC_OscInitStruct.PLL3.PLLN = 34; + RCC_OscInitStruct.PLL3.PLLP = 2; + RCC_OscInitStruct.PLL3.PLLQ = 17; + RCC_OscInitStruct.PLL3.PLLR = 37; + RCC_OscInitStruct.PLL3.PLLRGE = RCC_PLL3IFRANGE_1; + RCC_OscInitStruct.PLL3.PLLFRACV = 0x1A04; + RCC_OscInitStruct.PLL3.PLLMODE = RCC_PLL_FRACTIONAL; + RCC_OscInitStruct.PLL3.RPDFN_DIS = RCC_RPDFN_DIS_DISABLED; + RCC_OscInitStruct.PLL3.TPDFN_DIS = RCC_TPDFN_DIS_DISABLED; + + /**PLL4 Config + */ + RCC_OscInitStruct.PLL4.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL4.PLLSource = RCC_PLL4SOURCE_HSE; + RCC_OscInitStruct.PLL4.PLLM = 4; + RCC_OscInitStruct.PLL4.PLLN = 99; + RCC_OscInitStruct.PLL4.PLLP = 6; + RCC_OscInitStruct.PLL4.PLLQ = 8; + RCC_OscInitStruct.PLL4.PLLR = 8; + RCC_OscInitStruct.PLL4.PLLRGE = RCC_PLL4IFRANGE_0; + RCC_OscInitStruct.PLL4.PLLFRACV = 0; + RCC_OscInitStruct.PLL4.PLLMODE = RCC_PLL_INTEGER; + RCC_OscInitStruct.PLL4.RPDFN_DIS = RCC_RPDFN_DIS_DISABLED; + RCC_OscInitStruct.PLL4.TPDFN_DIS = RCC_TPDFN_DIS_DISABLED; + + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + /**RCC Clock Config + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_ACLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2 + |RCC_CLOCKTYPE_PCLK3|RCC_CLOCKTYPE_PCLK4 + |RCC_CLOCKTYPE_PCLK5|RCC_CLOCKTYPE_MPU; + RCC_ClkInitStruct.MPUInit.MPU_Clock = RCC_MPUSOURCE_PLL1; + RCC_ClkInitStruct.MPUInit.MPU_Div = RCC_MPU_DIV2; + RCC_ClkInitStruct.AXISSInit.AXI_Clock = RCC_AXISSOURCE_PLL2; + RCC_ClkInitStruct.AXISSInit.AXI_Div = RCC_AXI_DIV1; + RCC_ClkInitStruct.MCUInit.MCU_Clock = RCC_MCUSSOURCE_PLL3; + RCC_ClkInitStruct.MCUInit.MCU_Div = RCC_MCU_DIV1; + RCC_ClkInitStruct.APB4_Div = RCC_APB4_DIV2; + RCC_ClkInitStruct.APB5_Div = RCC_APB5_DIV4; + RCC_ClkInitStruct.APB1_Div = RCC_APB1_DIV2; + RCC_ClkInitStruct.APB2_Div = RCC_APB2_DIV2; + RCC_ClkInitStruct.APB3_Div = RCC_APB3_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /**Set the HSE division factor for RTC clock + */ + __HAL_RCC_RTC_HSEDIV(24); +} + + +/** +* @brief Peripherals Common Clock Configuration +* @retval None +*/ +void PeriphCommonClock_Config(void) { + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + /** Initializes the common periph clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_CKPER; + PeriphClkInit.CkperClockSelection = RCC_CKPERCLKSOURCE_HSE; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { + Error_Handler(); + } +} + +extern void rt_hw_systick_init(void); +extern int rt_hw_usart_init(void); +void rt_hw_board_init() +{ + /* HAL_Init() function is called at the beginning of the program */ + HAL_Init(); + + /* enable interrupt */ + __set_PRIMASK(0); + /* Configure the system clock */ + if (IS_ENGINEERING_BOOT_MODE()) { + /* Configure the system clock */ + SystemClock_Config(); + } + /* disable interrupt */ + __set_PRIMASK(1); + + rt_hw_systick_init(); + + /* Heap initialization */ +#if defined(RT_USING_HEAP) + rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END); +#endif + + /* Pin driver initialization is open by default */ +#ifdef RT_USING_PIN + rt_hw_pin_init(); +#endif + + /* USART driver initialization is open by default */ +#ifdef RT_USING_SERIAL + rt_hw_usart_init(); +#endif + + /* Set the shell console output device */ +#ifdef RT_USING_CONSOLE + rt_console_set_device(RT_CONSOLE_DEVICE_NAME); +#endif + + /* Board underlying hardware initialization */ +#ifdef RT_USING_COMPONENTS_INIT + rt_components_board_init(); +#endif +} diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/board.h b/bsp/stm32/stm32mp157a-st-ev1/board/board.h new file mode 100644 index 000000000..b23b83ee3 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/board.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-5 SummerGift first version + * 2019-04-09 WillianChan add stm32f469-st-disco bsp + */ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include +#include "stm32mp1xx.h" +#include "stm32mp1xx_hal.h" +#include "drv_common.h" +#include "drv_gpio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define STM32_FLASH_START_ADRESS ((uint32_t)0x10000000) +#define STM32_FLASH_SIZE (256 * 1024) +#define STM32_FLASH_END_ADDRESS ((uint32_t)(STM32_FLASH_START_ADRESS + STM32_FLASH_SIZE)) + +#define STM32_SRAM_SIZE (128) +#define STM32_SRAM_END ((uint32_t)0x10040000 + (STM32_SRAM_SIZE * 1024)) + +#if defined(__CC_ARM) || defined(__CLANG_ARM) +extern int Image$$RW_IRAM1$$ZI$$Limit; +#define HEAP_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit) +#elif __ICCARM__ +#pragma section="CSTACK" +#define HEAP_BEGIN (__segment_end("CSTACK")) +#else +extern int __bss_end__; +#define HEAP_BEGIN (0x10040000 + 64 * 1024) +#endif + +#define HEAP_END STM32_SRAM_END + +void SystemClock_Config(void); + +extern void _Error_Handler(char *s, int num); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.icf b/bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.icf new file mode 100644 index 000000000..9aa4aad24 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.icf @@ -0,0 +1,36 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x00000000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x10000000; +define symbol __ICFEDIT_region_ROM_end__ = 0x1003FFFF; +define symbol __ICFEDIT_region_RAM_start__ = 0x10050000; +define symbol __ICFEDIT_region_RAM_end__ = 0x1005FFFF; + +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x0400; +define symbol __ICFEDIT_size_heap__ = 0x0000; +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +/* Create region for OPENAMP */ +/* !!! These 4 lines can be commented if OPENAMP is not used !!!*/ +define symbol __OPENAMP_region_start__ = 0x10040000; +define symbol __OPENAMP_region_size__ = 0x8000; +export symbol __OPENAMP_region_start__; +export symbol __OPENAMP_region_size__; + +place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; + +place in ROM_region { readonly }; +place in RAM_region { readwrite, last block CSTACK}; \ No newline at end of file diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.lds b/bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.lds new file mode 100644 index 000000000..b2ae4c15e --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.lds @@ -0,0 +1,157 @@ +/* + * linker script for STM32F4xx with GNU ld + * bernard.xiong 2009-10-14 + */ + +/* Program Entry, set to mark it as "used" and avoid gc */ +MEMORY +{ + ROM (rx) : ORIGIN = 0x10000000, LENGTH = 256k /* 256KB flash */ + RAM (rw) : ORIGIN = 0x10040000, LENGTH = 128k /* 128K sram */ +} +ENTRY(Reset_Handler) +_system_stack_size = 0x200; + +SECTIONS +{ + .text : + { + . = ALIGN(4); + _stext = .; + KEEP(*(.isr_vector)) /* Startup code */ + + . = ALIGN(4); + *(.text) /* remaining code */ + *(.text.*) /* remaining code */ + *(.rodata) /* read-only data (constants) */ + *(.rodata*) + *(.glue_7) + *(.glue_7t) + *(.gnu.linkonce.t*) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + + . = ALIGN(4); + + PROVIDE(__ctors_start__ = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE(__ctors_end__ = .); + + . = ALIGN(4); + + _etext = .; + } > ROM = 0 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + + /* This is used by the startup in order to initialize the .data secion */ + _sidata = .; + } > ROM + __exidx_end = .; + + /* .data section which is used for initialized data */ + + .data : AT (_sidata) + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _sdata = . ; + + *(.data) + *(.data.*) + *(.gnu.linkonce.d*) + + PROVIDE(__dtors_start__ = .); + KEEP(*(SORT(.dtors.*))) + KEEP(*(.dtors)) + PROVIDE(__dtors_end__ = .); + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _edata = . ; + } >RAM + + .stack : + { + . = ALIGN(4); + _sstack = .; + . = . + _system_stack_size; + . = ALIGN(4); + _estack = .; + } >RAM + + __bss_start = .; + .bss : + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; + + *(.bss) + *(.bss.*) + *(COMMON) + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _ebss = . ; + + *(.bss.init) + } > RAM + __bss_end = .; + + _end = .; + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +} diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.sct b/bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.sct new file mode 100644 index 000000000..40d9679d1 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/linker_scripts/link.sct @@ -0,0 +1,27 @@ +; ************************************************************* +; *** Scatter-Loading Description *** +; ************************************************************* + +LR_VECTORS 0x00000000 0x00000400 { ; load region size_region + .isr_vector +0 { + startup*.o (RESET, +First) + } +} + +LR_IROM1 0x10000000 0x00040000 { ; load region size_region + ER_IROM1 0x10000000 0x00040000 { ; load address = execution address + *(InRoot$$Sections) + .ANY (+RO) + .ANY (+XO) + } + RW_IRAM1 0x10050000 0x00010000 { ; RW data + .ANY (+RW +ZI) + } + + +;; ***** Create region for OPENAMP ***** +;; *** These 4 lines can be commented if OPENAMP is not used ***** +; .resource_table +0 ALIGN 4 { ; resource table +; *(.resource_table) +; } __OpenAMP_SHMEM__ 0x10040000 EMPTY 0x8000 {} ; Shared Memory area used by OpenAMP +} diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_hard_i2c.c b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_hard_i2c.c new file mode 100644 index 000000000..f4bc430a1 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_hard_i2c.c @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2020-06-18 thread-liu the first version + */ + +#include +#include "drv_hard_i2c.h" + +//#define DRV_DEBUG +#define LOG_TAG "drv.hardi2c" +#include + +I2C_HandleTypeDef hI2c4; + +int32_t BSP_I2C4_Init(void) +{ + int32_t status = RT_EOK; + + if (HAL_I2C_GetState(&hI2c4) == HAL_I2C_STATE_RESET) + { + if (MX_I2C4_Init(&hI2c4) != HAL_OK) + { + status = -RT_EBUSY; + } + /* Init the I2C Msp */ + if (HAL_I2C_Init(&hI2c4) != HAL_OK) + { + LOG_D("I2C4 Init Error!\n"); + status = -RT_EBUSY; + } + } + return status; +} + +int32_t BSP_I2C4_DeInit(void) +{ + int32_t status = RT_EOK; + + HAL_I2C_MspDeInit(&hI2c4); + + /* Init the I2C */ + if (HAL_I2C_DeInit(&hI2c4) != HAL_OK) + { + status = -RT_EEMPTY; + } + + return status; +} + +HAL_StatusTypeDef MX_I2C4_Init(I2C_HandleTypeDef *hI2c) +{ + hI2c4.Instance = I2C4; + hI2c->Init.Timing = I2C4_TIMING; + hI2c->Init.OwnAddress1 = STPMU1_I2C_ADDRESS; + hI2c->Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hI2c->Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hI2c->Init.OwnAddress2 = 0; + hI2c->Init.OwnAddress2Masks = I2C_OA2_NOMASK; + hI2c->Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hI2c->Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + + return HAL_I2C_Init(hI2c); +} + +int32_t BSP_I2C4_WriteReg(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Length) +{ + return I2C4_WriteReg(DevAddr, Reg, I2C_MEMADD_SIZE_8BIT, pData, Length); +} + +int32_t BSP_I2C4_ReadReg(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Length) +{ + return I2C4_ReadReg(DevAddr, Reg, I2C_MEMADD_SIZE_8BIT, pData, Length); +} + +int32_t BSP_I2C4_WriteReg16(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Length) +{ + return I2C4_WriteReg(DevAddr, Reg, I2C_MEMADD_SIZE_16BIT, pData, Length); +} + +int32_t BSP_I2C4_ReadReg16(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Length) +{ + return I2C4_ReadReg(DevAddr, Reg, I2C_MEMADD_SIZE_16BIT, pData, Length); +} + +int32_t BSP_I2C4_IsReady(uint16_t DevAddr, uint32_t Trials) +{ + int32_t status = RT_EOK; + + if(HAL_I2C_IsDeviceReady(&hI2c4, DevAddr, Trials, 1000) != HAL_OK) + { + status = -RT_EBUSY; + } + + return status; +} + +static int32_t I2C4_WriteReg(uint16_t DevAddr, uint16_t Reg, uint16_t MemAddSize, uint8_t *pData, uint16_t Length) +{ + int32_t status = -RT_EIO; + + if(HAL_I2C_Mem_Write(&hI2c4, DevAddr, Reg, MemAddSize, pData, Length, 10000) == HAL_OK) + { + status = RT_EOK; + } + + return status; +} + +static int32_t I2C4_ReadReg(uint16_t DevAddr, uint16_t Reg, uint16_t MemAddSize, uint8_t *pData, uint16_t Length) +{ + int32_t status = -RT_EIO; + + if (HAL_I2C_Mem_Read(&hI2c4, DevAddr, Reg, MemAddSize, pData, Length, 10000) == HAL_OK) + { + status = RT_EOK; + } + + return status; +} diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_hard_i2c.h b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_hard_i2c.h new file mode 100644 index 000000000..e3ec157d0 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_hard_i2c.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2020-06-18 thread-liu the first version + */ + +#ifndef __DRV_HARD_I2C_H__ +#define __DRV_HARD_I2C_H__ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32mp1xx_hal.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define STPMU1_I2C_ADDRESS ((0x33 & 0x7F) << 1) + +#ifndef I2C_SPEED +#define I2C_SPEED ((uint32_t)100000) +#endif /* I2C_SPEED */ + +#ifndef I2C4_TIMING +#define I2C4_TIMING ((uint32_t)0x10805E89) +#endif + +static int32_t I2C4_WriteReg(uint16_t DevAddr, uint16_t MemAddSize, uint16_t Reg, uint8_t *pData, uint16_t Length); +static int32_t I2C4_ReadReg(uint16_t DevAddr, uint16_t MemAddSize, uint16_t Reg, uint8_t *pData, uint16_t Length); + +int32_t BSP_I2C4_Init(void); +int32_t BSP_I2C4_DeInit(void); +int32_t BSP_I2C4_WriteReg(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Length); +int32_t BSP_I2C4_ReadReg(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Length); +int32_t BSP_I2C4_WriteReg16(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Length); +int32_t BSP_I2C4_ReadReg16(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Length); +int32_t BSP_I2C4_IsReady(uint16_t DevAddr, uint32_t Trials); + +HAL_StatusTypeDef MX_I2C4_Init(I2C_HandleTypeDef *hI2c); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_lptim.c b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_lptim.c new file mode 100644 index 000000000..2b8d63b0a --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_lptim.c @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2020-06-19 thread-liu first version + */ + +#include + +#ifdef BSP_USING_LPTIM +#include "drv_config.h" +#include +#include + +//#define DRV_DEBUG +#define LOG_TAG "drv.lptimer" +#include + +LPTIM_HandleTypeDef hlptim1; + +void LPTIM1_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + HAL_LPTIM_IRQHandler(&hlptim1); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +void HAL_LPTIM_AutoReloadMatchCallback(LPTIM_HandleTypeDef *hlptim) +{ + if(hlptim->Instance == LPTIM1) + { + rt_kprintf("hello rt-thread!\n"); + } +} + +static int lptim_control(uint8_t pre_value) +{ + if(pre_value > 7) + { + pre_value = 7; + } + hlptim1.Instance->CFGR &= ~(7 << 9); /* clear PRESC[2:0] */ + hlptim1.Instance->CFGR |= pre_value << 9; /* set PRESC[2:0] */ + + return RT_EOK; +} + +/** + * This function initialize the lptim + */ +static int lptim_init(void) +{ + hlptim1.Instance = LPTIM1; + hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC; + hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1; + hlptim1.Init.UltraLowPowerClock.Polarity = LPTIM_CLOCKPOLARITY_RISING; + hlptim1.Init.UltraLowPowerClock.SampleTime = LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION; + hlptim1.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE; + hlptim1.Init.OutputPolarity = LPTIM_OUTPUTPOLARITY_HIGH; + hlptim1.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE; + hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL; + hlptim1.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO; + hlptim1.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO; + if (HAL_LPTIM_Init(&hlptim1) != HAL_OK) + { + LOG_D("LPTIM Init Error!\n"); + return -RT_ERROR; + } + /* ### Start counting in interrupt mode ############################# */ + if (HAL_LPTIM_Counter_Start_IT(&hlptim1, 5000) != HAL_OK) + { + LOG_D("LPTIM Start Counting Error!\n"); + return -RT_ERROR; + } + + return RT_EOK; +} + +static int lptim_deinit() +{ + if (HAL_LPTIM_DeInit(&hlptim1) != HAL_OK) + { + LOG_D("LPTIM Deinit Error!\n"); + return -RT_ERROR; + } + + return RT_EOK; +} + +static int lptim_sample(int argc, char *argv[]) +{ + if (argc > 1) + { + if (!strcmp(argv[1], "run")) + { + lptim_init(); + } + else if (!strcmp(argv[1], "stop")) + { + lptim_deinit(); + } + else if (!strcmp(argv[1], "set")) + { + if (argc > 2) + { + lptim_control(atoi(argv[2])); + } + } + } + else + { + rt_kprintf("Usage:\n"); + rt_kprintf("lptim_sample run - open lptim, shell will printf 'hello rt-thread'\n"); + rt_kprintf("lptim_sample set - set the lptim prescaler, lptim_sample set [0 - 7]\n"); + } + + return RT_EOK; +} +MSH_CMD_EXPORT(lptim_sample, low power timer sample); + +#endif diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_wwdg.c b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_wwdg.c new file mode 100644 index 000000000..58c5c3f30 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/ports/drv_wwdg.c @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2020-06-18 thread-liu the first version + */ + +#include + +#if defined(BSP_USING_WWDG) +#include "drv_config.h" +#include +#include + +//#define DRV_DEBUG +#define LOG_TAG "drv.wwg" +#include + +#define LED5_PIN GET_PIN(A, 14) + +WWDG_HandleTypeDef hwwdg1; + +void WWDG1_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + HAL_WWDG_IRQHandler(&hwwdg1); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef* hwwdg) +{ + static unsigned char led_value = 0x00; + + led_value = !led_value; + + if(hwwdg->Instance==WWDG1) + { + HAL_WWDG_Refresh(&hwwdg1); + rt_pin_write(LED5_PIN, led_value); + } +} + +static void wwdg_init() +{ + rt_pin_mode(LED5_PIN, PIN_MODE_OUTPUT); + + hwwdg1.Instance = WWDG1; + hwwdg1.Init.Prescaler = WWDG_PRESCALER_8; + hwwdg1.Init.Window = 0X5F; + hwwdg1.Init.Counter = 0x7F; + hwwdg1.Init.EWIMode = WWDG_EWI_ENABLE; + + if (HAL_WWDG_Init(&hwwdg1) != HAL_OK) + { + Error_Handler(); + } +} + +static void wwdg_control(uint8_t pre_value) +{ + if(pre_value > 7) + { + pre_value = 7; + } + hwwdg1.Instance->CFR &= ~(7 << 11); /* clear WDGTB[2:0] */ + hwwdg1.Instance->CFR |= pre_value << 11; /* set WDGTB[2:0] */ +} + +static int wwdg_sample(int argc, char *argv[]) +{ + if (argc > 1) + { + if (!strcmp(argv[1], "run")) + { + wwdg_init(); + } + else if (!strcmp(argv[1], "set")) + { + if (argc > 2) + { + wwdg_control(atoi(argv[2])); + } + } + } + else + { + rt_kprintf("Usage:\n"); + rt_kprintf("wwdg_sample run - open wwdg, when feed wwdg in wwdg irq, the LD5 will blink\n"); + rt_kprintf("wwdg_sample set - set the wwdg prescaler, wwdg_sample set [0 - 7]\n"); + } + + return RT_EOK; +} +MSH_CMD_EXPORT(wwdg_sample, window watch dog sample); + +#endif diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/stpmic.c b/bsp/stm32/stm32mp157a-st-ev1/board/ports/stpmic.c new file mode 100644 index 000000000..42a252e67 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/ports/stpmic.c @@ -0,0 +1,1225 @@ +/** + ****************************************************************************** + * @file stpmic.c + * @author MCD Application Team + * @brief This sample code provides hardware semaphore using HSEM for + * synchronization and mutual exclusion between heterogeneous processors + * and those not operating under a single, shared operating system. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +#include +#include +#include +#include "drv_hard_i2c.h" + +/* Definition of PMIC <=> stm32mp1 Signals */ +#define PMIC_INTn_PIN GPIO_PIN_0 +#define PMIC_INTn_PORT GPIOA +#define PMIC_INTn_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define PMIC_INTn_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() + +#define BSP_PMIC_PWRCTRL_PIN_Assert() HAL_GPIO_WritePin(PMIC_PWRCTRL_PORT, PMIC_PWRCTRL_PIN, GPIO_PIN_RESET); +#define BSP_PMIC_PWRCTRL_PIN_Pull() HAL_GPIO_WritePin(PMIC_PWRCTRL_PORT, PMIC_PWRCTRL_PIN, GPIO_PIN_SET); + +/** + * @} + */ + + /** @defgroup STM32MP15XX_EVAL_STPMU_Private_Defines Private Defines + * @{ + */ +/* Private typedef -----------------------------------------------------------*/ +typedef struct { + PMIC_RegulId_TypeDef id; + uint16_t *voltage_table; + uint8_t voltage_table_size; + uint8_t control_reg; + uint8_t low_power_reg; + uint8_t rank ; + uint8_t nvm_info ; +} regul_struct; + +/* Private define ------------------------------------------------------------*/ +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) + +/* Those define should reflect NVM_USER section + * For ES Eval Configuration this is specified as + * 0xF7, + 0x92, + 0xC0, + 0x02, + 0xFA, + 0x30, + 0x00, + 0x33, + * */ +#define NVM_SECTOR3_REGISTER_0 0xF7 +#define NVM_SECTOR3_REGISTER_1 0x92 +#define NVM_SECTOR3_REGISTER_2 0xC0 +#define NVM_SECTOR3_REGISTER_3 0x02 +#define NVM_SECTOR3_REGISTER_4 0xFA +#define NVM_SECTOR3_REGISTER_5 0x30 +#define NVM_SECTOR3_REGISTER_6 0x00 +#define NVM_SECTOR3_REGISTER_7 0x33 + +/* nvm_vinok_hyst: VINOK hysteresis voltage + 00: 200mV + 01: 300mV + 10: 400mV + 11: 500mV + * + * nvm_vinok: VINOK threshold voltage + 00: 3.1v + 01: 3.3v + 10: 3.5v + 11: 4.5v + Otp_ldo4_forced : + 0: LDO4 ranks following OTP_RANK_LDO4<1:0> + if VBUS_OTG or SWOUT is turn ON condition + 1: LDO4 follows normal ranking procedure + + nvm_longkeypress: + 0: Turn OFF on long key press inactive + 1: Turn OFF on long key press active + + nvm_autoturnon: + 0: PMIC doesn’t start automatically on VIN rising + 1: PMIC starts automatically on VIN rising + + nvm_cc_keepoff : + 0: short circuit does not turn OFF PMIC + 1: short circuit turn OFF PMIC and keep it OFF till CC_flag is reset + + * + */ +#define OTP_VINOK_HYST ((NVM_SECTOR3_REGISTER_0 & 0xC0) >> 6) // nvm_vinok_hyst +#define OTP_VINOK ((NVM_SECTOR3_REGISTER_0 & 0x30) >> 4) // nvm_vinok +#define OTP_LDO4_FORCED ((NVM_SECTOR3_REGISTER_0 & 0x08) >> 3) // Otp_ldo4_forced +#define OTP_LONGKEYPRESSED ((NVM_SECTOR3_REGISTER_0 & 0x04) >> 2) // nvm_longkeypress +#define OTP_AUTOTURNON ((NVM_SECTOR3_REGISTER_0 & 0x02) >> 1) // nvm_autoturnon +#define OTP_CC_KEEPOFF ((NVM_SECTOR3_REGISTER_0 & 0x01)) // nvm_cc_keepoff + +/* + * nvm_rank_buck4: + 00: rank0 + 01: rank1 + 10: rank2 + 11: rank3 + nvm_rank_buck3: + 00: rank0 + 01: rank1 + 10: rank2 + 11: rank3 + nvm_rank_buck2: + 00: rank0 + 01: rank1 + 10: rank2 + 11: rank3 + nvm_rank_buck1: + 00: rank0 + 01: rank1 + 10: rank2 + 11: rank3 + * + */ +#define OTP_RANK_BUCK4 ((NVM_SECTOR3_REGISTER_1 & 0xC0) >> 6) // nvm_rank_buck4 +#define OTP_RANK_BUCK3 ((NVM_SECTOR3_REGISTER_1 & 0x30) >> 4) // nvm_rank_buck3 +#define OTP_RANK_BUCK2 ((NVM_SECTOR3_REGISTER_1 & 0x0C) >> 2) // nvm_rank_buck2 +#define OTP_RANK_BUCK1 ((NVM_SECTOR3_REGISTER_1 & 0x03)) // nvm_rank_buck1 + + +/* + * nvm_rank_ldo4: + 00: rank0 + 01: rank1 + 10: rank2 + 11: rank3 + nvm_rank_ldo3: + 00: rank0 + 01: rank1 + 10: rank2 + 11: rank3 + nvm_rank_ldo2: + 00: rank0 + 01: rank1 + 10: rank2 + 11: rank3 + nvm_rank_ldo1: + 00: rank0 + 01: rank1 + 10: rank2 + 11: rank3 + * + */ +#define OTP_RANK_LDO4 ((NVM_SECTOR3_REGISTER_2 & 0xC0) >> 6) // nvm_rank_ldo4 +#define OTP_RANK_LDO3 ((NVM_SECTOR3_REGISTER_2 & 0x30) >> 4) // nvm_rank_ldo3 +#define OTP_RANK_LDO2 ((NVM_SECTOR3_REGISTER_2 & 0x0C) >> 2) // nvm_rank_ldo2 +#define OTP_RANK_LDO1 ((NVM_SECTOR3_REGISTER_2 & 0x03)) // nvm_rank_ldo1 + +/* + * nvm_clamp_output_buck: Clamp output value to 1.3V max + 0: output_buck4<5:0> not clamped + 1: output_buck4<5:0> to b011100(1.3V) + + nvm_bypass_mode_ldo3: LDO3 forced bypass mode + 0: LDO3 not in bypass mode + 1: LDO3 in bypass mode + + nvm_rank_vrefddr: + 00: rank0 + 01: rank1 + 10: rank2 + 11: rank3 + + nvm_rank_ldo6: + 00: rank0 + 01: rank1 + 10: rank2 + 11: rank3 + +nvm_rank_ldo5: + 00: rank0 + 01: rank1 + 10: rank2 + 11: rank3 + * + */ +#define OTP_CLAMP_OUTPUT_BUCK4 ((NVM_SECTOR3_REGISTER_3 & 0x80) >> 7) // nvm_clamp_output_buck4 +#define OTP_BYPASS_MODE_LDO3 ((NVM_SECTOR3_REGISTER_3 & 0x40) >> 6) // nvm_bypass_mode_ldo3 +#define OTP_RANK_VREFDDR ((NVM_SECTOR3_REGISTER_3 & 0x30) >> 4) // nvm_rank_vrefddr +#define OTP_RANK_LDO6 ((NVM_SECTOR3_REGISTER_3 & 0x0C) >> 2) // nvm_rank_ldo6 +#define OTP_RANK_LDO5 ((NVM_SECTOR3_REGISTER_3 & 0x03)) // nvm_rank_ldo5 + +/* + * nvm_output_buck4: Buck4 default output selection + 00: 1.15V + 01: 1.2V + 10: 1.8V + 11: 3.3V + nvm_output_buck3: Buck3 default output selection + 00: 1.2V + 01: 1.8V + 10: 3.0V + 11: 3.3V + nvm_output_buck2: Buck2 default output selection + 00: 1.1V + 01: 1.2V + 10: 1.35V + 11: 1.5V + nvm_output_buck1: Buck1 default output selection + 00: 1.1V + 01: 1.15V + 10: 1.2V + 11: 1.25V + * + */ +#define OTP_OUTPUT_BUCK4 ((NVM_SECTOR3_REGISTER_4 & 0xC0) >> 6) // nvm_output_buck4 +#define OTP_OUTPUT_BUCK3 ((NVM_SECTOR3_REGISTER_4 & 0x30) >> 4) // nvm_output_buck3 +#define OTP_OUTPUT_BUCK2 ((NVM_SECTOR3_REGISTER_4 & 0x0C) >> 2) // nvm_output_buck2 +#define OTP_OUTPUT_BUCK1 ((NVM_SECTOR3_REGISTER_4 & 0x03)) // nvm_output_buck1 + +/* + * [7] OTP_SWOFF_BY_BOOST_OVP: + 0 -> SWOUT will not turnoff bu boost OVP + 1 -> SWOUT will be turnoff by BOOST OVP + + [6] reserved + + [5:4] nvm_output_ldo3: LDO3 default output selection + 00: 1.8V + 01: 2.5V + 10: 3.3V + 11: output_buck2<4:0>/2 (VTT termination for DDR3 x32, Analog divider implemented in Analog) + + [3:2] nvm_output_ldo2: LDO2 default output selection + 00: 1.8V + 01: 2.5V + 10: 2.9V + 11: 3.3V + + [1:0] nvm_output_ldo1: LDO1 default output selection + 00: 1.8V + 01: 2.5V + 10: 2.9V + 11: 3.3V + + * + */ +#define OTP_SWOFF_BY_BOOST_OVP ((NVM_SECTOR3_REGISTER_5 & 0x80) >> 7) // OTP_SWOFF_BY_BOOST_OVP +#define OTP_OUTPUT_LDO3 ((NVM_SECTOR3_REGISTER_5 & 0x30) >> 4) // nvm_output_ldo3 +#define OTP_OUTPUT_LDO2 ((NVM_SECTOR3_REGISTER_5 & 0x0C) >> 2) // nvm_output_ldo2 +#define OTP_OUTPUT_LDO1 ((NVM_SECTOR3_REGISTER_5 & 0x03)) // nvm_output_ldo1 + +/* + * [7:4] reserved + * + [3:2] nvm_output_ldo6: LDO6 default output selection + 00: 1.0V + 01: 1.2V + 10: 1.8V + 11: 3.3V + + [1:0] nvm_output_ldo5: LDO5 default output selection + 00: 1.8V + 01: 2.5V + 10: 2.9V + 11 : 3.3V + * + */ + +#define OTP_OUTPUT_LDO6 ((NVM_SECTOR3_REGISTER_6 & 0x0C) >> 2) // nvm_output_ldo6 +#define OTP_OUTPUT_LDO5 ((NVM_SECTOR3_REGISTER_6 & 0x03)) // nvm_output_ldo5 + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* I2C handler declaration */ +I2C_HandleTypeDef I2cHandle; +extern I2C_HandleTypeDef hI2c4; + +uint16_t buck1_voltage_table[] = { + 600, + 625, + 650, + 675, + 700, + 725, + 750, + 775, + 800, + 825, + 850, + 875, + 900, + 925, + 950, + 975, + 1000, + 1025, + 1050, + 1075, + 1100, + 1125, + 1150, + 1175, + 1200, + 1225, + 1250, + 1275, + 1300, + 1325, + 1350, + 1350,// 31 1,35stm32mp15xx_eval_stpmu1.c +}; + +uint16_t buck2_voltage_table[] = { + 1000, // 1 + 1000, // + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1050, // 1,05 + 1050, // 1,05 + 1100, // 1,1 + 1100, // 1,1 + 1150, // 1,15 + 1150, // 1,15 + 1200, // 1,2 + 1200, // 1,2 + 1250, // 1,25 + 1250, // 1,25 + 1300, // 1,3 + 1300, // 1,3 + 1350, // 1,35 + 1350, // 1,35 + 1400, // 1,4 + 1400, // 1,4 + 1450, // 1,45 + 1450, // 1,45 + 1500, // 1,5 +}; + +uint16_t buck3_voltage_table[] = { + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1000, // 1 + 1100, // 1,1 + 1100, // 1,1 + 1100, // 1,1 + 1100, // 1,1 + 1200, // 1,2 + 1200, // 1,2 + 1200, // 1,2 + 1200, // 1,2 + 1300, // 1,3 + 1300, // 1,3 + 1300, // 1,3 + 1300, // 1,3 + 1400, // 1,4 + 1400, // 1,4 + 1400, // 1,4 + 1400, // 1,4 + 1500, // 1,5 + 1600, // 1,6 + 1700, // 1,7 + 1800, // 1,8 + 1900, // 1,9 + 2000, // 2 + 2100, // 2,1 + 2200, // 2,2 + 2300, // 2,3 + 2400, // 2,4 + 2500, // 2,5 + 2600, // 2,6 + 2700, // 2,7 + 2800, // 2,8 + 2900, // 2,9 + 3000, // 3 + 3100, // 3,1 + 3200, // 3,2 + 3300, // 3,3 + 3400, // 3,4 +}; + +uint16_t buck4_voltage_table[] = { + 600, + 625, + 650, + 675, + 700, + 725, + 750, + 775, + 800, + 825, + 850, + 875, + 900, + 925, + 950, + 975, + 1000, + 1025, + 1050, + 1075, + 1100, + 1125, + 1150, + 1175, + 1200, + 1225, + 1250, + 1275, + 1300, + 1300, + 1350, + 1350,// 31 1,35 + 1400,// 32 1,40 + 1400,// 33 1,40 + 1450,// 34 1,45 + 1450,// 35 1,45 + 1500,// 36 1,5 + 1600,// 37 1,6 + 1700,// 38 1,7 + 1800,// 39 1,8 + 1900,// 40 1,9 + 2000,// 41 2,0 + 2100,// 42 2,1 + 2200,// 43 2,2 + 2300,// 44 2,3 + 2400,// 45 2,4 + 2500,// 46 2,5 + 2600,// 47 2,6 + 2700,// 48 2,7 + 2800,// 49 2,8 + 2900,// 50 2,9 + 3000,// 51 3,0 + 3100,// 52 3,1 + 3200,// 53 3,2 + 3300,// 54 3,3 + 3400,// 55 3,4 + 3500,// 56 3,5 + 3600,// 57 3,6 + 3700,// 58 3,7 + 3800,// 59 3,8 + 3900,// 60 3,9 +}; + +uint16_t ldo1_voltage_table[] = { + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1800, // 1,8 + 1900, // 1,9 + 2000, // 2 + 2100, // 2,1 + 2200, // 2,2 + 2300, // 2,3 + 2400, // 2,4 + 2500, // 2,5 + 2600, // 2,6 + 2700, // 2,7 + 2800, // 2,8 + 2900, // 2,9 + 3000, // 3 + 3100, // 3,1 + 3200, // 3,2 + 3300, // 3,3 +}; + +uint16_t ldo2_voltage_table[] = { + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1800, // 1,8 + 1900, // 1,9 + 2000, // 2 + 2100, // 2,1 + 2200, // 2,2 + 2300, // 2,3 + 2400, // 2,4 + 2500, // 2,5 + 2600, // 2,6 + 2700, // 2,7 + 2800, // 2,8 + 2900, // 2,9 + 3000, // 3 + 3100, // 3,1 + 3200, // 3,2 + 3300, // 3,3 +}; + +uint16_t ldo3_voltage_table[] = { + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1800, // 1,8 + 1900, // 1,9 + 2000, // 2 + 2100, // 2,1 + 2200, // 2,2 + 2300, // 2,3 + 2400, // 2,4 + 2500, // 2,5 + 2600, // 2,6 + 2700, // 2,7 + 2800, // 2,8 + 2900, // 2,9 + 3000, // 3 + 3100, // 3,1 + 3200, // 3,2 + 3300, // 3,3 + 3300, // 3,3 + 3300, // 3,3 + 3300, // 3,3 + 3300, // 3,3 + 3300, // 3,3 + 3300, // 3,3 + 0xFFFF, // VREFDDR +}; + + +uint16_t ldo5_voltage_table[] = { + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1700, // 1,7 + 1800, // 1,8 + 1900, // 1,9 + 2000, // 2 + 2100, // 2,1 + 2200, // 2,2 + 2300, // 2,3 + 2400, // 2,4 + 2500, // 2,5 + 2600, // 2,6 + 2700, // 2,7 + 2800, // 2,8 + 2900, // 2,9 + 3000, // 3 + 3100, // 3,1 + 3200, // 3,2 + 3300, // 3,3 + 3400, // 3,4 + 3500, // 3,5 + 3600, // 3,6 + 3700, // 3,7 + 3800, // 3,8 + 3900, // 3,9 +}; + +uint16_t ldo6_voltage_table[] = { + 900, // 0,9 + 1000, // 1,0 + 1100, // 1,1 + 1200, // 1,2 + 1300, // 1,3 + 1400, // 1,4 + 1500, // 1,5 + 1600, // 1,6 + 1700, // 1,7 + 1800, // 1,8 + 1900, // 1,9 + 2000, // 2 + 2100, // 2,1 + 2200, // 2,2 + 2300, // 2,3 + 2400, // 2,4 + 2500, // 2,5 + 2600, // 2,6 + 2700, // 2,7 + 2800, // 2,8 + 2900, // 2,9 + 3000, // 3 + 3100, // 3,1 + 3200, // 3,2 + 3300, // 3,3 +}; + + +uint16_t ldo4_voltage_table[] = { + 3300, // 3,3 +}; + +uint16_t vref_ddr_voltage_table[] = { + 3300, // 3,3 +}; + +/* + Table of Regulators in PMIC SoC +*/ + + + +regul_struct regulators_table[] = { + { + .id = STPMU1_BUCK1, + .voltage_table = buck1_voltage_table, + .voltage_table_size = ARRAY_SIZE(buck1_voltage_table), + .control_reg = BUCK1_CONTROL_REG, + .low_power_reg = BUCK1_PWRCTRL_REG, + .rank = OTP_RANK_BUCK1, + }, + { + .id = STPMU1_BUCK2, + .voltage_table = buck2_voltage_table, + .voltage_table_size = ARRAY_SIZE(buck2_voltage_table), + .control_reg = BUCK2_CONTROL_REG, + .low_power_reg = BUCK2_PWRCTRL_REG, + .rank = OTP_RANK_BUCK2, + }, + { + .id = STPMU1_BUCK3, + .voltage_table = buck3_voltage_table, + .voltage_table_size = ARRAY_SIZE(buck3_voltage_table), + .control_reg = BUCK3_CONTROL_REG, + .low_power_reg = BUCK3_PWRCTRL_REG, + .rank = OTP_RANK_BUCK3, + }, + { + .id = STPMU1_BUCK4, + .voltage_table = buck4_voltage_table, + .voltage_table_size = ARRAY_SIZE(buck4_voltage_table), + .control_reg = BUCK4_CONTROL_REG, + .low_power_reg = BUCK4_PWRCTRL_REG, + .rank = OTP_RANK_BUCK4, + }, + { + .id = STPMU1_LDO1, + .voltage_table = ldo1_voltage_table, + .voltage_table_size = ARRAY_SIZE(ldo1_voltage_table), + .control_reg = LDO1_CONTROL_REG, + .low_power_reg = LDO1_PWRCTRL_REG, + .rank = OTP_RANK_LDO1, + }, + { + .id = STPMU1_LDO2, + .voltage_table = ldo2_voltage_table, + .voltage_table_size = ARRAY_SIZE(ldo2_voltage_table), + .control_reg = LDO2_CONTROL_REG, + .low_power_reg = LDO2_PWRCTRL_REG, + .rank = OTP_RANK_LDO2, + }, + + { + .id = STPMU1_LDO3, + .voltage_table = ldo3_voltage_table, + .voltage_table_size = ARRAY_SIZE(ldo3_voltage_table), + .control_reg = LDO3_CONTROL_REG, + .low_power_reg = LDO3_PWRCTRL_REG, + .rank = OTP_RANK_LDO3, + }, + { + .id = STPMU1_LDO4, + .voltage_table = ldo4_voltage_table, + .voltage_table_size = ARRAY_SIZE(ldo4_voltage_table), + .control_reg = LDO4_CONTROL_REG, + .low_power_reg = LDO4_PWRCTRL_REG, + .rank = OTP_RANK_LDO4, + }, + { + .id = STPMU1_LDO5, + .voltage_table = ldo5_voltage_table , + .voltage_table_size = ARRAY_SIZE(ldo5_voltage_table), + .control_reg = LDO5_CONTROL_REG, + .low_power_reg = LDO5_PWRCTRL_REG, + .rank = OTP_RANK_LDO5, + }, + { + .id = STPMU1_LDO6, + .voltage_table = ldo6_voltage_table , + .voltage_table_size = ARRAY_SIZE(ldo6_voltage_table), + .control_reg = LDO6_CONTROL_REG, + .low_power_reg = LDO6_PWRCTRL_REG, + .rank = OTP_RANK_LDO6, + }, + { + .id = STPMU1_VREFDDR, + .voltage_table = vref_ddr_voltage_table , + .voltage_table_size = ARRAY_SIZE(vref_ddr_voltage_table), + .control_reg = VREF_DDR_CONTROL_REG, + .low_power_reg = VREF_DDR_PWRCTRL_REG, + .rank = OTP_RANK_VREFDDR, + }, +}; + +#define MAX_REGUL ARRAY_SIZE(regulators_table) + + +/* Private function prototypes -----------------------------------------------*/ +void STPMU1_IrqHandler(void); +void STPMU1_INTn_Callback(PMIC_IRQn IRQn); +static void My_Error_Handler(void); +static regul_struct *STPMU1_Get_Regulator_Data(PMIC_RegulId_TypeDef id); +static uint8_t STPMU1_Voltage_Find_Index(PMIC_RegulId_TypeDef id, uint16_t milivolts); + +/* Private functions ---------------------------------------------------------*/ + +static regul_struct *STPMU1_Get_Regulator_Data(PMIC_RegulId_TypeDef id) +{ + uint8_t i ; + + for (i = 0 ; i < MAX_REGUL ; i++ ) + { + if (id == regulators_table[i].id) + return ®ulators_table[i]; + } + /* id not found */ + My_Error_Handler(); + return NULL; +} + +static uint8_t STPMU1_Voltage_Find_Index(PMIC_RegulId_TypeDef id, uint16_t milivolts) +{ + regul_struct *regul = STPMU1_Get_Regulator_Data(id); + uint8_t i; + for ( i = 0 ; i < regul->voltage_table_size ; i++) + { + if ( regul->voltage_table[i] == milivolts ) { + //printf("idx:%d for %dmV\n\r", (int)i, (int)milivolts); + return i; + } + } + /* voltage not found */ + My_Error_Handler(); + return 0; +} + +void STPMU1_Enable_Interrupt(PMIC_IRQn IRQn) +{ + uint8_t irq_reg , irq_reg_value ; + + if (IRQn >= IRQ_NR) + return ; + + /* IRQ register is IRQ Number divided by 8 */ + irq_reg = IRQn >> 3 ; + + /* value to be set in IRQ register corresponds to BIT(7-N) where N is the Interrupt id modulo 8 */ + irq_reg_value = 1 << ( 7 - ( IRQn%8 ) ); + + /* Clear previous event stored in latch */ + STPMU1_Register_Write(ITCLEARLATCH1_REG+irq_reg, irq_reg_value ); + + /* Clear relevant mask to enable interrupt */ + STPMU1_Register_Write(ITCLEARMASK1_REG+irq_reg, irq_reg_value ); + +} + +extern void STPMU1_Disable_Interrupt(PMIC_IRQn IRQn) +{ + uint8_t irq_reg , irq_reg_value ; + + if (IRQn >= IRQ_NR) + return ; + + /* IRQ register is IRQ Number divided by 8 */ + irq_reg = IRQn >> 3 ; + + /* value to be set in IRQ register corresponds to BIT(7-N) where N is the Interrupt id modulo 8 */ + irq_reg_value = 1 << ( 7 - ( IRQn%8 ) ); + + /* Clear previous event stored in latch */ + STPMU1_Register_Write(ITCLEARLATCH1_REG+irq_reg, irq_reg_value ); + + /* Set relevant mask to disable interrupt */ + STPMU1_Register_Write(ITSETMASK1_REG+irq_reg, irq_reg_value ); +} + + +void STPMU1_IrqHandler(void) +{ + uint8_t irq_reg,mask,latch_events,i; + + for (irq_reg = 0 ; irq_reg < STM32_PMIC_NUM_IRQ_REGS ; irq_reg++) + { + /* Get latch events & active mask from register */ + mask = STPMU1_Register_Read(ITMASK1_REG+irq_reg); + latch_events = STPMU1_Register_Read(ITLATCH1_REG+irq_reg) & ~mask ; + + /* Go through all bits for each register */ + for (i = 0 ; i < 8 ; i++ ) + { + if ( latch_events & ( 1 << i ) ) + { + /* Callback with parameter computes as "PMIC Interrupt" enum */ + STPMU1_INTn_Callback( (PMIC_IRQn )(irq_reg*8 + (7-i))); + } + } + /* Clear events in appropriate register for the event with mask set */ + STPMU1_Register_Write(ITCLEARLATCH1_REG+irq_reg, latch_events ); + } +} + + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +static void My_Error_Handler(void) +{ + while(1) + { + HAL_Delay(500); + } +} + + +void STPMU1_Sw_Reset(void) +{ + /* Write 1 in bit 0 of MAIN_CONTROL Register */ + STPMU1_Register_Update(MAIN_CONTROL_REG, SET , SOFTWARE_SWITCH_OFF_ENABLED ); +} + +void STPMU1_Regulator_Enable(PMIC_RegulId_TypeDef id) +{ + regul_struct *regul = STPMU1_Get_Regulator_Data(id); + + STPMU1_Register_Update(regul->control_reg,BIT(0),BIT(0)); +} + +void STPMU1_Regulator_Disable(PMIC_RegulId_TypeDef id) +{ + regul_struct *regul = STPMU1_Get_Regulator_Data(id); + + STPMU1_Register_Update(regul->control_reg,0,BIT(0)); +} + +uint8_t STPMU1_Is_Regulator_Enabled(PMIC_RegulId_TypeDef id) +{ + uint8_t val ; + + regul_struct *regul = STPMU1_Get_Regulator_Data(id); + + val = STPMU1_Register_Read(regul->control_reg); + + return (val&0x1); +} + +void STPMU1_Regulator_Voltage_Set(PMIC_RegulId_TypeDef id,uint16_t milivolts) +{ + uint8_t voltage_index = STPMU1_Voltage_Find_Index(id,milivolts); + regul_struct *regul = STPMU1_Get_Regulator_Data(id); + STPMU1_Register_Update(regul->control_reg, voltage_index<<2 , 0xFC ); +} + +/* register direct access */ +uint8_t STPMU1_Register_Read(uint8_t register_id) +{ + uint32_t status = RT_EOK; + uint8_t Value = 0; + + status = BSP_I2C4_ReadReg(STPMU1_I2C_ADDRESS, (uint16_t)register_id, &Value, 1); + + /* Check the communication status */ + if(status != RT_EOK) + { + My_Error_Handler(); + } + return Value; +} + +void STPMU1_Register_Write(uint8_t register_id, uint8_t value) +{ + uint32_t status = RT_EOK; + + status = BSP_I2C4_WriteReg(STPMU1_I2C_ADDRESS, (uint16_t)register_id, &value, 1); + + /* Check the communication status */ + if(status != RT_EOK) + { + My_Error_Handler(); + } + + /* verify register content */ + if ((register_id!=WATCHDOG_CONTROL_REG) && (register_id<=0x40)) + { + uint8_t readval = STPMU1_Register_Read(register_id); + if (readval != value) + { + My_Error_Handler(); + } + } +} + +void STPMU1_Register_Update(uint8_t register_id, uint8_t value, uint8_t mask) +{ + uint8_t initial_value ; + + initial_value = STPMU1_Register_Read(register_id); + + /* Clear bits to update */ + initial_value &= ~mask; + + /* Update appropriate bits*/ + initial_value |= ( value & mask ); + + /* Send new value on I2C Bus */ + STPMU1_Register_Write(register_id, initial_value); + + return ; +} + +/* + * + * PMIC init + * pmic provides power supply on this board + * it is configured to turn off some power supply in standby mode + * + */ +static uint32_t BSP_PMIC_MspInit(I2C_HandleTypeDef *hi2c) +{ + uint32_t status = RT_EOK; + GPIO_InitTypeDef GPIO_InitStruct; + + /*##-1- Configure the I2C clock source, GPIO and Interrupt #*/ + BSP_I2C4_Init(); + + /*##-2- Configure PMIC GPIOs Interface ########################################*/ + + /* INTn - Interrupt Line - Active Low (Falling Edge) */ + PMIC_INTn_CLK_ENABLE(); + GPIO_InitStruct.Pin = PMIC_INTn_PIN; + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + GPIO_InitStruct.Alternate = 0 ; + HAL_GPIO_Init(PMIC_INTn_PORT, &GPIO_InitStruct); + + /* Enable and set INTn EXTI Interrupt */ +#if defined(CORE_CA7) + IRQ_SetPriority(EXTI0_IRQn, 0); + IRQ_Enable(EXTI0_IRQn); +#elif defined(CORE_CM4) + HAL_NVIC_SetPriority(EXTI0_IRQn, 0x03, 0x00); + HAL_NVIC_EnableIRQ(EXTI0_IRQn); +#endif + + return status; +} + +static uint32_t BSP_PMIC_MspDeInit(I2C_HandleTypeDef *hi2c) +{ + uint32_t status = RT_EOK; + /*##-1- Reset I2C Clock / Disable peripherals and GPIO Clocks###############*/ + status = BSP_I2C4_DeInit(); + + /*##-2- Disable PMIC clk ###########################################*/ + PMIC_INTn_CLK_DISABLE(); + + /*##-3- Disable the NVIC for PMIC ##########################################*/ +#if defined(CORE_CA7) + IRQ_Disable(EXTI0_IRQn); +#elif defined(CORE_CM4) + HAL_NVIC_DisableIRQ(EXTI0_IRQn); +#endif + HAL_GPIO_DeInit(PMIC_INTn_PORT,PMIC_INTn_PIN); + + return status; +} + +uint32_t BSP_PMIC_Is_Device_Ready(void) +{ + int32_t status = RT_EOK; + + /* Write the TxBuffer1 at @0, then read @0 when device ready */ + if (BSP_I2C4_IsReady(STPMU1_I2C_ADDRESS, 1) != RT_EOK) + { + status = -RT_EBUSY; + } + return status ; +} + +/* Use Xls I2C COnfiguration Tools with I2C Clock config + output clocks requirement */ +#define I2C_TIMING 0x10805E89 + +uint32_t BSP_PMIC_Init(void) +{ + int32_t status = RT_EOK; + PMIC_IRQn irq; + + /*##-1- Configure the I2C peripheral ######################################*/ + BSP_PMIC_MspInit(&hI2c4); + + status = BSP_PMIC_Is_Device_Ready(); + if (status != RT_EOK ) + { + return status; + } + + if (STPMU1_Register_Read(VERSION_STATUS_REG) != 0x00) + { + status = -RT_EIO; + return status; + } + + STPMU1_Enable_Interrupt(IT_PONKEY_R); + STPMU1_Enable_Interrupt(IT_PONKEY_F); + /* enable all irqs */ + for (irq = IT_SWOUT_R; irq < IRQ_NR; irq++) + { + STPMU1_Enable_Interrupt(irq); + } + + return RT_EOK; +} + +uint32_t BSP_PMIC_DeInit(void) +{ + uint32_t status = RT_EOK; + if(HAL_I2C_GetState(&hI2c4) != HAL_I2C_STATE_RESET) + { + /* Deinit the I2C */ + BSP_PMIC_MspDeInit(&hI2c4); + } + return status; +} + +/* + * + * following are configurations for this board + * same configuration than linux + * + * BSP_PMIC_InitRegulators set the regulators for boot + * BSP_PMIC_PrepareLpStop set the low power registers for LPSTOP mode + * should be called by user before entering is CSTOP + * BSP_PMIC_PrepareLpStop set the low power registers for STANDBY mode + * should be called by user before entering is STANDBY + * + * + */ +/* following are configurations */ +uint32_t BSP_PMIC_InitRegulators(void) +{ + uint32_t status = RT_EOK; + + STPMU1_Register_Write(MAIN_CONTROL_REG, 0x04); + STPMU1_Register_Write(VIN_CONTROL_REG, 0xc0); + STPMU1_Register_Write(USB_CONTROL_REG, 0x30); + + STPMU1_Register_Write(MASK_RESET_BUCK_REG, 0x04); + STPMU1_Register_Write(MASK_RESET_LDO_REG, 0x00); + STPMU1_Register_Write(MASK_RANK_BUCK_REG, 0x00); + STPMU1_Register_Write(MASK_RANK_LDO_REG, 0x00); + STPMU1_Register_Write(BUCK_PULL_DOWN_REG, 0x00); + STPMU1_Register_Write(LDO14_PULL_DOWN_REG, 0x00); + STPMU1_Register_Write(LDO56_PULL_DOWN_REG, 0x00); + STPMU1_Register_Write(BUCK_ICC_TURNOFF_REG, 0x30); + STPMU1_Register_Write(LDO_ICC_TURNOFF_REG, 0x3b); + + /* vddcore */ + STPMU1_Regulator_Voltage_Set(STPMU1_BUCK1, 1200); + STPMU1_Regulator_Enable(STPMU1_BUCK1); + + /* vddddr */ + STPMU1_Regulator_Voltage_Set(STPMU1_BUCK2, 1350); + STPMU1_Regulator_Enable(STPMU1_BUCK2); + + /* vdd */ + STPMU1_Regulator_Voltage_Set(STPMU1_BUCK3, 3300); + STPMU1_Regulator_Enable(STPMU1_BUCK3); + + /* 3v3 */ + STPMU1_Regulator_Voltage_Set(STPMU1_BUCK4, 3300); + STPMU1_Regulator_Enable(STPMU1_BUCK4); + + /* vdda */ + STPMU1_Regulator_Voltage_Set(STPMU1_LDO1, 2900); + STPMU1_Regulator_Enable(STPMU1_LDO1); + + /* 2v8 */ + STPMU1_Regulator_Voltage_Set(STPMU1_LDO2, 2800); + STPMU1_Regulator_Enable(STPMU1_LDO2); + + /* vtt_ddr lod3 mode buck2/2 */ + STPMU1_Regulator_Voltage_Set(STPMU1_LDO3, 0xFFFF); + STPMU1_Regulator_Enable(STPMU1_LDO3); + + /* vdd_usb */ + STPMU1_Regulator_Voltage_Set(STPMU1_LDO4, 3300); + STPMU1_Regulator_Enable(STPMU1_LDO4); + + /* vdd_sd */ + STPMU1_Regulator_Voltage_Set(STPMU1_LDO5, 2900); + STPMU1_Regulator_Enable(STPMU1_LDO5); + + /* 1v8 */ + STPMU1_Regulator_Voltage_Set(STPMU1_LDO6, 1800); + STPMU1_Regulator_Enable(STPMU1_LDO6); + + STPMU1_Regulator_Enable(STPMU1_VREFDDR); + + return status; +} + +uint32_t BSP_PMIC_SwitchOff(void) +{ + uint32_t status = RT_EOK; + + STPMU1_Register_Write(MAIN_CONTROL_REG, 0x01); + return status; +} + +__weak void BSP_PMIC_INTn_Callback(PMIC_IRQn IRQn) +{ + switch (IRQn) + { + case IT_PONKEY_F: + rt_kprintf("IT_PONKEY_F"); + break; + + case IT_PONKEY_R: + rt_kprintf("IT_PONKEY_R"); + break; + + case IT_WAKEUP_F: + rt_kprintf("IT_WAKEUP_F"); + break; + + case IT_WAKEUP_R: + rt_kprintf("IT_WAKEUP_R"); + break; + + case IT_VBUS_OTG_F: + rt_kprintf("IT_VBUS_OTG_F"); + break; + + case IT_SWOUT_F: + rt_kprintf("IT_SWOUT_F"); + break; + + case IT_TWARN_R: + rt_kprintf("IT_TWARN_R"); + break; + + case IT_TWARN_F: + rt_kprintf("IT_TWARN_F"); + break; + + default: + rt_kprintf("%d",IRQn); + break; + } + rt_kprintf(" Interrupt received\n\r"); +} + +void STPMU1_INTn_Callback(PMIC_IRQn IRQn) +{ + BSP_PMIC_INTn_Callback(IRQn); +} + +void BSP_PMIC_INTn_IRQHandler(void) +{ + HAL_GPIO_EXTI_IRQHandler(PMIC_INTn_PIN); + + STPMU1_IrqHandler(); +} + +void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hI2c4) +{ + while(1); +} diff --git a/bsp/stm32/stm32mp157a-st-ev1/board/ports/stpmic.h b/bsp/stm32/stm32mp157a-st-ev1/board/ports/stpmic.h new file mode 100644 index 000000000..4b5e47b89 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/board/ports/stpmic.h @@ -0,0 +1,315 @@ +/** + ****************************************************************************** + * @file stm32mp15xx__stpmic1.h + * @author MCD Application Team + * @brief stpmu driver functions used for ST internal validation + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + * + ****************************************************************************** + */ + +#ifndef __STPMIC_H__ +#define __STPMIC_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32mp1xx_hal.h" + +/* Exported types ------------------------------------------------------------*/ +typedef enum +{ + STPMU1_BUCK1=1, + STPMU1_BUCK2, + STPMU1_BUCK3, + STPMU1_BUCK4, + STPMU1_LDO1, + STPMU1_LDO2, + STPMU1_LDO3, + STPMU1_LDO4, + STPMU1_LDO5, + STPMU1_LDO6, + STPMU1_VREFDDR, +}PMIC_RegulId_TypeDef; + +/* IRQ definitions */ +typedef enum { + +/* Interrupt Register 1 (0x50 for latch) */ +IT_SWOUT_R, +IT_SWOUT_F, +IT_VBUS_OTG_R, +IT_VBUS_OTG_F, +IT_WAKEUP_R, +IT_WAKEUP_F, +IT_PONKEY_R, +IT_PONKEY_F, + +/* Interrupt Register 2 (0x51 for latch) */ +IT_OVP_BOOST, +IT_OCP_BOOST, +IT_OCP_SWOUT, +IT_OCP_OTG, +IT_CURLIM_BUCK4, +IT_CURLIM_BUCK3, +IT_CURLIM_BUCK2, +IT_CURLIM_BUCK1, + +/* Interrupt Register 3 (0x52 for latch) */ +IT_SHORT_SWOUT, +IT_SHORT_SWOTG, +IT_CURLIM_LDO6, +IT_CURLIM_LDO5, +IT_CURLIM_LDO4, +IT_CURLIM_LDO3, +IT_CURLIM_LDO2, +IT_CURLIM_LDO1, + +/* Interrupt Register 3 (0x52 for latch) */ +IT_SWIN_R, +IT_SWIN_F, +IT_RESERVED_1, +IT_RESERVED_2, +IT_VINLOW_R, +IT_VINLOW_F, +IT_TWARN_R, +IT_TWARN_F, + +IRQ_NR, +} PMIC_IRQn; + +/** + * @} + */ + +/** @defgroup STM32MP15XX_EVAL_STPMU_Exported_Constants Exported Constants + * @{ + */ + +/* Exported constants --------------------------------------------------------*/ +#define BIT(_x) (1<<(_x)) +#define STM32_PMIC_NUM_IRQ_REGS 4 + +#define TURN_ON_REG 0x1 +#define TURN_OFF_REG 0x2 +#define ICC_LDO_TURN_OFF_REG 0x3 +#define ICC_BUCK_TURN_OFF_REG 0x4 +#define RESET_STATUS_REG 0x5 +#define VERSION_STATUS_REG 0x6 +#define MAIN_CONTROL_REG 0x10 +#define PADS_PULL_REG 0x11 +#define BUCK_PULL_DOWN_REG 0x12 +#define LDO14_PULL_DOWN_REG 0x13 +#define LDO56_PULL_DOWN_REG 0x14 +#define VIN_CONTROL_REG 0x15 +#define PONKEY_TIMER_REG 0x16 +#define MASK_RANK_BUCK_REG 0x17 +#define MASK_RESET_BUCK_REG 0x18 +#define MASK_RANK_LDO_REG 0x19 +#define MASK_RESET_LDO_REG 0x1A +#define WATCHDOG_CONTROL_REG 0x1B +#define WATCHDOG_TIMER_REG 0x1C +#define BUCK_ICC_TURNOFF_REG 0x1D +#define LDO_ICC_TURNOFF_REG 0x1E +#define BUCK_APM_CONTROL_REG 0x1F +#define BUCK1_CONTROL_REG 0x20 +#define BUCK2_CONTROL_REG 0x21 +#define BUCK3_CONTROL_REG 0x22 +#define BUCK4_CONTROL_REG 0x23 +#define VREF_DDR_CONTROL_REG 0x24 +#define LDO1_CONTROL_REG 0x25 +#define LDO2_CONTROL_REG 0x26 +#define LDO3_CONTROL_REG 0x27 +#define LDO4_CONTROL_REG 0x28 +#define LDO5_CONTROL_REG 0x29 +#define LDO6_CONTROL_REG 0x2A +#define BUCK1_PWRCTRL_REG 0x30 +#define BUCK2_PWRCTRL_REG 0x31 +#define BUCK3_PWRCTRL_REG 0x32 +#define BUCK4_PWRCTRL_REG 0x33 +#define VREF_DDR_PWRCTRL_REG 0x34 +#define LDO1_PWRCTRL_REG 0x35 +#define LDO2_PWRCTRL_REG 0x36 +#define LDO3_PWRCTRL_REG 0x37 +#define LDO4_PWRCTRL_REG 0x38 +#define LDO5_PWRCTRL_REG 0x39 +#define LDO6_PWRCTRL_REG 0x3A +#define FREQUENCY_SPREADING_REG 0x3B +#define USB_CONTROL_REG 0x40 +#define ITLATCH1_REG 0x50 +#define ITLATCH2_REG 0x51 +#define ITLATCH3_REG 0x52 +#define ITLATCH4_REG 0x53 +#define ITSETLATCH1_REG 0x60 +#define ITSETLATCH2_REG 0x61 +#define ITSETLATCH3_REG 0x62 +#define ITSETLATCH4_REG 0x63 +#define ITCLEARLATCH1_REG 0x70 +#define ITCLEARLATCH2_REG 0x71 +#define ITCLEARLATCH3_REG 0x72 +#define ITCLEARLATCH4_REG 0x73 +#define ITMASK1_REG 0x80 +#define ITMASK2_REG 0x81 +#define ITMASK3_REG 0x82 +#define ITMASK4_REG 0x83 +#define ITSETMASK1_REG 0x90 +#define ITSETMASK2_REG 0x91 +#define ITSETMASK3_REG 0x92 +#define ITSETMASK4_REG 0x93 +#define ITCLEARMASK1_REG 0xA0 +#define ITCLEARMASK2_REG 0xA1 +#define ITCLEARMASK3_REG 0xA2 +#define ITCLEARMASK4_REG 0xA3 +#define ITSOURCE1_REG 0xB0 +#define ITSOURCE2_REG 0xB1 +#define ITSOURCE3_REG 0xB2 +#define ITSOURCE4_REG 0xB3 +#define LDO_VOLTAGE_MASK 0x7C +#define BUCK_VOLTAGE_MASK 0xFC +#define LDO_BUCK_VOLTAGE_SHIFT 2 + +#define LDO_ENABLE_MASK 0x01 +#define BUCK_ENABLE_MASK 0x01 +#define BUCK_HPLP_ENABLE_MASK 0x02 +#define LDO_HPLP_ENABLE_MASK 0x02 +#define LDO_BUCK_HPLP_SHIFT 1 + +#define LDO_BUCK_RANK_MASK 0x01 +#define LDO_BUCK_RESET_MASK 0x01 +#define LDO_BUCK_PULL_DOWN_MASK 0x03 + + +/* Main PMIC Control Register + * MAIN_CONTROL_REG + * Address : 0x10 + * */ +#define ICC_EVENT_ENABLED BIT(4) +#define PWRCTRL_POLARITY_HIGH BIT(3) +#define PWRCTRL_PIN_VALID BIT(2) +#define RESTART_REQUEST_ENABLED BIT(1) +#define SOFTWARE_SWITCH_OFF_ENABLED BIT(0) + +/* Main PMIC PADS Control Register + * PADS_PULL_REG + * Address : 0x11 + * */ +#define WAKEUP_DETECTOR_DISABLED BIT(4) +#define PWRCTRL_PD_ACTIVE BIT(3) +#define PWRCTRL_PU_ACTIVE BIT(2) +#define WAKEUP_PD_ACTIVE BIT(1) +#define PONKEY_PU_ACTIVE BIT(0) + + +/* Main PMIC VINLOW Control Register + * VIN_CONTROL_REGC DMSC + * Address : 0x15 + * */ +#define SWIN_DETECTOR_ENABLED BIT(7) +#define SWOUT_DETECTOR_ENABLED BIT(6) +#define VINLOW_HYST_MASK 0x3 +#define VINLOW_HYST_SHIFT 4 +#define VINLOW_THRESHOLD_MASK 0x7 +#define VINLOW_THRESHOLD_SHIFT 1 +#define VINLOW_ENABLED 0x01 +#define VINLOW_CTRL_REG_MASK 0xFF + + +/* USB Control Register + * Address : 0x40 + * */ +#define BOOST_OVP_DISABLED BIT(7) +#define VBUS_OTG_DETECTION_DISABLED BIT(6) +// Discharge not implemented +#define OCP_LIMIT_HIGH BIT(3) +#define SWIN_SWOUT_ENABLED BIT(2) +#define USBSW_OTG_SWITCH_ENABLED BIT(1) + + +/* IRQ masks */ +/* Interrupt Mask for Register 1 (0x50 for latch) */ +#define IT_SWOUT_R_MASK BIT(7) +#define IT_SWOUT_F_MASK BIT(6) +#define IT_VBUS_OTG_R_MASK BIT(5) +#define IT_VBUS_OTG_F_MASK BIT(4) +#define IT_WAKEUP_R_MASK BIT(3) +#define IT_WAKEUP_F_MASK BIT(2) +#define IT_PONKEY_R_MASK BIT(1) +#define IT_PONKEY_F_MASK BIT(0) + +/* Interrupt Mask for Register 2 (0x51 for latch) */ +#define IT_OVP_BOOST_MASK BIT(7) +#define IT_OCP_BOOST_MASK BIT(6) +#define IT_OCP_SWOUT_MASK BIT(5) +#define IT_OCP_OTG_MASK BIT(4) +#define IT_CURLIM_BUCK4_MASK BIT(3) +#define IT_CURLIM_BUCK3_MASK BIT(2) +#define IT_CURLIM_BUCK2_MASK BIT(1) +#define IT_CURLIM_BUCK1_MASK BIT(0) + +/* Interrupt Mask for Register 3 (0x52 for latch) */ +#define IT_SHORT_SWOUT_MASK BIT(7) +#define IT_SHORT_SWOTG_MASK BIT(6) +#define IT_CURLIM_LDO6_MASK BIT(5) +#define IT_CURLIM_LDO5_MASK BIT(4) +#define IT_CURLIM_LDO4_MASK BIT(3) +#define IT_CURLIM_LDO3_MASK BIT(2) +#define IT_CURLIM_LDO2_MASK BIT(1) +#define IT_CURLIM_LDO1_MASK BIT(0) + +/* Interrupt Mask for Register 4 (0x53 for latch) */ +#define IT_SWIN_R_MASK BIT(7) +#define IT_SWIN_F_MASK BIT(6) +/* Reserved 1 */ +/* Reserved 2 */ +#define IT_VINLOW_R_MASK BIT(3) +#define IT_VINLOW_F_MASK BIT(2) +#define IT_TWARN_R_MASK BIT(1) +#define IT_TWARN_F_MASK BIT(0) + +#define PMIC_VERSION_ID 0x10 + +#define NVM_SECTOR3_REGISTER_7 0x33 +//#define STPMU1_I2C_ADDRESS ((NVM_SECTOR3_REGISTER_7 & 0x7F) << 1 ) + +/** + * @} + */ + +/** @defgroup STM32MP15XX_EVAL_STPMU_Exported_Functions Exported Functions + * @{ + */ + +/* Exported functions --------------------------------------------------------*/ +uint8_t STPMU1_Register_Read(uint8_t register_id); +void STPMU1_Register_Write(uint8_t register_id, uint8_t value); +void STPMU1_Register_Update(uint8_t register_id, uint8_t value, uint8_t mask); +void STPMU1_Enable_Interrupt(PMIC_IRQn IRQn); +void STPMU1_Disable_Interrupt(PMIC_IRQn IRQn); +void STPMU1_Regulator_Enable(PMIC_RegulId_TypeDef id); +void STPMU1_Regulator_Disable(PMIC_RegulId_TypeDef id); +uint8_t STPMU1_Is_Regulator_Enabled(PMIC_RegulId_TypeDef id); +void STPMU1_Regulator_Voltage_Set(PMIC_RegulId_TypeDef id,uint16_t milivolts); +uint32_t BSP_PMIC_Init(void); +uint32_t BSP_PMIC_DeInit(void); +uint32_t BSP_PMIC_Is_Device_Ready(void); +uint32_t BSP_PMIC_InitRegulators (void); +__weak void BSP_PMIC_INTn_Callback(PMIC_IRQn IRQn); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/bsp/stm32/stm32mp157a-st-ev1/figures/board.png b/bsp/stm32/stm32mp157a-st-ev1/figures/board.png new file mode 100644 index 0000000000000000000000000000000000000000..887ef13d1123c10b32d9005144117ea5e6648bd8 GIT binary patch literal 157606 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

D6$~iG>Id@ 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 z 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%0AkWIA{U?FW$mjVt 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 literal 0 HcmV?d00001 diff --git a/bsp/stm32/stm32mp157a-st-ev1/figures/boot.png b/bsp/stm32/stm32mp157a-st-ev1/figures/boot.png new file mode 100644 index 0000000000000000000000000000000000000000..17fcb76fc68b090dc6cf613040cb85d5d8dcabf6 GIT binary patch literal 328289 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

    ?O0Hh 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≻MnioA1bEyCd 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 + + 3 + + rt-thread + + ARM + + 1 + + C-SPY + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 6 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\HWRTOSplugin\HWRTOSplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\RemedyRtosViewer\RemedyRtosViewer.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 0 + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 6 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\HWRTOSplugin\HWRTOSplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\RemedyRtosViewer\RemedyRtosViewer.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/stm32/stm32mp157a-st-ev1/project.ewp b/bsp/stm32/stm32mp157a-st-ev1/project.ewp new file mode 100644 index 000000000..d84c66884 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/project.ewp @@ -0,0 +1,2563 @@ + + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + cpu + + $PROJ_DIR$\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\audio\audio.c + + + $PROJ_DIR$\..\..\..\components\drivers\audio\audio_pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\completion.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\i2c\i2c-bit-ops.c + + + $PROJ_DIR$\..\..\..\components\drivers\i2c\i2c_core.c + + + $PROJ_DIR$\..\..\..\components\drivers\i2c\i2c_dev.c + + + $PROJ_DIR$\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\workqueue.c + + + + dlib + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\libc.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\rmtx.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\stdio.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_common.c + + + $PROJ_DIR$\board\ports\dfsdm\drv_dfsdm.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_gpio.c + + + $PROJ_DIR$\board\ports\pmic\drv_hard_i2c.c + + + $PROJ_DIR$\board\ports\audio\drv_sai.c + + + $PROJ_DIR$\board\ports\sdmmc\drv_sdmmc.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_soft_i2c.c + + + $PROJ_DIR$\board\ports\audio\drv_sound.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_usart.c + + + $PROJ_DIR$\board\ports\audio\drv_wm8994.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\CMSIS\Device\ST\STM32MP1xx\Source\Templates\iar\startup_stm32mp15xx.s + + + $PROJ_DIR$\board\CubeMX_Config\CM4\Src\stm32mp1xx_hal_msp.c + + + $PROJ_DIR$\board\ports\pmic\stpmic.c + + + $PROJ_DIR$\board\CubeMX_Config\Common\System\system_stm32mp1xx.c + + + + Filesystem + + $PROJ_DIR$\..\..\..\components\dfs\filesystems\elmfat\option\ccsbcs.c + + + $PROJ_DIR$\..\..\..\components\dfs\filesystems\devfs\devfs.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\dfs.c + + + $PROJ_DIR$\..\..\..\components\dfs\filesystems\elmfat\dfs_elm.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\dfs_file.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\dfs_fs.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\dfs_posix.c + + + $PROJ_DIR$\..\..\..\components\dfs\filesystems\elmfat\ff.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\poll.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\select.c + + + + finsh + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_compiler.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_error.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_heap.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_init.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_node.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_ops.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_parser.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_token.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_var.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_vm.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_file.c + + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\memheap.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\src\signal.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + libc + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\time.c + + + + STM32_HAL + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_adc.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_adc_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_cortex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_crc.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_crc_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_cryp.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_cryp_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dac.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dac_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dfsdm.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dfsdm_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dma.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dma_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_exti.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_gpio.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_hsem.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_i2c.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_i2c_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_ipcc.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_mdma.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_pwr.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_pwr_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_rcc.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_rcc_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_rng.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_sai.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_sai_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_sd.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_spi.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_tim.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_tim_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_uart.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_uart_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_ll_delayblock.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_ll_sdmmc.c + + + diff --git a/bsp/stm32/stm32mp157a-st-ev1/project.ewt b/bsp/stm32/stm32mp157a-st-ev1/project.ewt new file mode 100644 index 000000000..406b4bb34 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/project.ewt @@ -0,0 +1,2765 @@ + + + 3 + + rt-thread + + ARM + + 1 + + C-STAT + 261 + + 261 + + 0 + + 1 + 600 + 1 + 4 + 0 + 1 + 100 + + + 1.5.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RuntimeChecking + 0 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + Release + + ARM + + 0 + + C-STAT + 261 + + 261 + + 0 + + 1 + 600 + 1 + 4 + 0 + 1 + 100 + + + 1.5.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RuntimeChecking + 0 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + cpu + + $PROJ_DIR$\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\audio\audio.c + + + $PROJ_DIR$\..\..\..\components\drivers\audio\audio_pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\completion.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\i2c\i2c-bit-ops.c + + + $PROJ_DIR$\..\..\..\components\drivers\i2c\i2c_core.c + + + $PROJ_DIR$\..\..\..\components\drivers\i2c\i2c_dev.c + + + $PROJ_DIR$\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\src\workqueue.c + + + + dlib + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\libc.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\rmtx.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\stdio.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_common.c + + + $PROJ_DIR$\board\ports\dfsdm\drv_dfsdm.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_gpio.c + + + $PROJ_DIR$\board\ports\pmic\drv_hard_i2c.c + + + $PROJ_DIR$\board\ports\audio\drv_sai.c + + + $PROJ_DIR$\board\ports\sdmmc\drv_sdmmc.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_soft_i2c.c + + + $PROJ_DIR$\board\ports\audio\drv_sound.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_usart.c + + + $PROJ_DIR$\board\ports\audio\drv_wm8994.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\CMSIS\Device\ST\STM32MP1xx\Source\Templates\iar\startup_stm32mp15xx.s + + + $PROJ_DIR$\board\CubeMX_Config\CM4\Src\stm32mp1xx_hal_msp.c + + + $PROJ_DIR$\board\ports\pmic\stpmic.c + + + $PROJ_DIR$\board\CubeMX_Config\Common\System\system_stm32mp1xx.c + + + + Filesystem + + $PROJ_DIR$\..\..\..\components\dfs\filesystems\elmfat\option\ccsbcs.c + + + $PROJ_DIR$\..\..\..\components\dfs\filesystems\devfs\devfs.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\dfs.c + + + $PROJ_DIR$\..\..\..\components\dfs\filesystems\elmfat\dfs_elm.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\dfs_file.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\dfs_fs.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\dfs_posix.c + + + $PROJ_DIR$\..\..\..\components\dfs\filesystems\elmfat\ff.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\poll.c + + + $PROJ_DIR$\..\..\..\components\dfs\src\select.c + + + + finsh + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_compiler.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_error.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_heap.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_init.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_node.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_ops.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_parser.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_token.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_var.c + + + $PROJ_DIR$\..\..\..\components\finsh\finsh_vm.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_file.c + + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\memheap.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\src\signal.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + libc + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\time.c + + + + STM32_HAL + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_adc.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_adc_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_cortex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_crc.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_crc_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_cryp.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_cryp_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dac.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dac_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dfsdm.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dfsdm_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dma.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dma_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_exti.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_gpio.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_hsem.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_i2c.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_i2c_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_ipcc.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_mdma.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_pwr.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_pwr_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_rcc.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_rcc_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_rng.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_sai.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_sai_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_sd.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_spi.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_tim.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_tim_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_uart.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_uart_ex.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_ll_delayblock.c + + + $PROJ_DIR$\..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_ll_sdmmc.c + + + diff --git a/bsp/stm32/stm32mp157a-st-ev1/project.eww b/bsp/stm32/stm32mp157a-st-ev1/project.eww new file mode 100644 index 000000000..c2cb02eb1 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/stm32/stm32mp157a-st-ev1/project.uvopt b/bsp/stm32/stm32mp157a-st-ev1/project.uvopt new file mode 100644 index 000000000..ed90c9e18 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/project.uvopt @@ -0,0 +1,167 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O207 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 + + + 0 + JL2CM3 + -U30000299 -O207 -S0 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 + + + 0 + UL2CM3 + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + +
    diff --git a/bsp/stm32/stm32mp157a-st-ev1/project.uvoptx b/bsp/stm32/stm32mp157a-st-ev1/project.uvoptx new file mode 100644 index 000000000..97c770bb6 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/project.uvoptx @@ -0,0 +1,1172 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 6 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FC1000 -FD10020000 + + + 0 + ST-LINKIII-KEIL_SWO + -U066BFF343339415043223048 -O206 -SF10000 -C0 -A2 -I0 -HNlocalhost -HP7184 -P1 -N00("") -D00(00000000) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8000 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD10050000 -FC1000 -FN0 + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 0 + 0 + 0 + 2 + 10000000 + + + + + + Applications + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + cpu + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + 2 + 6 + 2 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + 3 + 9 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\completion.c + completion.c + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\dataqueue.c + dataqueue.c + 0 + 0 + + + 3 + 11 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\pipe.c + pipe.c + 0 + 0 + + + 3 + 12 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 3 + 14 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\waitqueue.c + waitqueue.c + 0 + 0 + + + 3 + 15 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\src\workqueue.c + workqueue.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 4 + 16 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + board\CubeMX_Config\Common\System\system_stm32mp1xx.c + system_stm32mp1xx.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + board\CubeMX_Config\CM4\Src\stm32mp1xx_hal_msp.c + stm32mp1xx_hal_msp.c + 0 + 0 + + + 4 + 19 + 2 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\CMSIS\Device\ST\STM32MP1xx\Source\Templates\arm\startup_stm32mp15xx.s + startup_stm32mp15xx.s + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_common.c + drv_common.c + 0 + 0 + + + + + finsh + 0 + 0 + 0 + 0 + + 5 + 23 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 5 + 24 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + 5 + 25 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 5 + 26 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\finsh_compiler.c + finsh_compiler.c + 0 + 0 + + + 5 + 27 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\finsh_error.c + finsh_error.c + 0 + 0 + + + 5 + 28 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\finsh_heap.c + finsh_heap.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\finsh_init.c + finsh_init.c + 0 + 0 + + + 5 + 30 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\finsh_node.c + finsh_node.c + 0 + 0 + + + 5 + 31 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\finsh_ops.c + finsh_ops.c + 0 + 0 + + + 5 + 32 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\finsh_parser.c + finsh_parser.c + 0 + 0 + + + 5 + 33 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\finsh_var.c + finsh_var.c + 0 + 0 + + + 5 + 34 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\finsh_vm.c + finsh_vm.c + 0 + 0 + + + 5 + 35 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\finsh_token.c + finsh_token.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 6 + 36 + 1 + 0 + 0 + 0 + ..\..\..\src\clock.c + clock.c + 0 + 0 + + + 6 + 37 + 1 + 0 + 0 + 0 + ..\..\..\src\components.c + components.c + 0 + 0 + + + 6 + 38 + 1 + 0 + 0 + 0 + ..\..\..\src\device.c + device.c + 0 + 0 + + + 6 + 39 + 1 + 0 + 0 + 0 + ..\..\..\src\idle.c + idle.c + 0 + 0 + + + 6 + 40 + 1 + 0 + 0 + 0 + ..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 6 + 41 + 1 + 0 + 0 + 0 + ..\..\..\src\irq.c + irq.c + 0 + 0 + + + 6 + 42 + 1 + 0 + 0 + 0 + ..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 6 + 43 + 1 + 0 + 0 + 0 + ..\..\..\src\memheap.c + memheap.c + 0 + 0 + + + 6 + 44 + 1 + 0 + 0 + 0 + ..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 6 + 45 + 1 + 0 + 0 + 0 + ..\..\..\src\object.c + object.c + 0 + 0 + + + 6 + 46 + 1 + 0 + 0 + 0 + ..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 6 + 47 + 1 + 0 + 0 + 0 + ..\..\..\src\signal.c + signal.c + 0 + 0 + + + 6 + 48 + 1 + 0 + 0 + 0 + ..\..\..\src\thread.c + thread.c + 0 + 0 + + + 6 + 49 + 1 + 0 + 0 + 0 + ..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + libc + 0 + 0 + 0 + 0 + + 7 + 50 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\armlibc\libc.c + libc.c + 0 + 0 + + + 7 + 51 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\armlibc\mem_std.c + mem_std.c + 0 + 0 + + + 7 + 52 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\armlibc\stubs.c + stubs.c + 0 + 0 + + + 7 + 53 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\time.c + time.c + 0 + 0 + + + + + STM32_HAL + 0 + 0 + 0 + 0 + + 8 + 54 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal.c + stm32mp1xx_hal.c + 0 + 0 + + + 8 + 55 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_hsem.c + stm32mp1xx_hal_hsem.c + 0 + 0 + + + 8 + 56 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_exti.c + stm32mp1xx_hal_exti.c + 0 + 0 + + + 8 + 57 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_ipcc.c + stm32mp1xx_hal_ipcc.c + 0 + 0 + + + 8 + 58 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_cortex.c + stm32mp1xx_hal_cortex.c + 0 + 0 + + + 8 + 59 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dma.c + stm32mp1xx_hal_dma.c + 0 + 0 + + + 8 + 60 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dma_ex.c + stm32mp1xx_hal_dma_ex.c + 0 + 0 + + + 8 + 61 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_mdma.c + stm32mp1xx_hal_mdma.c + 0 + 0 + + + 8 + 62 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_pwr.c + stm32mp1xx_hal_pwr.c + 0 + 0 + + + 8 + 63 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_pwr_ex.c + stm32mp1xx_hal_pwr_ex.c + 0 + 0 + + + 8 + 64 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_rcc.c + stm32mp1xx_hal_rcc.c + 0 + 0 + + + 8 + 65 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_rcc_ex.c + stm32mp1xx_hal_rcc_ex.c + 0 + 0 + + + 8 + 66 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_gpio.c + stm32mp1xx_hal_gpio.c + 0 + 0 + + + 8 + 67 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_adc.c + stm32mp1xx_hal_adc.c + 0 + 0 + + + 8 + 68 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_adc_ex.c + stm32mp1xx_hal_adc_ex.c + 0 + 0 + + + 8 + 69 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dac.c + stm32mp1xx_hal_dac.c + 0 + 0 + + + 8 + 70 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dac_ex.c + stm32mp1xx_hal_dac_ex.c + 0 + 0 + + + 8 + 71 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_i2c.c + stm32mp1xx_hal_i2c.c + 0 + 0 + + + 8 + 72 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_i2c_ex.c + stm32mp1xx_hal_i2c_ex.c + 0 + 0 + + + 8 + 73 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_spi.c + stm32mp1xx_hal_spi.c + 0 + 0 + + + 8 + 74 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_tim.c + stm32mp1xx_hal_tim.c + 0 + 0 + + + 8 + 75 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_tim_ex.c + stm32mp1xx_hal_tim_ex.c + 0 + 0 + + + 8 + 76 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_uart.c + stm32mp1xx_hal_uart.c + 0 + 0 + + + 8 + 77 + 1 + 0 + 0 + 0 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_uart_ex.c + stm32mp1xx_hal_uart_ex.c + 0 + 0 + + + +
    diff --git a/bsp/stm32/stm32mp157a-st-ev1/project.uvprojx b/bsp/stm32/stm32mp157a-st-ev1/project.uvprojx new file mode 100644 index 000000000..2b8057d6d --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/project.uvprojx @@ -0,0 +1,833 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + rt-thread + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + STM32MP157AAAx:Cortex-M4 + STMicroelectronics + Keil.STM32MP1xx_DFP.1.3.0 + http://www.keil.com/pack/ + IRAM(0x10020000,0x00020000) IRAM2(0x10040000,0x00020000) IROM(0x10000000,0x00020000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) + + + UL2CM3(-S0 -C0 -P0 -FD10020000 -FC1000) + 0 + $$Device:STM32MP157AAAx$Drivers\CMSIS\Device\ST\STM32MP1xx\Include\stm32mp157axx_cm4.h + + + + + + + + + + $$Device:STM32MP157AAAx$SVD\STM32MP157x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\keil\Obj\ + rt-thread + 1 + 0 + 0 + 1 + 0 + .\build\keil\List\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 0 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x10020000 + 0x20000 + + + 1 + 0x10000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x10000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x10050000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + CORE_CM4, USE_HAL_DRIVER, STM32MP157Axx, RT_USING_ARM_LIBC + + applications;.;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;board\CubeMX_Config\CM4\Inc;board\ports;..\libraries\HAL_Drivers;..\libraries\HAL_Drivers\config;..\..\..\components\finsh;.;..\..\..\include;..\..\..\components\libc\compilers\armlibc;..\..\..\components\libc\compilers\common;..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Inc;..\libraries\STM32MPxx_HAL\CMSIS\Device\ST\STM32MP1xx\Include;..\libraries\STM32MPxx_HAL\CMSIS\Core\Include;..\libraries\STM32MPxx_HAL\CMSIS\Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\board\linker_scripts\link.sct + + + + + + + + + + + Applications + + + main.c + 1 + applications\main.c + + + + + cpu + + + backtrace.c + 1 + ..\..\..\libcpu\arm\common\backtrace.c + + + div0.c + 1 + ..\..\..\libcpu\arm\common\div0.c + + + showmem.c + 1 + ..\..\..\libcpu\arm\common\showmem.c + + + cpuport.c + 1 + ..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + + + + + DeviceDrivers + + + pin.c + 1 + ..\..\..\components\drivers\misc\pin.c + + + serial.c + 1 + ..\..\..\components\drivers\serial\serial.c + + + completion.c + 1 + ..\..\..\components\drivers\src\completion.c + + + dataqueue.c + 1 + ..\..\..\components\drivers\src\dataqueue.c + + + pipe.c + 1 + ..\..\..\components\drivers\src\pipe.c + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\src\ringblk_buf.c + + + ringbuffer.c + 1 + ..\..\..\components\drivers\src\ringbuffer.c + + + waitqueue.c + 1 + ..\..\..\components\drivers\src\waitqueue.c + + + workqueue.c + 1 + ..\..\..\components\drivers\src\workqueue.c + + + + + Drivers + + + board.c + 1 + board\board.c + + + system_stm32mp1xx.c + 1 + board\CubeMX_Config\Common\System\system_stm32mp1xx.c + + + stm32mp1xx_hal_msp.c + 1 + board\CubeMX_Config\CM4\Src\stm32mp1xx_hal_msp.c + + + startup_stm32mp15xx.s + 2 + ..\libraries\STM32MPxx_HAL\CMSIS\Device\ST\STM32MP1xx\Source\Templates\arm\startup_stm32mp15xx.s + + + drv_gpio.c + 1 + ..\libraries\HAL_Drivers\drv_gpio.c + + + drv_usart.c + 1 + ..\libraries\HAL_Drivers\drv_usart.c + + + drv_common.c + 1 + ..\libraries\HAL_Drivers\drv_common.c + + + + + finsh + + + shell.c + 1 + ..\..\..\components\finsh\shell.c + + + cmd.c + 1 + ..\..\..\components\finsh\cmd.c + + + msh.c + 1 + ..\..\..\components\finsh\msh.c + + + finsh_compiler.c + 1 + ..\..\..\components\finsh\finsh_compiler.c + + + finsh_error.c + 1 + ..\..\..\components\finsh\finsh_error.c + + + finsh_heap.c + 1 + ..\..\..\components\finsh\finsh_heap.c + + + finsh_init.c + 1 + ..\..\..\components\finsh\finsh_init.c + + + finsh_node.c + 1 + ..\..\..\components\finsh\finsh_node.c + + + finsh_ops.c + 1 + ..\..\..\components\finsh\finsh_ops.c + + + finsh_parser.c + 1 + ..\..\..\components\finsh\finsh_parser.c + + + finsh_var.c + 1 + ..\..\..\components\finsh\finsh_var.c + + + finsh_vm.c + 1 + ..\..\..\components\finsh\finsh_vm.c + + + finsh_token.c + 1 + ..\..\..\components\finsh\finsh_token.c + + + + + Kernel + + + clock.c + 1 + ..\..\..\src\clock.c + + + components.c + 1 + ..\..\..\src\components.c + + + device.c + 1 + ..\..\..\src\device.c + + + idle.c + 1 + ..\..\..\src\idle.c + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + irq.c + 1 + ..\..\..\src\irq.c + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + memheap.c + 1 + ..\..\..\src\memheap.c + + + mempool.c + 1 + ..\..\..\src\mempool.c + + + object.c + 1 + ..\..\..\src\object.c + + + scheduler.c + 1 + ..\..\..\src\scheduler.c + + + signal.c + 1 + ..\..\..\src\signal.c + + + thread.c + 1 + ..\..\..\src\thread.c + + + timer.c + 1 + ..\..\..\src\timer.c + + + + + libc + + + libc.c + 1 + ..\..\..\components\libc\compilers\armlibc\libc.c + + + mem_std.c + 1 + ..\..\..\components\libc\compilers\armlibc\mem_std.c + + + stubs.c + 1 + ..\..\..\components\libc\compilers\armlibc\stubs.c + + + time.c + 1 + ..\..\..\components\libc\compilers\common\time.c + + + + + STM32_HAL + + + stm32mp1xx_hal.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal.c + + + stm32mp1xx_hal_hsem.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_hsem.c + + + stm32mp1xx_hal_exti.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_exti.c + + + stm32mp1xx_hal_ipcc.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_ipcc.c + + + stm32mp1xx_hal_cortex.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_cortex.c + + + stm32mp1xx_hal_dma.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dma.c + + + stm32mp1xx_hal_dma_ex.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dma_ex.c + + + stm32mp1xx_hal_mdma.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_mdma.c + + + stm32mp1xx_hal_pwr.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_pwr.c + + + stm32mp1xx_hal_pwr_ex.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_pwr_ex.c + + + stm32mp1xx_hal_rcc.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_rcc.c + + + stm32mp1xx_hal_rcc_ex.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_rcc_ex.c + + + stm32mp1xx_hal_gpio.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_gpio.c + + + stm32mp1xx_hal_adc.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_adc.c + + + stm32mp1xx_hal_adc_ex.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_adc_ex.c + + + stm32mp1xx_hal_dac.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dac.c + + + stm32mp1xx_hal_dac_ex.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_dac_ex.c + + + stm32mp1xx_hal_i2c.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_i2c.c + + + stm32mp1xx_hal_i2c_ex.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_i2c_ex.c + + + stm32mp1xx_hal_spi.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_spi.c + + + stm32mp1xx_hal_tim.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_tim.c + + + stm32mp1xx_hal_tim_ex.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_tim_ex.c + + + stm32mp1xx_hal_uart.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_uart.c + + + stm32mp1xx_hal_uart_ex.c + 1 + ..\libraries\STM32MPxx_HAL\STM32MP1xx_HAL_Driver\Src\stm32mp1xx_hal_uart_ex.c + + + + + + + + + + + + + + + + + <Project Info> + + + + + + 0 + 1 + + + + +
    diff --git a/bsp/stm32/stm32mp157a-st-ev1/rtconfig.h b/bsp/stm32/stm32mp157a-st-ev1/rtconfig.h new file mode 100644 index 000000000..65772b7ea --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/rtconfig.h @@ -0,0 +1,175 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 8 +#define RT_ALIGN_SIZE 4 +#define RT_THREAD_PRIORITY_32 +#define RT_THREAD_PRIORITY_MAX 32 +#define RT_TICK_PER_SECOND 100 +#define RT_USING_OVERFLOW_CHECK +#define RT_USING_HOOK +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 256 +#define RT_USING_TIMER_SOFT +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 512 +#define RT_DEBUG +#define RT_DEBUG_COLOR + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_MEMHEAP +#define RT_USING_MEMHEAP_AS_HEAP +#define RT_USING_HEAP + +/* Kernel Device Object */ + +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 128 +#define RT_CONSOLE_DEVICE_NAME "uart4" +#define RT_VER_NUM 0x40003 +#define ARCH_ARM +#define RT_USING_CPU_FFS +#define ARCH_ARM_CORTEX_M +#define ARCH_ARM_CORTEX_M4 + +/* RT-Thread Components */ + +#define RT_USING_COMPONENTS_INIT +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 +#define RT_MAIN_THREAD_PRIORITY 10 + +/* C++ features */ + + +/* Command shell */ + +#define RT_USING_FINSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_USING_DESCRIPTION +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_CMD_SIZE 80 +#define FINSH_USING_MSH +#define FINSH_USING_MSH_DEFAULT +#define FINSH_ARG_MAX 10 + +/* Device virtual file system */ + + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_PIPE_BUFSZ 512 +#define RT_USING_SERIAL +#define RT_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_PIN + +/* Using USB */ + + +/* POSIX layer and C standard library */ + +#define RT_USING_LIBC + +/* Network */ + +/* Socket abstraction layer */ + + +/* Network interface device */ + + +/* light weight TCP/IP stack */ + + +/* AT commands */ + + +/* VBUS(Virtual Software BUS) */ + + +/* Utilities */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + + +/* multimedia packages */ + + +/* tools packages */ + + +/* system packages */ + + +/* peripheral libraries and drivers */ + + +/* miscellaneous packages */ + + +/* samples: kernel and components samples */ + +#define SOC_FAMILY_STM32 +#define SOC_SERIES_STM32MP1 + +/* Hardware Drivers Config */ + +#define SOC_STM32MP157A + +/* Onboard Peripheral Drivers */ + +#define BSP_USING_STLINK_TO_USART + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART4 + +/* Board extended module Drivers */ + + +#endif diff --git a/bsp/stm32/stm32mp157a-st-ev1/rtconfig.py b/bsp/stm32/stm32mp157a-st-ev1/rtconfig.py new file mode 100644 index 000000000..b1cad1d51 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/rtconfig.py @@ -0,0 +1,150 @@ +import os + +# toolchains options +ARCH='arm' +CPU='cortex-m4' +CROSS_TOOL='gcc' + +# bsp lib config +BSP_LIBRARY_TYPE = None + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') + +# cross_tool provides the cross compiler +# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = r'C:\Users\XXYYZZ' +elif CROSS_TOOL == 'keil': + PLATFORM = 'armcc' + EXEC_PATH = r'C:/Keil_v5' +elif CROSS_TOOL == 'iar': + PLATFORM = 'iar' + EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0' + +if os.getenv('RTT_EXEC_PATH'): + EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +BUILD = 'debug' + +if PLATFORM == 'gcc': + # toolchains + PREFIX = 'arm-none-eabi-' + CC = PREFIX + 'gcc' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + CXX = PREFIX + 'g++' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + + DEVICE = ' -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections' + CFLAGS = DEVICE + ' -Dgcc' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.lds' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -gdwarf-2 -g' + AFLAGS += ' -gdwarf-2' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +elif PLATFORM == 'armcc': + # toolchains + CC = 'armcc' + CXX = 'armcc' + AS = 'armasm' + AR = 'armar' + LINK = 'armlink' + TARGET_EXT = 'axf' + + DEVICE = ' --cpu Cortex-M4.fp ' + CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' + AFLAGS = DEVICE + ' --apcs=interwork ' + LFLAGS = DEVICE + ' --scatter "board\linker_scripts\link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' + CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/include' + LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCC/lib' + + CFLAGS += ' -D__MICROLIB ' + AFLAGS += ' --pd "__MICROLIB SETA 1" ' + LFLAGS += ' --library_type=microlib ' + EXEC_PATH += '/ARM/ARMCC/bin/' + + if BUILD == 'debug': + CFLAGS += ' -g -O0' + AFLAGS += ' -g' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + CFLAGS += ' -std=c99' + + POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' + +elif PLATFORM == 'iar': + # toolchains + CC = 'iccarm' + CXX = 'iccarm' + AS = 'iasmarm' + AR = 'iarchive' + LINK = 'ilinkarm' + TARGET_EXT = 'out' + + DEVICE = '-Dewarm' + + CFLAGS = DEVICE + CFLAGS += ' --diag_suppress Pa050' + CFLAGS += ' --no_cse' + CFLAGS += ' --no_unroll' + CFLAGS += ' --no_inline' + CFLAGS += ' --no_code_motion' + CFLAGS += ' --no_tbaa' + CFLAGS += ' --no_clustering' + CFLAGS += ' --no_scheduling' + CFLAGS += ' --endian=little' + CFLAGS += ' --cpu=Cortex-M4' + CFLAGS += ' -e' + CFLAGS += ' --fpu=VFPv4_sp' + CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' + CFLAGS += ' --silent' + + AFLAGS = DEVICE + AFLAGS += ' -s+' + AFLAGS += ' -w+' + AFLAGS += ' -r' + AFLAGS += ' --cpu Cortex-M4' + AFLAGS += ' --fpu VFPv4_sp' + AFLAGS += ' -S' + + if BUILD == 'debug': + CFLAGS += ' --debug' + CFLAGS += ' -On' + else: + CFLAGS += ' -Oh' + + LFLAGS = ' --config "board/linker_scripts/link.icf"' + LFLAGS += ' --entry __iar_program_start' + + CXXFLAGS = CFLAGS + + EXEC_PATH = EXEC_PATH + '/arm/bin/' + POST_ACTION = 'ielftool --bin $TARGET rtthread.bin' + +def dist_handle(BSP_ROOT, dist_dir): + import sys + cwd_path = os.getcwd() + sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools')) + from sdk_dist import dist_do_building + dist_do_building(BSP_ROOT, dist_dir) diff --git a/bsp/stm32/stm32mp157a-st-ev1/template.ewp b/bsp/stm32/stm32mp157a-st-ev1/template.ewp new file mode 100644 index 000000000..6d6c615d1 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/template.ewp @@ -0,0 +1,2106 @@ + + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + diff --git a/bsp/stm32/stm32mp157a-st-ev1/template.eww b/bsp/stm32/stm32mp157a-st-ev1/template.eww new file mode 100644 index 000000000..c62178f07 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/template.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\template.ewp + + + + + diff --git a/bsp/stm32/stm32mp157a-st-ev1/template.uvopt b/bsp/stm32/stm32mp157a-st-ev1/template.uvopt new file mode 100644 index 000000000..ed90c9e18 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/template.uvopt @@ -0,0 +1,167 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O207 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 + + + 0 + JL2CM3 + -U30000299 -O207 -S0 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 + + + 0 + UL2CM3 + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + +
    diff --git a/bsp/stm32/stm32mp157a-st-ev1/template.uvoptx b/bsp/stm32/stm32mp157a-st-ev1/template.uvoptx new file mode 100644 index 000000000..e3a94d45e --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/template.uvoptx @@ -0,0 +1,192 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\keil\List\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 6 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FC1000 -FD10020000 + + + 0 + ST-LINKIII-KEIL_SWO + -U066BFF343339415043223048 -O206 -SF10000 -C0 -A2 -I0 -HNlocalhost -HP7184 -P1 -N00("") -D00(00000000) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8000 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD10050000 -FC1000 -FN0 + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 0 + 0 + 0 + 2 + 10000000 + + + + + + Source Group 1 + 0 + 0 + 0 + 0 + + +
    diff --git a/bsp/stm32/stm32mp157a-st-ev1/template.uvprojx b/bsp/stm32/stm32mp157a-st-ev1/template.uvprojx new file mode 100644 index 000000000..67a2556f7 --- /dev/null +++ b/bsp/stm32/stm32mp157a-st-ev1/template.uvprojx @@ -0,0 +1,411 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + rt-thread + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + STM32MP157AAAx:Cortex-M4 + STMicroelectronics + Keil.STM32MP1xx_DFP.1.3.0 + http://www.keil.com/pack/ + IRAM(0x10020000,0x00020000) IRAM2(0x10040000,0x00020000) IROM(0x10000000,0x00020000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) + + + UL2CM3(-S0 -C0 -P0 -FD10020000 -FC1000) + 0 + $$Device:STM32MP157AAAx$Drivers\CMSIS\Device\ST\STM32MP1xx\Include\stm32mp157axx_cm4.h + + + + + + + + + + $$Device:STM32MP157AAAx$SVD\STM32MP157x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\keil\Obj\ + rt-thread + 1 + 0 + 0 + 1 + 0 + .\build\keil\List\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 0 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x10020000 + 0x20000 + + + 1 + 0x10000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x10000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x10050000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\board\linker_scripts\link.sct + + + + + + + + + + + Source Group 1 + + + + + + + + + + + + + + + <Project Info> + + + + + + 0 + 1 + + + + +
    -- GitLab