From 1d4459df9de234481a3d1f1d268987b0effe7d48 Mon Sep 17 00:00:00 2001 From: cfif Date: Mon, 19 Jan 2026 15:59:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- APP/Clock.c | 6 ------ APP/main.c | 41 +++++++++++++++++++++++++++++------------ modular.json | 12 ++++++++++++ 3 files changed, 41 insertions(+), 18 deletions(-) diff --git a/APP/Clock.c b/APP/Clock.c index 6092289..82e9391 100644 --- a/APP/Clock.c +++ b/APP/Clock.c @@ -165,12 +165,6 @@ static void Bsp_PCC_Init(void) { bSP_PCC_Config.eDivider = PCC_CLK_UNINVOLVED; PCC_SetPcc(&bSP_PCC_Config); - - bSP_PCC_Config.eClockName = PCC_CLK_WKU0; - bSP_PCC_Config.bEn = true; - bSP_PCC_Config.eClkSrc = PCC_CLKGATE_UNINVOLVED; - bSP_PCC_Config.eDivider = PCC_CLK_UNINVOLVED; - PCC_SetPcc(&bSP_PCC_Config); } void Bsp_Systick_Init(void) diff --git a/APP/main.c b/APP/main.c index cefb94c..4c52420 100644 --- a/APP/main.c +++ b/APP/main.c @@ -10,11 +10,14 @@ #include "CmsisRtosThreadUtils.h" #include "SystemDelayInterface.h" #include "DeviceStorage.h" +#include "BootJump.h" + +#define BOOT_AREA_LENGTH (256 * 1024) +#define FIRMWARE_MAIN_ADDR (0x01000000 + BOOT_AREA_LENGTH) +#define FIRMWARE_MAIN_RECOVERY_ADDR (FIRMWARE_MAIN_ADDR + FIRMWARE_MAIN_AREA_LENGTH) typedef struct { - tRtcs *rtcs; tLoggerToSerialPort slog; - tStorageOnFlash *flash; tDeviceStorage storage; struct { @@ -49,21 +52,29 @@ void vApplicationStackOverflowHook(TaskHandle_t xTask, const char *pcTaskName) { #endif +const DMA_InitType dmaInitCfg = + { + .eArbitrationAlgorithm = DMA_ARBITRATION_ALGORITHM_FIXED_PRIORITY, + .bHaltOnError = false + }; static _Noreturn void MainTransmitter_Thread(tBootMma *env) { - // Настройка таймера реального времени - time_t set_timestamp = 1768553105; - RtcSet(&env->rtcs->rtcI0, &set_timestamp); - + DMA_Init(DMA_INSTANCE_0, &dmaInitCfg); + StorageOnFlash_Init(); + Rtcs_Init(); SerialPorts_Init(); + // Настройка таймера реального времени + time_t set_timestamp = 0; + RtcSet(&RTCS.rtcI0, &set_timestamp); + LoggerToSerialPort_Init( &env->slog, - 3, + 0, &SERIAL_PORTS.cliVirtualPortOut_Io, &SERIAL_PORTS.SerialPortLog_IO, - &env->rtcs->rtcI0, + &RTCS.rtcI0, SERIAL_LOGGER_SHOW_TIME | SERIAL_LOGGER_SHOW_AUTHOR | SERIAL_LOGGER_SHOW_LOG_LEVEL, 1000 ); @@ -72,11 +83,12 @@ static _Noreturn void MainTransmitter_Thread(tBootMma *env) { LoggerInfoStatic(&env->slog.logger, LOG_SIGN, "Initialization of subsystems") - bool result = DeviceStorage_Init(&env->storage, true, &env->flash->interface_calib, &env->flash->interface_param, + NVM_STORAGE.nf_storage_param.logger = &env->slog.logger; + NVM_STORAGE.nf_storage_calib.logger = &env->slog.logger; + bool result = DeviceStorage_Init(&env->storage, true, &NVM_STORAGE.interface_calib, &NVM_STORAGE.interface_param, &env->slog.logger); - env->flash->nf_storage_param.logger = &env->slog.logger; - env->flash->nf_storage_calib.logger = &env->slog.logger; + BootJumpToAddress(FIRMWARE_MAIN_ADDR); for (;;) { SystemDelayMs(1000); @@ -95,11 +107,16 @@ int main(void) { NVIC_SetPriorityGrouping(NVIC_PRIORITY_GROUP_4); + osKernelInitialize(); + tBootMma *env = &MAIN_BOOT_ENV; - InitThreadAtrStatic(&env->thread.attr, "LogTransmitter", env->thread.controlBlock, env->thread.stack, + InitThreadAtrStatic(&env->thread.attr, "BootMma", env->thread.controlBlock, env->thread.stack, osPriorityNormal); MainTransmitter_StartThread(env); + osKernelStart(); + + STOP } \ No newline at end of file diff --git a/modular.json b/modular.json index be879ce..9cb8aae 100644 --- a/modular.json +++ b/modular.json @@ -134,6 +134,12 @@ "repo": "HVAC_M7_StorageOnFlash" }, + { + "type": "git", + "provider": "HVAC_M7", + "repo": "HVAC_M7_Rtcs" + }, + { "type": "git", "provider": "HVAC_M7", @@ -146,6 +152,12 @@ "repo": "HVAC_BOOT_M7_SerialPorts" }, + { + "type": "git", + "provider": "HVAC_M7", + "repo": "BootJump_Flagchip_FC7240" + }, + { "type": "local", "dir": "APP"