diff --git a/APP/main.c b/APP/main.c index f889caa..fe6784a 100644 --- a/APP/main.c +++ b/APP/main.c @@ -70,6 +70,14 @@ void vApplicationStackOverflowHook(TaskHandle_t xTask, const char *pcTaskName) { void FirmwareStopThread() { ModelTask_StopThread(&MAIN_ENV.ModelTask); + Lin123_StopThread(&MAIN_ENV.linTaskActuator1); + Lin123_StopThread(&MAIN_ENV.linTaskActuator2); + Lin123_StopThread(&MAIN_ENV.linTaskActuator3); + Lin4_StopThread(&MAIN_ENV.linTaskSensor4); + Lin5_StopThread(&MAIN_ENV.linTaskSensor5); + ADC0_StopThread(&MAIN_ENV.adcTask0); + ADC1_StopThread(&MAIN_ENV.adcTask1); + } int main(void) { diff --git a/MODULES/HVAC_M7_ADC_TASKS/AdcTasks.c b/MODULES/HVAC_M7_ADC_TASKS/AdcTasks.c index 85dcad6..9f1a460 100644 --- a/MODULES/HVAC_M7_ADC_TASKS/AdcTasks.c +++ b/MODULES/HVAC_M7_ADC_TASKS/AdcTasks.c @@ -76,6 +76,12 @@ void Adc_0_Init(tAdc0Task *env, // osPriorityNormal); } +void ADC0_StopThread(tAdc0Task *env) { + if (env->thread.id) { + osThreadSuspend(env->thread.id); + } +} + void BTS5180_120(tAdc0Task *env, char *desc, uint16_t adc_value) { float kILIS = 550.0f; @@ -638,6 +644,11 @@ void Adc_1_Init(tAdc1Task *env, // osPriorityNormal); } +void ADC1_StopThread(tAdc1Task *env) { + if (env->thread.id) { + osThreadSuspend(env->thread.id); + } +} static _Noreturn void Adc1_Thread(tAdc1Task *env) { diff --git a/MODULES/HVAC_M7_ADC_TASKS/AdcTasks.h b/MODULES/HVAC_M7_ADC_TASKS/AdcTasks.h index e56866a..7cded33 100644 --- a/MODULES/HVAC_M7_ADC_TASKS/AdcTasks.h +++ b/MODULES/HVAC_M7_ADC_TASKS/AdcTasks.h @@ -279,6 +279,7 @@ void Adc_0_Init(tAdc0Task *env, tLoggerInterface *logger); void Adc_0_StartThread(tAdc0Task *env); +void ADC0_StopThread(tAdc0Task *env); void getCmdBusADCData(tAdc0Task *env, CmdBusADCData *cmdBusADCData); @@ -288,6 +289,7 @@ void Adc_1_Init(tAdc1Task *env, tLoggerInterface *logger); void Adc_1_StartThread(tAdc1Task *env); +void ADC1_StopThread(tAdc1Task *env); void getCmdBusADC2Data(tAdc1Task *env, CmdBusADC2Data *cmdBusADC2Data); diff --git a/MODULES/HVAC_M7_CAN_UDS/CanUds.h b/MODULES/HVAC_M7_CAN_UDS/CanUds.h index 280d5ab..5b78576 100644 --- a/MODULES/HVAC_M7_CAN_UDS/CanUds.h +++ b/MODULES/HVAC_M7_CAN_UDS/CanUds.h @@ -23,18 +23,19 @@ #define timeout_session_S3_Server 7000 -#define ADR_HEX_BlockBoot 0x01000000 -#define ADR_HEX_BlockMain 0x01010000 -#define ADR_HEX_BlockCalib 0x010C0000 - -#define ADR_HEX_Mapped_BlockBoot 0x01100000 -#define ADR_HEX_Mapped_BlockMain 0x01110000 -#define ADR_HEX_Mapped_BlockCalib 0x011C0000 - #define SIZE_HEX_BlockBoot (64 * 1024) #define SIZE_HEX_BlockMain (768 * 1024) #define SIZE_HEX_BlockCalib (192 * 1024) +#define ADR_HEX_BlockBoot 0x01000000 +#define ADR_HEX_BlockMain 0x01010000 +#define ADR_HEX_BlockCalib (0x01010000 + SIZE_HEX_BlockMain) + +#define ADR_HEX_Mapped_BlockBoot 0x01100000 +#define ADR_HEX_Mapped_BlockMain 0x01110000 +#define ADR_HEX_Mapped_BlockCalib (0x01110000 + SIZE_HEX_BlockMain) + + #define LEN_DEBUG_UDS_BUFF 128 diff --git a/MODULES/HVAC_M7_Command/TasksInfo.c b/MODULES/HVAC_M7_Command/TasksInfo.c index 9471274..1e2a634 100644 --- a/MODULES/HVAC_M7_Command/TasksInfo.c +++ b/MODULES/HVAC_M7_Command/TasksInfo.c @@ -10,6 +10,15 @@ char bufSprintf[1024]; +const char* eTaskState_Strings[] = { + "Running", + "Ready", + "Blocked", + "Suspended", + "Deleted", + "Invalid" +}; + int32_t vTaskGetRunTime(void *env, tCliCmd *cli) { tCommandLine *envCommandLine = env; @@ -27,9 +36,10 @@ int32_t vTaskGetRunTime(void *env, tCliCmd *cli) { for (x = 0; x < uxArraySize; x++) { - sprintf(&bufSprintf[p], "%lu\t%d\t%s\n", + sprintf(&bufSprintf[p], "%lu\t%d\t%s\t%s\n", pxTaskStatusArray[x].xTaskNumber, pxTaskStatusArray[x].usStackHighWaterMark, + eTaskState_Strings[pxTaskStatusArray[x].eCurrentState], pxTaskStatusArray[x].pcTaskName); p = strlen(bufSprintf); diff --git a/MODULES/HVAC_M7_LIN_TASKS/LinActuatorTasks.c b/MODULES/HVAC_M7_LIN_TASKS/LinActuatorTasks.c index b1898dd..98096cb 100644 --- a/MODULES/HVAC_M7_LIN_TASKS/LinActuatorTasks.c +++ b/MODULES/HVAC_M7_LIN_TASKS/LinActuatorTasks.c @@ -1392,6 +1392,13 @@ void Lin3_StartThread(tLinTaskActuator *env) { } } +void Lin123_StopThread(tLinTaskActuator *env) { + if (env->threadLin.id) { + osThreadSuspend(env->threadLin.id); + } +} + + //конец----------------------------------------- LIN 3 ---------------------------------------------------------------- //конец----------------------------------------- LIN 3 ---------------------------------------------------------------- //конец----------------------------------------- LIN 3 ---------------------------------------------------------------- diff --git a/MODULES/HVAC_M7_LIN_TASKS/LinActuatorTasks.h b/MODULES/HVAC_M7_LIN_TASKS/LinActuatorTasks.h index da160f0..2c4dff7 100644 --- a/MODULES/HVAC_M7_LIN_TASKS/LinActuatorTasks.h +++ b/MODULES/HVAC_M7_LIN_TASKS/LinActuatorTasks.h @@ -518,5 +518,6 @@ void Lin3_StartThread(tLinTaskActuator *env); void GetLin123CallbackHandler(tLinData *env, uint8_t u8LinIndex, void *state); +void Lin123_StopThread(tLinTaskActuator *env); #endif //HVAC_LIN_TASKS_H diff --git a/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.c b/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.c index 844618b..249f173 100644 --- a/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.c +++ b/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.c @@ -539,6 +539,12 @@ void Lin4_StartThread(tLin4TaskSensor *env) { } } +void Lin4_StopThread(tLin4TaskSensor *env) { + if (env->threadLin.id) { + osThreadSuspend(env->threadLin.id); + } +} + //конец----------------------------------------- LIN 4 ---------------------------------------------------------------- //конец----------------------------------------- LIN 4 ---------------------------------------------------------------- //конец----------------------------------------- LIN 4 ---------------------------------------------------------------- @@ -917,6 +923,12 @@ void Lin5_StartThread(tLin5TaskSensor *env) { } } +void Lin5_StopThread(tLin5TaskSensor *env) { + if (env->threadLin.id) { + osThreadSuspend(env->threadLin.id); + } +} + //конец----------------------------------------- LIN 5 ---------------------------------------------------------------- //конец----------------------------------------- LIN 5 ---------------------------------------------------------------- //конец----------------------------------------- LIN 5 ---------------------------------------------------------------- diff --git a/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.h b/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.h index 6a0c5ed..80703de 100644 --- a/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.h +++ b/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.h @@ -421,6 +421,7 @@ void Lin_4_Init(tLin4TaskSensor *env, tLoggerInterface *logger); void Lin4_StartThread(tLin4TaskSensor *env); +void Lin4_StopThread(tLin4TaskSensor *env); void Lin4_Input_Set_From_Model(tLin4TaskSensor *env); void Lin4_Output_Get_From_Model(tLin4TaskSensor *env); @@ -431,6 +432,7 @@ void Lin_5_Init(tLin5TaskSensor *env, tLoggerInterface *logger); void Lin5_StartThread(tLin5TaskSensor *env); +void Lin5_StopThread(tLin5TaskSensor *env); void Lin5_Output_Get_From_Model(tLin5TaskSensor *env); diff --git a/MODULES/VarTabDumpObserver/VarTabDumpObserver.c b/MODULES/VarTabDumpObserver/VarTabDumpObserver.c index dade3a1..6d56f59 100644 --- a/MODULES/VarTabDumpObserver/VarTabDumpObserver.c +++ b/MODULES/VarTabDumpObserver/VarTabDumpObserver.c @@ -45,7 +45,7 @@ void VarsTabDumpObserver_Init( env->accessDumper = osMutexNew(NULL); env->thread.stack = tVarsTabDumpObserver_stack; - InitThreadAtr(&env->thread.attr,"Data",&env->thread.controlBlock,sizeof(env->thread.controlBlock),env->thread.stack,tVarsTabDumpObserver_stack_size,osPriorityNormal); + InitThreadAtr(&env->thread.attr,"DumpObserv",&env->thread.controlBlock,sizeof(env->thread.controlBlock),env->thread.stack,tVarsTabDumpObserver_stack_size,osPriorityNormal); env->thread.id = 0; // InitThreadAtrStatic(&env->thread.attr, "Data", env->thread.controlBlock, env->thread.stack, osPriorityNormal); diff --git a/WORK/HVAC_M7.bin b/WORK/HVAC_M7.bin index 6e3d7ee..008d1a1 100755 Binary files a/WORK/HVAC_M7.bin and b/WORK/HVAC_M7.bin differ diff --git a/WORK/HVAC_MAIN.bin b/WORK/HVAC_MAIN.bin index 7bdc0e8..b211b57 100644 Binary files a/WORK/HVAC_MAIN.bin and b/WORK/HVAC_MAIN.bin differ diff --git a/WORK/create.sh b/WORK/create.sh index d352c0d..af659ff 100755 --- a/WORK/create.sh +++ b/WORK/create.sh @@ -60,7 +60,7 @@ echo -e "\n--- Converting to HEX ---" objcopy -I binary -O ihex --change-addresses 0x01010000 HVAC_MAIN.bin HVAC_MAIN.hex && \ echo "✓ HEX MAIN OK" || echo "✗ HEX MAIN failed" -objcopy -I binary -O ihex --change-addresses 0x010C0000 HVAC_CALIB.bin HVAC_CALIB.hex && \ +objcopy -I binary -O ihex --change-addresses 0x010D0000 HVAC_CALIB.bin HVAC_CALIB.hex && \ echo "✓ HEX CALIB OK" || echo "✗ HEX CALIB failed" objcopy -I binary -O ihex --change-addresses 0x01000000 HVAC_BOOT_OTA_M7.bin HVAC_BOOT_OTA_M7.hex && \