diff --git a/APP/main.c b/APP/main.c index abbe00b..f28bb0b 100644 --- a/APP/main.c +++ b/APP/main.c @@ -85,6 +85,15 @@ int main(void) { Bsp_CLOCK_Init(); + uint32_t a = 10; + + ++a; + + uint32_t v = 0; + for (int i=0; i<11; ++i) { + v++; + } + NVIC_SetPriorityGrouping(NVIC_PRIORITY_GROUP_4); osKernelInitialize(); diff --git a/CMakeLists.txt b/CMakeLists.txt index 06e0223..4212cf7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,8 +3,12 @@ SET(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/MODULES/CmakeConfig_GCC_CortexM7/gc ENABLE_LANGUAGE(ASM) CMAKE_MINIMUM_REQUIRED(VERSION 3.8.0) -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0") -set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ") +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 ") + + + + IF (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) MESSAGE( diff --git a/MODULES/CmakeConfig_GCC_CortexM7/gcc_cm7f.cmake b/MODULES/CmakeConfig_GCC_CortexM7/gcc_cm7f.cmake index d4853b0..d47daee 100644 --- a/MODULES/CmakeConfig_GCC_CortexM7/gcc_cm7f.cmake +++ b/MODULES/CmakeConfig_GCC_CortexM7/gcc_cm7f.cmake @@ -17,7 +17,8 @@ SET(CMAKE_OBJDUMP "arm-none-eabi-objdump${TOOL_EXECUTABLE_SUFFIX}" CACHE STRING SET(CMAKE_SIZE "arm-none-eabi-size${TOOL_EXECUTABLE_SUFFIX}" CACHE STRING "size tool") #-- Common flags --------------------------------------------------------------- -SET(COMPILER_COMMON_FLAGS "-mcpu=cortex-m7 -march=armv7e-m+fp -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16 -Wall -Wextra -ffunction-sections -fdata-sections -mlong-calls -Wno-unused-function -Wno-unused-variable -Wno-unused-parameter -fno-builtin -fno-builtin-printf") +#SET(COMPILER_COMMON_FLAGS "-mcpu=cortex-m7 -march=armv7e-m+fp -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16 -Wall -Wextra -ffunction-sections -fdata-sections -mlong-calls -Wno-unused-function -Wno-unused-variable -Wno-unused-parameter -fno-builtin -fno-builtin-printf") +SET(COMPILER_COMMON_FLAGS "-mcpu=cortex-m7 -march=armv7e-m+fp -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16 -Wall -Wextra -ffunction-sections -fdata-sections -Wno-unused-function -Wno-unused-variable -Wno-unused-parameter -fno-builtin -fno-builtin-printf") SET(CMAKE_C_FLAGS "${COMPILER_COMMON_FLAGS} -std=gnu99" CACHE STRING "c compiler flags") SET(CMAKE_CXX_FLAGS "${COMPILER_COMMON_FLAGS} -std=c++11" CACHE STRING "c++ compiler flags") SET(CMAKE_ASM_FLAGS "-mthumb -mcpu=cortex-m7" CACHE STRING "assembler compiler flags") @@ -26,8 +27,8 @@ SET(CMAKE_MODULE_LINKER_FLAGS "-mcpu=cortex-m7 -march=armv7e-m+fp -mthumb -mfloa SET(CMAKE_SHARED_LINKER_FLAGS "-mcpu=cortex-m7 -march=armv7e-m+fp -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16" CACHE STRING "shared linker flags") #-- Debug flags ---------------------------------------------------------------- -SET(CMAKE_C_FLAGS_DEBUG "-g -Og -DDEBUG" CACHE STRING "c compiler flags debug") -SET(CMAKE_CXX_FLAGS_DEBUG "-g -Og -DDEBUG" CACHE STRING "c++ compiler flags debug") +SET(CMAKE_C_FLAGS_DEBUG " -g -Og -DDEBUG " CACHE STRING "c compiler flags debug") +SET(CMAKE_CXX_FLAGS_DEBUG "-g -Og -DDEBUG " CACHE STRING "c++ compiler flags debug") SET(CMAKE_ASM_FLAGS_DEBUG "-g" CACHE STRING "assembler compiler flags debug") SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "" CACHE STRING "linker flags debug") diff --git a/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.h b/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.h index 31e13d5..89f6ae7 100644 --- a/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.h +++ b/MODULES/HVAC_M7_LIN_TASKS/LinSensorTasks.h @@ -12,7 +12,7 @@ #include "HVAC_model.h" #define LOG_LIN4_SENSOR 0 -#define LOG_LIN5_SENSOR 1 +#define LOG_LIN5_SENSOR 0 #define LIN4_SENSOR_COUNT 7 diff --git a/MODULES/HVAC_M7_MODEL/Model_Task.c b/MODULES/HVAC_M7_MODEL/Model_Task.c index 9e561f7..9187e9a 100644 --- a/MODULES/HVAC_M7_MODEL/Model_Task.c +++ b/MODULES/HVAC_M7_MODEL/Model_Task.c @@ -677,7 +677,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { //начало--------------------------------------------------ВХОД МОДЕЛИ CAN----------------------------------------------- - get_CanSpamReceiver(env->canSpamReceiver, env->GET_HVAC_VIN, &env->CAN_ERROR_MISSLE, &env->CAN_TIME_MISSLE); + get_CanSpamReceiver(env->canSpamReceiver, env->GET_HVAC_VIN, &env->CAN_ERROR_MISSING, &env->CAN_TIME_MISSING); // Если был захват в UDS (подмена) if (model_Status_Set_For_Model_output.EMS == 1) { @@ -702,11 +702,11 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { //конец--------------------------------------------------ВХОД МОДЕЛИ SLEEP---------------------------------------------- //начало-------------------------------------------------ВХОД МОДЕЛИ LIN4 LIN5------------------------------------------ - Lin123_Output_Get_From_Model(env->linTaskActuator1, env->LIN1_ERROR_MISSLE); - Lin123_Output_Get_From_Model(env->linTaskActuator2, env->LIN2_ERROR_MISSLE); - Lin123_Output_Get_From_Model(env->linTaskActuator3, env->LIN3_ERROR_MISSLE); - Lin4_Output_Get_From_Model(env->lin4TaskSensor, env->LIN4_ERROR_MISSLE); - Lin5_Output_Get_From_Model(env->lin5TaskSensor, env->LIN5_ERROR_MISSLE); + Lin123_Output_Get_From_Model(env->linTaskActuator1, env->LIN1_ERROR_MISSING); + Lin123_Output_Get_From_Model(env->linTaskActuator2, env->LIN2_ERROR_MISSING); + Lin123_Output_Get_From_Model(env->linTaskActuator3, env->LIN3_ERROR_MISSING); + Lin4_Output_Get_From_Model(env->lin4TaskSensor, env->LIN4_ERROR_MISSING); + Lin5_Output_Get_From_Model(env->lin5TaskSensor, env->LIN5_ERROR_MISSING); //конец--------------------------------------------------ВХОД МОДЕЛИ LIN4 LIN5------------------------------------------ //ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ @@ -902,7 +902,9 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { if (SystemGetMs() > timeDTC) { set_Dtc_state(env->diagnostic, &env->ccu_candb_tx.CCU_Errors, env->dtc_state_error, - env->GET_HVAC_VIN, &env->CAN_ERROR_MISSLE, &env->CAN_TIME_MISSLE); + env->GET_HVAC_VIN, &env->CAN_ERROR_MISSING, &env->CAN_TIME_MISSING, env->LIN1_ERROR_MISSING, + env->LIN2_ERROR_MISSING, env->LIN3_ERROR_MISSING, env->LIN4_ERROR_MISSING, + env->LIN5_ERROR_MISSING); } //конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC------------------------------------------- diff --git a/MODULES/HVAC_M7_MODEL/Model_Task.h b/MODULES/HVAC_M7_MODEL/Model_Task.h index 29b677b..4763986 100644 --- a/MODULES/HVAC_M7_MODEL/Model_Task.h +++ b/MODULES/HVAC_M7_MODEL/Model_Task.h @@ -40,16 +40,16 @@ typedef struct { osMutexId_t access; char GET_HVAC_VIN[17]; - ccu_candb_error_missing_rx_t CAN_ERROR_MISSLE; - ccu_candb_time_missing_rx_t CAN_TIME_MISSLE; + ccu_candb_error_missing_rx_t CAN_ERROR_MISSING; + ccu_candb_time_missing_rx_t CAN_TIME_MISSING; - uint8_t LIN1_ERROR_MISSLE[9]; - uint8_t LIN2_ERROR_MISSLE[9]; - uint8_t LIN3_ERROR_MISSLE[9]; + uint8_t LIN1_ERROR_MISSING[9]; + uint8_t LIN2_ERROR_MISSING[9]; + uint8_t LIN3_ERROR_MISSING[9]; - uint8_t LIN4_ERROR_MISSLE[LIN4_SENSOR_COUNT]; - uint8_t LIN5_ERROR_MISSLE[LIN5_SENSOR_COUNT]; + uint8_t LIN4_ERROR_MISSING[LIN4_SENSOR_COUNT]; + uint8_t LIN5_ERROR_MISSING[LIN5_SENSOR_COUNT]; uint8_t dtc_state_error[127]; diff --git a/MODULES/HVAC_M7_StatusData/DiagnosticTask.c b/MODULES/HVAC_M7_StatusData/DiagnosticTask.c index fdbf513..600bcbc 100644 --- a/MODULES/HVAC_M7_StatusData/DiagnosticTask.c +++ b/MODULES/HVAC_M7_StatusData/DiagnosticTask.c @@ -354,7 +354,8 @@ setErrorDTC_CAN_VIN(uint8_t *dtc_state_error_model, ccu_candb_error_missing_rx_t } -static void setErrorDTC_CAN(tDiagnostic *env, uint8_t *dtc_state_error_model, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE) { +static void +setErrorDTC_CAN(tDiagnostic *env, uint8_t *dtc_state_error_model, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE) { uint32_t timeCanSpamReceiver = getCanTimeReceived(env->canSpamReceiver) + 3000; uint32_t time = SystemGetMs(); @@ -427,13 +428,63 @@ static void setErrorDTC_CAN(tDiagnostic *env, uint8_t *dtc_state_error_model, cc } } -static void setErrorDTC_LIN() { -// Actuator_Ch0_Status_Model. +static void +setErrorDTC_LIN(uint8_t *dtc_state_error_model, uint8_t *LIN1_ERROR_MISSING, uint8_t *LIN2_ERROR_MISSING, uint8_t +*LIN3_ERROR_MISSING, uint8_t *LIN4_ERROR_MISSING, uint8_t *LIN5_ERROR_MISSING) { + + for (uint8_t i = 0; i < 9; ++i) { + if (LIN1_ERROR_MISSING[i]) { + dtc_state_error_model[i + 93] = DTC_TEST_FAILED_CONFIRMED; + } else { + dtc_state_error_model[i + 93] = dtc_state_error[i + 93] & (~(DTC_TEST_FAILED)); + } + } + + for (uint8_t i = 0; i < 6; ++i) { + if (LIN2_ERROR_MISSING[i]) { + dtc_state_error_model[i + 102] = DTC_TEST_FAILED_CONFIRMED; + } else { + dtc_state_error_model[i + 102] = dtc_state_error[i + 102] & (~(DTC_TEST_FAILED)); + } + } + + + for (uint8_t i = 0; i < 9; ++i) { + if (LIN3_ERROR_MISSING[i]) { + dtc_state_error_model[i + 109] = DTC_TEST_FAILED_CONFIRMED; + } else { + dtc_state_error_model[i + 109] = dtc_state_error[i + 109] & (~(DTC_TEST_FAILED)); + } + } + + for (uint8_t i = 0; i < 7; ++i) { + if (LIN4_ERROR_MISSING[i]) { + dtc_state_error_model[i + 117] = DTC_TEST_FAILED_CONFIRMED; + } else { + dtc_state_error_model[i + 117] = dtc_state_error[i + 117] & (~(DTC_TEST_FAILED)); + } + } + + + if ((LIN5_ERROR_MISSING[2]) || (LIN5_ERROR_MISSING[3]) || (LIN5_ERROR_MISSING[6]) || (LIN5_ERROR_MISSING[7])) { + dtc_state_error_model[DTC_LOST_COMM_DRS_FRONT] = DTC_TEST_FAILED_CONFIRMED; + } else { + dtc_state_error_model[DTC_LOST_COMM_DRS_FRONT] = dtc_state_error[DTC_LOST_COMM_DRS_FRONT] & (~(DTC_TEST_FAILED)); + } + + if ((LIN5_ERROR_MISSING[0]) || (LIN5_ERROR_MISSING[1]) || (LIN5_ERROR_MISSING[4]) || (LIN5_ERROR_MISSING[5])) { + dtc_state_error_model[DTC_LOST_COMM_DRS_REAR] = DTC_TEST_FAILED_CONFIRMED; + } else { + dtc_state_error_model[DTC_LOST_COMM_DRS_REAR] = dtc_state_error[DTC_LOST_COMM_DRS_REAR] & (~(DTC_TEST_FAILED)); + } + } void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, uint8_t *dtc_state_error_model, char *VIN, - ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE) { + ccu_candb_error_missing_rx_t *CAN_ERROR_MISSING, ccu_candb_time_missing_rx_t *CAN_TIME_MISSING, + uint8_t *LIN1_ERROR_MISSING, uint8_t *LIN2_ERROR_MISSING, uint8_t *LIN3_ERROR_MISSING, + uint8_t *LIN4_ERROR_MISSING, uint8_t *LIN5_ERROR_MISSING) { if (osMutexAcquire(env->access, 5000) == osOK) { @@ -445,7 +496,6 @@ void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, } - for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) { if (dtc_state_error_model[i]) { dtc_state_error_model[i] = DTC_TEST_FAILED_CONFIRMED; @@ -454,8 +504,11 @@ void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, } } - setErrorDTC_CAN_VIN(dtc_state_error_model, CAN_ERROR_MISSLE, VIN, CCU_Errors); - setErrorDTC_CAN(env, dtc_state_error_model, CAN_ERROR_MISSLE); + setErrorDTC_LIN(dtc_state_error_model, LIN1_ERROR_MISSING, LIN2_ERROR_MISSING, LIN3_ERROR_MISSING, + LIN4_ERROR_MISSING, + LIN5_ERROR_MISSING); + setErrorDTC_CAN_VIN(dtc_state_error_model, CAN_ERROR_MISSING, VIN, CCU_Errors); + setErrorDTC_CAN(env, dtc_state_error_model, CAN_ERROR_MISSING); if (memcmp(dtc_state_error, dtc_state_error_model, sizeof(dtc_state_error)) != 0) { diff --git a/MODULES/HVAC_M7_StatusData/DiagnosticTask.h b/MODULES/HVAC_M7_StatusData/DiagnosticTask.h index dff2e69..88168d7 100644 --- a/MODULES/HVAC_M7_StatusData/DiagnosticTask.h +++ b/MODULES/HVAC_M7_StatusData/DiagnosticTask.h @@ -36,8 +36,11 @@ typedef struct { void Diagnostic_Init(tDiagnostic *env, tCanSpamReceiver *canSpamReceiver, tLoggerInterface *logger); void set_NoBitsDTC(tDiagnostic *env, bool noBitsDTC); -void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, uint8_t *dtc_state_error_model, char *VIN, - ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE); +void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, + uint8_t *dtc_state_error_model, char *VIN, + ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE, + uint8_t *LIN1_ERROR_MISSING, uint8_t *LIN2_ERROR_MISSING, uint8_t *LIN3_ERROR_MISSING, + uint8_t *LIN4_ERROR_MISSING, uint8_t *LIN5_ERROR_MISSING); uint32_t diagnostic_ClearDiagnosticInformation_14(tDiagnostic *env); uint32_t diagnostic_UDS_ReadDTCInformation_19_count(tDiagnostic *env, tDiagnosticDTC *diagnosticDTC); uint32_t diagnostic_UDS_ReadDTCInformation_19_dtc(tDiagnostic *env, tDiagnosticDTC *diagnosticDTC);