Добавлен вывод стека при HardFault
This commit is contained in:
parent
ef9fe49961
commit
3c45c317e9
|
|
@ -5,7 +5,8 @@
|
||||||
#include "MainModesArbiter_Private.h"
|
#include "MainModesArbiter_Private.h"
|
||||||
#include "InternalFlashPage.h"
|
#include "InternalFlashPage.h"
|
||||||
#include "StatusData.h"
|
#include "StatusData.h"
|
||||||
//#include "FirmwareMetadataSection.h"
|
#include "HardFault.h"
|
||||||
|
#include "FirmwareMetadataSection.h"
|
||||||
|
|
||||||
#define LOGGER &env->slog.logger
|
#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_param.logger = &env->slog.logger;
|
||||||
env->flash->nf_storage_calib.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) {
|
if (CHECK_JTAG_DEBUG_ACTIVE) {
|
||||||
LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "Debug mode")
|
LoggerInfoStatic(LOGGER, LOG_TASK_MAIN, "Debug mode")
|
||||||
} else {
|
} else {
|
||||||
LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "Run mode")
|
LoggerInfoStatic(LOGGER, LOG_TASK_MAIN, "Run mode")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CHECK_PARALLEL_ENABLE) {
|
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 {
|
} 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)) {
|
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);
|
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);
|
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);
|
// Lin_6_Init(&env->linTaskSensor6, linData6, &env->linPorts->lin6_Io, &env->slog.logger);
|
||||||
// Lin6_StartThread(&env->linTaskSensor6);
|
// 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_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);
|
Adc_1_StartThread(&env->adcTask1);
|
||||||
|
|
||||||
CanUds_Init(
|
CanUds_Init(
|
||||||
|
|
@ -269,7 +306,7 @@ static void Mma_InitSubSystems(tMma *env) {
|
||||||
Lin3_StartThread(&env->linTaskActuator3);
|
Lin3_StartThread(&env->linTaskActuator3);
|
||||||
|
|
||||||
|
|
||||||
LoggerInfoStatic(&env->slog.logger, LOG_TASK_MAIN, "End of subsystem initialization")
|
LoggerInfoStatic(LOGGER, LOG_TASK_MAIN, "End of subsystem initialization")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue