From 3c45c317e9941ff6bc9e2828950f56a7651b734d Mon Sep 17 00:00:00 2001 From: cfif Date: Tue, 14 Jul 2026 17:34:02 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D1=81=D1=82=D0=B5?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D1=80=D0=B8=20HardFault?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MainModesArbiter_InitStage.c | 59 +++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 11 deletions(-) diff --git a/MainModesArbiter_InitStage.c b/MainModesArbiter_InitStage.c index 96c6308..ed8e81c 100644 --- a/MainModesArbiter_InitStage.c +++ b/MainModesArbiter_InitStage.c @@ -5,7 +5,8 @@ #include "MainModesArbiter_Private.h" #include "InternalFlashPage.h" #include "StatusData.h" -//#include "FirmwareMetadataSection.h" +#include "HardFault.h" +#include "FirmwareMetadataSection.h" #define LOGGER &env->slog.logger @@ -52,29 +53,65 @@ static void Mma_InitSubSystems(tMma *env) { env->flash->nf_storage_param.logger = &env->slog.logger; env->flash->nf_storage_calib.logger = &env->slog.logger; + tFirmwareMetaMap *firmwareMetaMap_Boot = (tFirmwareMetaMap *) ADR_META_BOOT; + tFirmwareMetaMap *firmwareMetaMap_Main = (tFirmwareMetaMap *) ADR_META_MAIN; + + char dataTmp[10]; + memset(dataTmp, 0, sizeof(dataTmp)); + memcpy(dataTmp, firmwareMetaMap_Boot->fingerprint.testerCode, 9); + + LoggerFormatInfo(LOGGER, LOG_TASK_MAIN, "Boot: ModuleID: %d, testerCode: %s, year: 0x%02X, month: 0x%02X day: 0x%02X", + firmwareMetaMap_Boot->fingerprint.ModuleID, + dataTmp, + firmwareMetaMap_Boot->fingerprint.year, + firmwareMetaMap_Boot->fingerprint.month, + firmwareMetaMap_Boot->fingerprint.day); + + memcpy(dataTmp, firmwareMetaMap_Main->fingerprint.testerCode, 9); + + LoggerFormatInfo(LOGGER, LOG_TASK_MAIN, "Main: ModuleID: %d, testerCode: %s, year: 0x%02X, month: 0x%02X day: 0x%02X", + firmwareMetaMap_Main->fingerprint.ModuleID, + dataTmp, + firmwareMetaMap_Main->fingerprint.year, + firmwareMetaMap_Main->fingerprint.month, + firmwareMetaMap_Main->fingerprint.day); + + + + if (hardFault_magic == 0xDEADBEEF) { + hardFault_magic = 0; + + LoggerFormatError(LOGGER, LOG_TASK_MAIN, "HardFault addresses (%d):", hardFault_count); + + for (uint32 i = 0; i < hardFault_count; ++i) { + LoggerFormatError(LOGGER, LOG_TASK_MAIN, " [%d] 0x%08X", i, hardFault_addresses[i]); + } + + } if (CHECK_JTAG_DEBUG_ACTIVE) { - LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "Debug mode") + LoggerInfoStatic(LOGGER, LOG_TASK_MAIN, "Debug mode") } else { - LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "Run mode") + LoggerInfoStatic(LOGGER, LOG_TASK_MAIN, "Run mode") } if (CHECK_PARALLEL_ENABLE) { - LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "Parallel memory access enabled (OTA update unavailable)") + LoggerInfoStatic(LOGGER, LOG_TASK_MAIN, "Parallel memory access enabled (OTA update unavailable)") } else { - LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "Parallel memory access disabled (OTA update available)") + LoggerInfoStatic(LOGGER, LOG_TASK_MAIN, "Parallel memory access disabled (OTA update available)") } if (RGM_SRS_WAKEUP_MASK == (RGM->SRS & RGM_SRS_WAKEUP_MASK)) { - LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "Wake up from standby") + LoggerInfoStatic(LOGGER, LOG_TASK_MAIN, "Wake up from standby") - tGpioPin Ign_Wakeup = vInitGpioPinPull(GPIO_E, PORT_PIN_16, GPIO_IN, GPIO_PIN_NOREVERSE, GPIO_HIGH, GPIO_PUSH_PULL, + tGpioPin Ign_Wakeup = vInitGpioPinPull(GPIO_E, PORT_PIN_16, GPIO_IN, GPIO_PIN_NOREVERSE, GPIO_HIGH, + GPIO_PUSH_PULL, PORT_PULL_UP); } - LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "Initialization of subsystems") + LoggerInfoStatic(LOGGER, LOG_TASK_MAIN, "Initialization of subsystems") // Инициализация периферийных интерфейсов InitPeripheralInterfaces(&env->slog.logger); @@ -183,10 +220,10 @@ static void Mma_InitSubSystems(tMma *env) { // Lin_6_Init(&env->linTaskSensor6, linData6, &env->linPorts->lin6_Io, &env->slog.logger); // Lin6_StartThread(&env->linTaskSensor6); - Adc_0_Init(&env->adcTask0, &env->adcs->adc_0_IO, env->gpios, &env->slog.logger); + Adc_0_Init(&env->adcTask0, &env->adcs->adc_0_IO, env->gpios, &env->slog.logger); Adc_0_StartThread(&env->adcTask0); - Adc_1_Init(&env->adcTask1, &env->adcs->adc_1_IO, env->gpios, &env->slog.logger); + Adc_1_Init(&env->adcTask1, &env->adcs->adc_1_IO, env->gpios, &env->slog.logger); Adc_1_StartThread(&env->adcTask1); CanUds_Init( @@ -269,7 +306,7 @@ static void Mma_InitSubSystems(tMma *env) { Lin3_StartThread(&env->linTaskActuator3); - LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "End of subsystem initialization") + LoggerInfoStatic(LOGGER, LOG_TASK_MAIN, "End of subsystem initialization") }