/** * @copyright: technologies Co.,Ltd. 2013-2015. all rights reserved. * @file: calibration.h * @brief: This file contains all the functions prototypes for calibration. * @author: * @version: V1.0.0 * @date: 2013-07-24 * @history: * 1. * author: * version: * date: * modification: */ #ifndef __CALIBRATION_H #define __CALIBRATION_H #include "common_types.h" #include "nvm.h" #include "Cpu.h" #include "boot_app_cfg.h" #include "eeprom_cfg.h" #define CAL_ENTER_CRITICAL() System_DisableIrqGlobal() #define CAL_EXIT_CRITICAL() System_EnableIrqGlobal() #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 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; /**********这些地址是从,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) //留一字节做为校验 #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) //留一字节做为校验 #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_F181_ADDR+SYSDID_F181_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) //留一字节做为校验 extern const u8 g_sysdid_f182[SYSDID_F182_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f187[SYSDID_F187_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f188[SYSDID_F188_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f18a[SYSDID_F18A_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f18b[SYSDID_F18B_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f18c[SYSDID_F18C_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f191[SYSDID_F191_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f192[SYSDID_F192_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f193[SYSDID_F193_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f194[SYSDID_F194_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f195[SYSDID_F195_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f1f1[SYSDID_F1F1_CK_LEN] ; #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) //留一字节做为校验 extern const u8 g_sysdid_f19e[SYSDID_F19E_CK_LEN] ; #define EEPROM_FLAG_FIRST_ADDR (SYSDID_F19E_ADDR+SYSDID_F19E_CK_LEN) #define EEPROM_FLAG_FIRST_LEN 4u //#define EEPROM_FLAG_FIRST_CK_LEN (EEPROM_FLAG_FIRST_LEN+1u) //留一字节做为校验 //extern const u32 eeprom_flag_first_reset; #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 extern const u8 g_dtc_loss_recover_times[DTC_LOSS_RECOVER_TIMES_CK_LEN] ; #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 extern const u16 g_data_id_cfg[E2E_DATA_ID_U16_CK_LEN]; #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 extern const u16 g_key_cfg_times1[KEY_TIME_CFG_U16_CK_LEN] ; #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) extern const u8 g_cfg_supply_info[CFG_SUPPLY_INFO_CK_LEN] ; #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) extern const u8 g_cfg_speed_limit[CFG_SPEED_LIMIT_CK_LEN]; /*********这些是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) //留一字节做为校验 //dtc #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) 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); //#define CALIBRATION_DISP_ADDR_DEBUG //用来查看各 地址有没有越界,主要是eeprom的定义 #endif /* __PEPSCALIBRATION_H */