Добавлен вывод стека при HardFault
This commit is contained in:
parent
ef9fe49961
commit
3c45c317e9
|
|
@ -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")
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue