LL01/code_boot_out/qm/module/calibration.h
2025-04-26 16:03:23 +08:00

361 lines
13 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/** ##########################################################################
** 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 */