/** ########################################################################## ** Filename : ** Project : ** Module : ** Processor : ** Version : ** Compiler : ** Date/Time : ** Abstract : ** Contents : ** Note : ** ** (c) Copyright dmdz Co.,Ltd ** -------------------------------------------------------------------------- ** R E V I S I O N H I S T O R Y ** -------------------------------------------------------------------------- ** Date Ver Author Description ** -20230602- --V1.0-- --mingyea--- --修改-- ** #########################################################################*/ #ifndef CALIBRATION_H__ #define CALIBRATION_H__ /*--------------------------------------------------------------------------- - I N C L U D E F I L E S ----------------------------------------------------------------------------*/ #include "common_types.h" #include "nvm.h" #include "boot_app_cfg.h" #include "Cpu.h" /*--------------------------------------------------------------------------- - D E F I N E S / M A C R O S ----------------------------------------------------------------------------*/ #define CAL_CPU_SR_ALLOC() CPU_SR_ALLOC() #define CAL_ENTER_CRITICAL() ENTER_CRITICAL() #define CAL_EXIT_CRITICAL() EXIT_CRITICAL() #if 0 typedef enum { DID_TYPE_CONST = 0u, DID_TYPE_VOLATILE }did_type_t; #else typedef u8 did_type_t; #define DID_TYPE_CONST 0u #define DID_TYPE_VOLATILE 1u #endif #if 0 typedef enum { READ_ONLY = 0u, WRITE_ONLY, READ_AND_WRITE, }r_w_type_t; #else typedef u8 r_w_type_t; #define READ_ONLY 0u #define WRITE_ONLY 1u #define READ_AND_WRITE 2u #endif /**********这些地址是从,BOOT区复制而来*********/ #define SYSDID_F180_ADDR BOOT_CALIBRATION_START_ADDR #define SYSDID_F180_LEN 9u #define SYSDID_F180_CK_LEN (SYSDID_F180_LEN+1u) //留一字节做为校验 #define SYSDID_F181_ADDR (SYSDID_F180_ADDR+SYSDID_F180_CK_LEN) #define SYSDID_F181_LEN 15u #define SYSDID_F181_CK_LEN (SYSDID_F181_LEN+1u) //留一字节做为校验 #define SYSDID_F194_SELF_ADDR (SYSDID_F181_ADDR+SYSDID_F181_CK_LEN) #define SYSDID_F194_SELF_LEN 9u #define SYSDID_F194_SELF_CK_LEN (SYSDID_F194_SELF_LEN+1u) //留一字节做为校验 #if 0 #define SYSDID_F182_ADDR (SYSDID_F181_ADDR+SYSDID_F181_CK_LEN) #define SYSDID_F182_LEN 14 #define SYSDID_F182_CK_LEN (SYSDID_F182_LEN+1) //留一字节做为校验 #endif #if 0 #define SYSDID_F19E_ADDR (SYSDID_F182_ADDR+SYSDID_F182_CK_LEN) #define SYSDID_F19E_LEN 14 #define SYSDID_F19E_CK_LEN (SYSDID_F19E_LEN+1) //留一字节做为校验 #endif #define SYSDID_F1F2_ADDR (SYSDID_F194_SELF_ADDR+SYSDID_F194_SELF_CK_LEN) #define SYSDID_F1F2_LEN 14u #define SYSDID_F1F2_CK_LEN (SYSDID_F1F2_LEN+1u) //留一字节做为校验 /*********这些是app区定义的***目前用了 151字节**********/ #define SYSDID_RD_START_ADDR APP_CALIBRATION_START_ADDR // #define SYSDID_F182_ADDR SYSDID_RD_START_ADDR #define SYSDID_F182_LEN 14u #define SYSDID_F182_CK_LEN (SYSDID_F182_LEN+1u) //留一字节做为校验 #define SYSDID_F187_ADDR (SYSDID_F182_ADDR+SYSDID_F182_CK_LEN) #define SYSDID_F187_LEN 14u #define SYSDID_F187_CK_LEN (SYSDID_F187_LEN+1u) //留一字节做为校验 #define SYSDID_F188_ADDR (SYSDID_F187_ADDR+SYSDID_F187_CK_LEN) #define SYSDID_F188_LEN 14u #define SYSDID_F188_CK_LEN (SYSDID_F188_LEN+1u) //留一字节做为校验 #define SYSDID_F18A_ADDR (SYSDID_F188_ADDR+SYSDID_F188_CK_LEN) #define SYSDID_F18A_LEN 6u #define SYSDID_F18A_CK_LEN (SYSDID_F18A_LEN+1u) //留一字节做为校验 #define SYSDID_F18B_ADDR (SYSDID_F18A_ADDR+SYSDID_F18A_CK_LEN) #define SYSDID_F18B_LEN 4u #define SYSDID_F18B_CK_LEN (SYSDID_F18B_LEN+1u) //留一字节做为校验 #define SYSDID_F18C_ADDR (SYSDID_F18B_ADDR+SYSDID_F18B_CK_LEN) #define SYSDID_F18C_LEN 15u #define SYSDID_F18C_CK_LEN (SYSDID_F18C_LEN+1u) //留一字节做为校验 #define SYSDID_F191_ADDR (SYSDID_F18C_ADDR+SYSDID_F18C_CK_LEN) #define SYSDID_F191_LEN 14u #define SYSDID_F191_CK_LEN (SYSDID_F191_LEN+1u) //留一字节做为校验 #define SYSDID_F192_ADDR (SYSDID_F191_ADDR+SYSDID_F191_CK_LEN) #define SYSDID_F192_LEN 24u #define SYSDID_F192_CK_LEN (SYSDID_F192_LEN+1u) //留一字节做为校验 #define SYSDID_F193_ADDR (SYSDID_F192_ADDR+SYSDID_F192_CK_LEN) #define SYSDID_F193_LEN 5u #define SYSDID_F193_CK_LEN (SYSDID_F193_LEN+1u) //留一字节做为校验 #define SYSDID_F194_ADDR (SYSDID_F193_ADDR+SYSDID_F193_CK_LEN) #define SYSDID_F194_LEN 9u #define SYSDID_F194_CK_LEN (SYSDID_F194_LEN+1u) //留一字节做为校验 #define SYSDID_F195_ADDR (SYSDID_F194_ADDR+SYSDID_F194_CK_LEN) #define SYSDID_F195_LEN 6u #define SYSDID_F195_CK_LEN (SYSDID_F195_LEN+1u) //留一字节做为校验 #define SYSDID_F1F1_ADDR (SYSDID_F195_ADDR+SYSDID_F195_CK_LEN) #define SYSDID_F1F1_LEN 14u #define SYSDID_F1F1_CK_LEN (SYSDID_F1F1_LEN+1u) //留一字节做为校验 #define SYSDID_F19E_ADDR (SYSDID_F1F1_ADDR+SYSDID_F1F1_CK_LEN) #define SYSDID_F19E_LEN 14u #define SYSDID_F19E_CK_LEN (SYSDID_F19E_LEN+1u) //留一字节做为校验 #define EEPROM_FLAG_FIRST_ADDR (SYSDID_F19E_ADDR+SYSDID_F19E_CK_LEN) #define EEPROM_FLAG_FIRST_LEN 4u #define DTC_LOSS_RECOVER_TIMES_ADDR (EEPROM_FLAG_FIRST_ADDR+EEPROM_FLAG_FIRST_LEN) #define DTC_LOSS_RECOVER_TIMES_LEN 4u #define DTC_LOSS_RECOVER_TIMES_CK_LEN (DTC_LOSS_RECOVER_TIMES_LEN+1u) //留一字节做为校验 #define DTC_LOSS_RECOVER_TIMES_ID 0u #define DTC_CHECKSUM_ERROR_TIMES_ID 1u #define DTC_ROLLINGCOUNT_ERROR_TIMES_ID 2u #define DTC_ROLLINGCOUNT_OFFSET_ID 3u #define E2E_DATA_ID_ADDR (DTC_LOSS_RECOVER_TIMES_ADDR+DTC_LOSS_RECOVER_TIMES_CK_LEN) #define E2E_DATA_ID_U16_LEN (4u) #define E2E_DATA_ID_U16_CK_LEN (E2E_DATA_ID_U16_LEN+1u) #define E2E_DATA_ID_U8_LEN (E2E_DATA_ID_U16_LEN*2u) #define E2E_DATA_ID_CK_U8_LEN (E2E_DATA_ID_U8_LEN+2u) #define E2E_DATA_ID_SWS_LEFT_ID 0u #define E2E_DATA_ID_SWS_RIGHT_ID 1u #define E2E_DATA_ID_BCM_STATE_ID 2u #define E2E_DATA_ID_ADAS_ID 3u #define KEY_TIME_CFG_ADDR (E2E_DATA_ID_ADDR+E2E_DATA_ID_CK_U8_LEN) #define KEY_TIME_CFG_U16_LEN 9u #define KEY_TIME_CFG_U16_CK_LEN (KEY_TIME_CFG_U16_LEN+1u) #define KEY_TIME_CFG_U8_LEN (KEY_TIME_CFG_U16_LEN*2u) #define KEY_TIME_CFG_U8_CK_LEN (KEY_TIME_CFG_U8_LEN+2u) #define KEY_TIME_CFG_IO_DEBOUNCE_ID 0u #define KEY_TIME_CFG_IO_STUCK_ID 1u #define KEY_TIME_CFG_IO_FAULT_ID 2u #define KEY_TIME_CFG_AD_DEBOUNCE_ID 3u #define KEY_TIME_CFG_AD_STUCK_ID 4u #define KEY_TIME_CFG_AD_FAULT_ID 5u #define KEY_TIME_CFG_ASIL_DEBOUNCE_ID 6u #define KEY_TIME_CFG_ASIL_STUCK_ID 7u #define KEY_TIME_CFG_ASIL_FAULT_ID 8u #define CFG_SUPPLY_INFO_ADDR (KEY_TIME_CFG_ADDR+KEY_TIME_CFG_U8_CK_LEN+3u) //为了4字节对齐 #define CFG_SUPPLY_INFO_LEN (1u) #define CFG_SUPPLY_INFO_ID_WITE_01A0 (0u) #define CFG_SUPPLY_INFO_CK_LEN (CFG_SUPPLY_INFO_LEN+1u) #define CFG_SPEED_LIMIT_ADDR (CFG_SUPPLY_INFO_ADDR+CFG_SUPPLY_INFO_CK_LEN) #define CFG_SPEED_LIMIT_LEN (1u) #define CFG_SPEED_LIMIT_CK_LEN (CFG_SPEED_LIMIT_LEN+1u) /*********这些是EEPROM定义的*************/ #define SYSDID_WR_START_ADDR 0u //逻辑地址,从0开始,内部实际映射到 EEPROM_RAM_ADDR_START #define SYSDID_ATTEMP_ADDR (SYSDID_WR_START_ADDR+0x10u) #define SYSDID_ATTEMP_LEN 2u #define SYSDID_ATTEMP_MAX_ADDR (SYSDID_ATTEMP_ADDR+SYSDID_ATTEMP_LEN) #define SYSDID_ATTEMP_MAX_LEN 2u #define SYSDID_ATTEMP_CRC_ADDR (SYSDID_ATTEMP_MAX_ADDR+SYSDID_ATTEMP_MAX_LEN) #define SYSDID_ATTEMP_CRC_LEN 1u #define SYSDID_ATTEMP_CK_LEN 5u #define SYSDID_ECU_SN_ADDR (SYSDID_ATTEMP_CRC_ADDR+SYSDID_ATTEMP_CK_LEN) #define SYSDID_ECU_SN_LEN 15u #define SYSDID_ECU_SN_CK_LEN (SYSDID_ECU_SN_LEN+1u) #define SYSDID_F190_VIN_ADDR (SYSDID_ECU_SN_ADDR+SYSDID_ECU_SN_CK_LEN) #define SYSDID_F190_VIN_LEN 17u #define SYSDID_F190_VIN_CK_LEN (SYSDID_F190_VIN_LEN+1u) //留一字节做为校验 #define SYSDID_F198_REPAIR_SN_ADDR (SYSDID_F190_VIN_ADDR+SYSDID_F190_VIN_CK_LEN) #define SYSDID_F198_REPAIR_SN_LEN 20u #define SYSDID_F198_REPAIR_SN_CK_LEN (SYSDID_F198_REPAIR_SN_LEN+1u) //留一字节做为校验 #define SYSDID_F199_DATE_ADDR (SYSDID_F198_REPAIR_SN_ADDR+SYSDID_F198_REPAIR_SN_CK_LEN) #define SYSDID_F199_DATE_LEN 4u #define SYSDID_F199_DATE_CK_LEN (SYSDID_F199_DATE_LEN+1u) //留一字节做为校验 #define SYSDID_MANUFAC_LIFECYCLE_COUNT_ADDR (SYSDID_F199_DATE_ADDR+SYSDID_F199_DATE_CK_LEN) #define SYSDID_MANUFAC_LIFECYCLE_COUNT_LEN 1u #define SYSDID_MANUFAC_LIFECYCLE_COUNT_CK_LEN (SYSDID_MANUFAC_LIFECYCLE_COUNT_LEN+1u) #define SYSDID_SECURITY_KEY_ADDR (SYSDID_MANUFAC_LIFECYCLE_COUNT_ADDR+SYSDID_MANUFAC_LIFECYCLE_COUNT_CK_LEN) #define SYSDID_SECURITY_KEY_LEN 16u #define SYSDID_SECURITY_KEY_CK_LEN (SYSDID_SECURITY_KEY_LEN+1u) //留一字节做为校验 #define SYSDID_SA_LOCKTIMER_TIME_ADDR (SYSDID_SECURITY_KEY_ADDR+SYSDID_SECURITY_KEY_CK_LEN) #define SYSDID_SA_LOCKTIMER_TIME_LEN 2u #define SYSDID_SA_LOCKTIMER_FLAG_ADDR (SYSDID_SA_LOCKTIMER_TIME_ADDR+SYSDID_SA_LOCKTIMER_TIME_LEN) #define SYSDID_SA_LOCKTIMER_FLAG_LEN 1u #define SYSDID_SA_LV1_ATTEMPT_ADDR (SYSDID_SA_LOCKTIMER_FLAG_ADDR+SYSDID_SA_LOCKTIMER_FLAG_LEN) #define SYSDID_SA_LV1_ATTEMPT_LEN 1u #define SYSDID_SA_LC_CRC_ADDR (SYSDID_SA_LV1_ATTEMPT_ADDR+SYSDID_SA_LV1_ATTEMPT_LEN) #define SYSDID_SA_LC_CRC_LEN 1u #define SYSDID_SA_LOCKTIMER_LEN 4u #define SYSDID_SA_LOCKTIMER_CK_LEN (SYSDID_SA_LOCKTIMER_LEN+1u) //供应商会话相关的安全访问 #define SYSDID_SU_LOCKTIMER_TIME_ADDR (SYSDID_SA_LC_CRC_ADDR+SYSDID_SA_LOCKTIMER_CK_LEN) #define SYSDID_SU_LOCKTIMER_TIME_LEN 2u #define SYSDID_SU_LOCKTIMER_FLAG_ADDR (SYSDID_SU_LOCKTIMER_TIME_ADDR+SYSDID_SU_LOCKTIMER_TIME_LEN) #define SYSDID_SU_LOCKTIMER_FLAG_LEN 1u #define SYSDID_SU_LV1_ATTEMPT_ADDR (SYSDID_SU_LOCKTIMER_FLAG_ADDR+SYSDID_SU_LOCKTIMER_FLAG_LEN) #define SYSDID_SU_LV1_ATTEMPT_LEN 1u #define SYSDID_SU_LC_CRC_ADDR (SYSDID_SU_LV1_ATTEMPT_ADDR+SYSDID_SU_LV1_ATTEMPT_LEN) #define SYSDID_SU_LC_CRC_LEN 1u #define SYSDID_SU_LOCKTIMER_LEN 4u #define SYSDID_SU_LOCKTIMER_CK_LEN (SYSDID_SU_LOCKTIMER_LEN+1u) //VehicleConfiguration #define SYSDID_VEHICLE_CONFIG_ADDR (SYSDID_SU_LC_CRC_ADDR+SYSDID_SU_LOCKTIMER_CK_LEN) #define SYSDID_VEHICLE_CONFIG_LEN 1u #define SYSDID_VEHICLE_CONFIG_CK_LEN (SYSDID_VEHICLE_CONFIG_LEN+1u) #define SYSDID_SW_VERSION_FOR_SG_ADDR (SYSDID_VEHICLE_CONFIG_ADDR+SYSDID_VEHICLE_CONFIG_CK_LEN) #define SYSDID_SW_VERSION_FOR_SG_LEN 4u #define SYSDID_SW_VERSION_FOR_SG_CK_LEN (SYSDID_SW_VERSION_FOR_SG_LEN+1u) //留一字节做为校验 #define SYSDID_RES1_ADDR (SYSDID_SW_VERSION_FOR_SG_ADDR+SYSDID_SW_VERSION_FOR_SG_CK_LEN) #define SYSDID_RES1_LEN 4u #define SYSDID_RES1_CK_LEN (SYSDID_RES1_LEN+1u) //留一字节做为校验 #define SYSDID_RES2_ADDR (SYSDID_RES1_ADDR+SYSDID_RES1_CK_LEN) #define SYSDID_RES2_LEN 4u #define SYSDID_RES2_CK_LEN (SYSDID_RES2_LEN+1u) //留一字节做为校验 #define SYSDID_RES3_ADDR (SYSDID_RES2_ADDR+SYSDID_RES2_CK_LEN) #define SYSDID_RES3_LEN 4u #define SYSDID_RES3_CK_LEN (SYSDID_RES3_LEN+1u) //留一字节做为校验 #define SYSDID_RES4_ADDR (SYSDID_RES3_ADDR+SYSDID_RES3_CK_LEN) #define SYSDID_RES4_LEN 16u #define SYSDID_RES4_CK_LEN (SYSDID_RES4_LEN+1u) //留一字节做为校验 #define SYSDID_RES5_ADDR (SYSDID_RES4_ADDR+SYSDID_RES4_CK_LEN) #define SYSDID_RES5_LEN 16u #define SYSDID_RES5_CK_LEN (SYSDID_RES5_LEN+1u) //留一字节做为校验 #define SYSDID_RES6_ADDR (SYSDID_RES5_ADDR+SYSDID_RES5_CK_LEN) #define SYSDID_RES6_LEN 16u #define SYSDID_RES6_CK_LEN (SYSDID_RES6_LEN+1u) //留一字节做为校验 #define SYSDID_SA_TOTAL_TIMEOUT_ADDR (SYSDID_RES6_ADDR+SYSDID_RES6_CK_LEN) #define SYSDID_SA_TOTAL_TIMEOUT_LEN 3u #define SYSDID_SA_TOTAL_TIMEOUT_CK_LEN (SYSDID_SA_TOTAL_TIMEOUT_LEN+1u) //留一字节做为校验 #define SYSDID_SU_TOTAL_TIMEOUT_ADDR (SYSDID_SA_TOTAL_TIMEOUT_ADDR+SYSDID_SA_TOTAL_TIMEOUT_CK_LEN) #define SYSDID_SU_TOTAL_TIMEOUT_LEN 3u #define SYSDID_SU_TOTAL_TIMEOUT_CK_LEN (SYSDID_SU_TOTAL_TIMEOUT_LEN+1u) //留一字节做为校验 #define NVM_BASE_ADDR_DID 0u //NVM_START_ADDR_DID #define DID_ATTRIBUTE_TABLE_LENGTH 23u #define EEPROM_LOGIC_BASE_ADDR_FOR_DTC (SYSDID_WR_START_ADDR+EEPROM_AREA1_RAM_ADDR_START-EEPROM_AREA0_RAM_ADDR_START) /*--------------------------------------------------------------------------- - T Y P E D E F I N I T I O N S ----------------------------------------------------------------------------*/ typedef uint16_t did_t; typedef struct { did_t id; did_type_t type; r_w_type_t rw; //uint8_t *addr; uint32_t phy_addr; uint8_t length; }did_attribute_t; /*--------------------------------------------------------------------------- - G L O B A L V A R I A B L E S - only configuration table allowed here,variables are not allowed! ----------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------- - C O N S T A N T S ----------------------------------------------------------------------------*/ extern const u8 g_sysdid_f180[SYSDID_F180_CK_LEN] ; extern const u8 g_sysdid_f181[SYSDID_F181_CK_LEN] ; extern const u8 g_sysdid_f194[SYSDID_F194_CK_LEN] ; /*--------------------------------------------------------------------------- - F U N C T I O N P R O T O T Y P E ----------------------------------------------------------------------------*/ u8 cal_read_did(did_t did, uint8_t *p_buf, uint8_t length); u8 cal_write_did(did_t did, const uint8_t *p_buf, uint8_t length); extern void cal_did_init(void); void cal_did_read_refresh(void); u8 buf_judge_value_is_same(uc8 *pdata,u8 len ,u8 value); // #endif /* __PEPSCALIBRATION_H */