566 lines
16 KiB
C
566 lines
16 KiB
C
/**
|
||
* @copyright: KUWE technologies Co.,Ltd. 2013-2015. all rights reserved.
|
||
* @file: calibration.h
|
||
* @brief: This file contains all the functions prototypes for the calibration.
|
||
* @author:
|
||
* @version: V1.0.0
|
||
* @date: 2016-03-31
|
||
* @history:
|
||
* 1.
|
||
* author:
|
||
* version:
|
||
* date:
|
||
* modification:
|
||
*/
|
||
#include "error.h"
|
||
#include "calibration.h"
|
||
#include "cpu.h"
|
||
#include "nvm.h"
|
||
#include "key_app.h"
|
||
|
||
|
||
//110078209
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f182[SYSDID_F182_CK_LEN] @SYSDID_F182_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f182[SYSDID_F182_CK_LEN] __attribute__((at(SYSDID_F182_ADDR)))=
|
||
//const u8 g_sysdid_f182[SYSDID_F182_CK_LEN] __attribute__((at(0x00015BCC)))=
|
||
#endif
|
||
{
|
||
0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x30,0x30,0x37,0x38,0x32,0x30,0x39,0x00,
|
||
};
|
||
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f187[SYSDID_F187_CK_LEN] @SYSDID_F187_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f187[SYSDID_F187_CK_LEN] __attribute__((at(SYSDID_F187_ADDR)))=
|
||
#endif
|
||
{
|
||
0x30,0x31,0x31,0x30,0x30,0x37,0x38,0x32,0x30,0x37,0x2fu,0x30,0x30,0x31,0x00
|
||
};
|
||
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f188[SYSDID_F188_CK_LEN] @SYSDID_F188_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f188[SYSDID_F188_CK_LEN] __attribute__((at(SYSDID_F188_ADDR)))=
|
||
#endif
|
||
{
|
||
0x30,0x31,0x31,0x30,0x30,0x37,0x38,0x32,0x30,0x38,0x2fu,0x30,0x30,0x31,0x00
|
||
};
|
||
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f18a[SYSDID_F18A_CK_LEN] @SYSDID_F18A_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f18a[SYSDID_F18A_CK_LEN] __attribute__((at(SYSDID_F18A_ADDR)))=
|
||
#endif
|
||
{
|
||
0x35,0x30,0x32,0x32,0x30,0x38,0x00,
|
||
};
|
||
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f18b[SYSDID_F18B_CK_LEN] @SYSDID_F18B_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f18b[SYSDID_F18B_CK_LEN] __attribute__((at(SYSDID_F18B_ADDR)))=
|
||
#endif
|
||
{
|
||
0x20,0x21,0x05,0x08,0x00,
|
||
};
|
||
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f18c[SYSDID_F18C_CK_LEN] @SYSDID_F18C_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f18c[SYSDID_F18C_CK_LEN] __attribute__((at(SYSDID_F18C_ADDR)))=
|
||
#endif
|
||
{
|
||
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x00,
|
||
};
|
||
|
||
//656106800A 110008086 0110008086/001
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f191[SYSDID_F191_CK_LEN] @SYSDID_F191_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f191[SYSDID_F191_CK_LEN] __attribute__((at(SYSDID_F191_ADDR)))=
|
||
#endif
|
||
{
|
||
0x30,0x31,0x31,0x30,0x30,0x30,0x38,0x30,0x38,0x36,0x2fu,0x30,0x30,0x01,0x00
|
||
};
|
||
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f192[SYSDID_F192_CK_LEN] @SYSDID_F192_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f192[SYSDID_F192_CK_LEN] __attribute__((at(SYSDID_F192_ADDR)))=
|
||
#endif
|
||
{
|
||
|
||
'U','K','E','A','-','7','7','J','S','W','0','4','0','2','_','2','5','0','2','2','8','_','H','1',0x00u
|
||
|
||
};
|
||
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f193[SYSDID_F193_CK_LEN] @SYSDID_F193_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f193[SYSDID_F193_CK_LEN] __attribute__((at(SYSDID_F193_ADDR)))=
|
||
#endif
|
||
{
|
||
#if 0
|
||
//'V','1','.','0','-',0x32,0x30,0x32,0x31,0x30,0x34,0x31,0x34,0x30,0x00,
|
||
0x56u,0x31u,0x2eu,0x30u,0x2du,0x32u,0x30u,0x32u,0x31u,0x30u,0x34u,0x31u,0x34u,0x30u,0x00u
|
||
#else
|
||
1,23,4,14,0,0,
|
||
#endif
|
||
};
|
||
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f194[SYSDID_F194_CK_LEN] @SYSDID_F194_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f194[SYSDID_F194_CK_LEN] __attribute__((at(SYSDID_F194_ADDR)))=
|
||
#endif
|
||
{
|
||
//0x4Du,0x54u,0x00u,0x11u,0x99u,0x1Eu,0x00u,0x00u,0x02u,0x6B //最后一个字节校验码,方式是全字节累加
|
||
0x4Du,0x54u,0x00u,0x10u,0xADu,0x1Eu,0x00u,0x00u,0x01u,0x7Du //最后一个字节校验码,方式是全字节累加--UKEA-C的编码
|
||
};
|
||
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f195[SYSDID_F195_CK_LEN] @SYSDID_F195_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f195[SYSDID_F195_CK_LEN] __attribute__((at(SYSDID_F195_ADDR)))=
|
||
#endif
|
||
{
|
||
0x9Cu,0x42u,0x19u,0x02u,0x1Cu,0x00u,0x00u,
|
||
};
|
||
|
||
|
||
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f1f1[SYSDID_F1F1_CK_LEN] @SYSDID_F1F1_ADDR =
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f1f1[SYSDID_F1F1_CK_LEN] __attribute__((at(SYSDID_F1F1_ADDR)))=
|
||
#endif
|
||
{
|
||
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x00,
|
||
};
|
||
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f19e[SYSDID_F19E_CK_LEN] @SYSDID_F19E_ADDR=
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_sysdid_f19e[SYSDID_F19E_CK_LEN] __attribute__((at(SYSDID_F19E_ADDR)))=
|
||
#endif
|
||
{
|
||
0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x30,0x30,0x37,0x38,0x32,0x31,0x31,0x00,
|
||
};
|
||
|
||
#if 1
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 eeprom_flag_first_reset[4] @(EEPROM_FLAG_FIRST_ADDR) ;//= EEPROM_FLAG_NOT_FIRST_RESET;
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 eeprom_flag_first_reset[4] __attribute__((at(EEPROM_FLAG_FIRST_ADDR)))= EEPROM_FLAG_NOT_FIRST_RESET;
|
||
#endif
|
||
#endif
|
||
|
||
|
||
//當節點丟失後,收到N幀,認為清除DTC
|
||
#ifdef __ICCARM__
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_dtc_loss_recover_times[DTC_LOSS_RECOVER_TIMES_CK_LEN] @DTC_LOSS_RECOVER_TIMES_ADDR=
|
||
#else
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_dtc_loss_recover_times[DTC_LOSS_RECOVER_TIMES_CK_LEN] __attribute__((at(DTC_LOSS_RECOVER_TIMES_ADDR)))=
|
||
#endif
|
||
{
|
||
3, //第一个参数是表示节点丢失后,要恢复的满足的次数3次,
|
||
10, //第二个参数是checksum错误和恢复的总计数
|
||
10, //第三个参数是rolling count错误的总计数
|
||
3, //第四个参数是rollingcount相差的个数
|
||
0x00
|
||
};
|
||
|
||
|
||
//各 DATA ID
|
||
#if 0
|
||
const u16 g_data_id_cfg[E2E_DATA_ID_U16_CK_LEN] @E2E_DATA_ID_ADDR =
|
||
{
|
||
CAN_TX_DATAID_SWS_LEFT,
|
||
CAN_TX_DATAID_SWS_RIGHT,
|
||
CAN_RX_DATAID_BCM_STA,
|
||
CAN_RX_DATAID_ADAS_HWA,
|
||
0,
|
||
};
|
||
//當節點丟失後,收到N幀,認為清除DTC
|
||
const u16 g_key_cfg_times1[KEY_TIME_CFG_U16_CK_LEN] @KEY_TIME_CFG_ADDR=
|
||
{
|
||
0u,//KEY_SCAN_DITHERING_TIME,//第一个参数是数字按键的消抖时间,单位是和key app调用周期相关
|
||
0u,//KEY_SCAN_STUCK_TIMEOUT,//第二个参数是数字按键的消卡滞时间,单位是和key app调用周期相关
|
||
0u,//KEY_SCAN_FAULT_TIMEOUT, //故障检测
|
||
0u,//ADC_KEY_TIME_DEBOUNCE,//第三个参数是ad按键的消抖时间,单位是和key adc mid 调用周期相关
|
||
0u,//ADC_KEY_TIME_STICKPRESS,//第四个参数是ad按键的卡滞时间,单位是和key adc mid调用周期相关
|
||
0u,//ADC_KEY_TIME_FAULT, //故障检测
|
||
0u,//ADC_ASIL_KEY_TIME_DEBOUNCE, //预留给ASILA按键
|
||
0u,//ADC_ASIL_KEY_TIME_STUCK, //预留给ASILA按键
|
||
0u,//ADC_ASIL_KEY_TIME_FAULT, //预留给ASILA按键
|
||
0u
|
||
};
|
||
#endif
|
||
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_cfg_supply_info[CFG_SUPPLY_INFO_CK_LEN] @CFG_SUPPLY_INFO_ADDR= //
|
||
{
|
||
1u, //支持level 写入 01a0
|
||
0u
|
||
};
|
||
|
||
MEMORY_MAP_FLAG_NO_OPTIME const u8 g_cfg_speed_limit[CFG_SPEED_LIMIT_CK_LEN] @CFG_SPEED_LIMIT_ADDR=
|
||
{
|
||
0u,//APP_COM_VHSPEED_MIN,
|
||
0u,
|
||
};
|
||
|
||
const did_attribute_t did_attribute_table[DID_ATTRIBUTE_TABLE_LENGTH] =
|
||
{
|
||
{0xF180u, DID_TYPE_CONST, READ_ONLY, SYSDID_F180_ADDR, SYSDID_F180_CK_LEN},
|
||
{0xF181u, DID_TYPE_CONST, READ_ONLY, SYSDID_F181_ADDR, SYSDID_F181_CK_LEN},
|
||
{0xF1F2u, DID_TYPE_CONST, READ_ONLY, SYSDID_F1F2_ADDR, SYSDID_F1F2_CK_LEN},
|
||
{0xF182u, DID_TYPE_CONST, READ_ONLY, SYSDID_F182_ADDR, SYSDID_F182_CK_LEN},
|
||
{0xF187u, DID_TYPE_CONST, READ_ONLY, SYSDID_F187_ADDR, SYSDID_F187_CK_LEN},
|
||
{0xF188u, DID_TYPE_CONST, READ_ONLY, SYSDID_F188_ADDR, SYSDID_F188_CK_LEN},
|
||
{0xF18Au, DID_TYPE_CONST, READ_ONLY, SYSDID_F18A_ADDR, SYSDID_F18A_CK_LEN},
|
||
{0xF18Bu, DID_TYPE_CONST, READ_ONLY, SYSDID_F18B_ADDR, SYSDID_F18B_CK_LEN},
|
||
{0xF18Cu, DID_TYPE_VOLATILE, READ_AND_WRITE, SYSDID_ECU_SN_ADDR, SYSDID_ECU_SN_CK_LEN},
|
||
{0xF191u, DID_TYPE_CONST, READ_ONLY, SYSDID_F191_ADDR, SYSDID_F191_CK_LEN},
|
||
{0xF192u, DID_TYPE_CONST, READ_ONLY, SYSDID_F192_ADDR, SYSDID_F192_CK_LEN},
|
||
{0xF193u, DID_TYPE_CONST, READ_ONLY, SYSDID_F193_ADDR, SYSDID_F193_CK_LEN},
|
||
{0xF194u, DID_TYPE_CONST, READ_ONLY, SYSDID_F194_ADDR, SYSDID_F194_CK_LEN},
|
||
{0xF195u, DID_TYPE_CONST, READ_ONLY, SYSDID_F195_ADDR, SYSDID_F195_CK_LEN}, //(uint32_t)&g_sysdid_f195[0]
|
||
{0xF1F1u, DID_TYPE_CONST, READ_ONLY, SYSDID_F1F1_ADDR, SYSDID_F1F1_CK_LEN},
|
||
{0xF19eu, DID_TYPE_CONST, READ_ONLY, SYSDID_F19E_ADDR, SYSDID_F19E_CK_LEN},
|
||
{0xF1A0u, DID_TYPE_VOLATILE, READ_AND_WRITE, SYSDID_VEHICLE_CONFIG_ADDR, SYSDID_VEHICLE_CONFIG_CK_LEN},
|
||
{0x01A0u, DID_TYPE_VOLATILE, READ_AND_WRITE, SYSDID_MANUFAC_LIFECYCLE_COUNT_ADDR, SYSDID_MANUFAC_LIFECYCLE_COUNT_CK_LEN},
|
||
{0x01B0u, DID_TYPE_VOLATILE, WRITE_ONLY, SYSDID_SECURITY_KEY_ADDR, SYSDID_SECURITY_KEY_CK_LEN},
|
||
{0xF190u, DID_TYPE_VOLATILE, READ_AND_WRITE, SYSDID_F190_VIN_ADDR, SYSDID_F190_VIN_CK_LEN},
|
||
{0xF198u, DID_TYPE_VOLATILE, READ_ONLY, SYSDID_F198_REPAIR_SN_ADDR, SYSDID_F198_REPAIR_SN_CK_LEN},
|
||
{0xF199u, DID_TYPE_VOLATILE, READ_ONLY, SYSDID_F199_DATE_ADDR, SYSDID_F199_DATE_CK_LEN},
|
||
{0xF100u, DID_TYPE_VOLATILE, READ_ONLY, SYSDID_ATTEMP_ADDR, SYSDID_ATTEMP_LEN+SYSDID_ATTEMP_MAX_LEN}
|
||
};
|
||
|
||
|
||
|
||
static uint8_t get_did_headler(did_t did)
|
||
|
||
{
|
||
uint8_t i;
|
||
u8 l_result =0xffu;
|
||
for(i = 0; i < DID_ATTRIBUTE_TABLE_LENGTH; i++)
|
||
{
|
||
if(did == did_attribute_table[i].id)
|
||
{
|
||
l_result = i;
|
||
break;
|
||
}
|
||
}
|
||
return l_result;
|
||
}
|
||
|
||
u8 cal_read_did(did_t did, uint8_t *p_buf, uint8_t length)
|
||
{
|
||
uint8_t headler;
|
||
uint8_t opt_length;
|
||
u8 l_result = TRUE;
|
||
|
||
|
||
|
||
do
|
||
{
|
||
headler = get_did_headler(did) ;
|
||
if( (headler == 0xffu) || (did_attribute_table[headler].rw == WRITE_ONLY) )
|
||
{
|
||
l_result = FALSE;
|
||
break;
|
||
}
|
||
|
||
if(length < did_attribute_table[headler].length)
|
||
{
|
||
opt_length = length;
|
||
}
|
||
else
|
||
{
|
||
opt_length = did_attribute_table[headler].length;
|
||
}
|
||
|
||
CAL_ENTER_CRITICAL();
|
||
#if 0
|
||
for(i = 0; i < opt_length; i++)
|
||
{
|
||
p_buf[i] = did_attribute_table[headler].addr[i];
|
||
}
|
||
#endif
|
||
if(did_attribute_table[headler].type == DID_TYPE_CONST)
|
||
{
|
||
(void)nvm_read_bytes(NVM_TYPE_FLASH,did_attribute_table[headler].phy_addr,p_buf,(u16)opt_length);
|
||
}
|
||
else
|
||
{
|
||
(void)nvm_read_bytes(NVM_TYPE_EEPROM,did_attribute_table[headler].phy_addr,p_buf,(u16)opt_length);
|
||
}
|
||
CAL_EXIT_CRITICAL();
|
||
}while(0);
|
||
|
||
return l_result;
|
||
}
|
||
|
||
volatile uint16_t test1;
|
||
u8 cal_write_did(did_t did, const uint8_t *p_buf, uint8_t length)
|
||
{
|
||
uint8_t l_result = FALSE;
|
||
uint8_t headler;
|
||
uint8_t opt_length;
|
||
|
||
|
||
do
|
||
{
|
||
headler = get_did_headler(did) ;
|
||
if( (headler == 0xffu) || (did_attribute_table[headler].rw == READ_ONLY))
|
||
{
|
||
l_result = FALSE;
|
||
break;
|
||
}
|
||
|
||
if(length < did_attribute_table[headler].length)
|
||
{
|
||
opt_length = length;
|
||
}
|
||
else
|
||
{
|
||
opt_length = did_attribute_table[headler].length;
|
||
}
|
||
CAL_ENTER_CRITICAL();
|
||
#if 0
|
||
for(i = 0; i < opt_length; i++)
|
||
{
|
||
did_attribute_table[headler].addr[i] = p_buf[i];
|
||
}
|
||
#endif
|
||
if(did_attribute_table[headler].type == DID_TYPE_CONST)
|
||
{
|
||
l_result = TRUE;
|
||
//(void)nvm_write_bytes(NVM_TYPE_FLASH,did_attribute_table[headler].phy_addr,p_buf,opt_length);
|
||
}
|
||
else
|
||
{
|
||
l_result = nvm_write_bytes(NVM_TYPE_EEPROM,did_attribute_table[headler].phy_addr,(u8*)&p_buf[0],(u16)opt_length); /*PRQA S 0311*/
|
||
if((u8)ERR_OK == l_result)
|
||
{
|
||
l_result = TRUE;
|
||
}
|
||
}
|
||
CAL_EXIT_CRITICAL();
|
||
}while(0);
|
||
|
||
return l_result;
|
||
}
|
||
|
||
void cal_did_init(void)
|
||
{
|
||
uint8_t i;
|
||
//u8 j;
|
||
//u16_swap_t l_buf[8];
|
||
//u8 l_data[64];
|
||
|
||
|
||
for(i = 0; i < DID_ATTRIBUTE_TABLE_LENGTH; i++)
|
||
{
|
||
|
||
#ifdef FUN_WDT_ENABLE
|
||
wdog_task();
|
||
#endif
|
||
|
||
if(did_attribute_table[ i ].type == DID_TYPE_CONST)
|
||
{
|
||
|
||
continue;
|
||
}
|
||
CAL_ENTER_CRITICAL();
|
||
|
||
CAL_EXIT_CRITICAL();
|
||
|
||
|
||
}
|
||
|
||
//cal_did_test();
|
||
}
|
||
|
||
|
||
//static u8 g_cal_refresh_flag = 0u; /*PRQA S 3207*/
|
||
|
||
|
||
/*讀取數據之後的更新*/
|
||
void cal_did_read_refresh(void)
|
||
{
|
||
#if 0
|
||
u8 j;
|
||
u16_swap_t l_buf[16]={0};
|
||
|
||
if(g_cal_refresh_flag ==0)
|
||
{
|
||
g_cal_refresh_flag = 1;
|
||
|
||
#ifdef FUN_WDT_ENABLE
|
||
wdog_task();
|
||
#endif
|
||
|
||
#if 1
|
||
/*F180*/
|
||
for(j=0;j<8;j++)
|
||
{
|
||
#ifdef CAL_USE_NVM
|
||
(void)eeprom_get_u16((eeprom_addr_t)(EEPROM_DATA_BASE_ADDR+EEPROM_F180_ADDR+2*j), &l_buf[j].w);
|
||
#endif
|
||
volatile_did.boot_soft_id[2*j] = l_buf[j].w >> 8;
|
||
volatile_did.boot_soft_id[2*j+1] = l_buf[j].w;
|
||
}
|
||
#endif
|
||
|
||
#if 1
|
||
/*F187*/
|
||
for(j=0;j<5;j++)
|
||
{
|
||
l_buf[j].w = (u16)const_did.geely_spare_part_number[2*j] << 8 | const_did.geely_spare_part_number[2*j+1] ;
|
||
#ifdef CAL_USE_NVM
|
||
(void)eeprom_set_u16((eeprom_addr_t)(EEPROM_DATA_BASE_ADDR+EEPROM_F187_ADDR+2*j), l_buf[j].w);
|
||
#endif
|
||
}
|
||
#endif
|
||
|
||
#if 1
|
||
/*F189*/
|
||
for(j=0;j<8;j++)
|
||
{
|
||
l_buf[j].w = (u16)const_did.ecu_software_version_number[2*j] << 8 | const_did.ecu_software_version_number[2*j+1] ;
|
||
#ifdef CAL_USE_NVM
|
||
(void)eeprom_set_u16((eeprom_addr_t)(EEPROM_DATA_BASE_ADDR+EEPROM_F189_ADDR+2*j), l_buf[j].w);
|
||
#endif
|
||
}
|
||
#endif
|
||
|
||
#if 1
|
||
|
||
/*F193*/
|
||
for(j=0;j<8;j++)
|
||
{
|
||
l_buf[j].w = (u16)const_did.system_supplier_ecu_hardware_version_number[2*j] << 8 | const_did.system_supplier_ecu_hardware_version_number[2*j+1] ;
|
||
#ifdef CAL_USE_NVM
|
||
(void)eeprom_set_u16((eeprom_addr_t)(EEPROM_DATA_BASE_ADDR+EEPROM_F193_ADDR+2*j), l_buf[j].w);
|
||
#endif
|
||
}
|
||
#endif
|
||
|
||
|
||
}
|
||
#endif
|
||
}
|
||
|
||
|
||
|
||
/** 判斷數組的值是否都為 value;
|
||
* @param Pdata內容
|
||
* @param
|
||
* @param
|
||
* @return
|
||
*/
|
||
u8 buf_judge_value_is_same(uc8 *pdata,u8 len ,u8 value)
|
||
{
|
||
|
||
u8 l_result = TRUE;
|
||
|
||
u8 i;
|
||
|
||
for(i=0;i<len;i++)
|
||
{
|
||
if( pdata[i] != value )
|
||
{
|
||
l_result = FALSE;
|
||
break;
|
||
}
|
||
}
|
||
|
||
return l_result;
|
||
|
||
}
|
||
#if 0
|
||
//u8 *g_cal_paddr;
|
||
volatile u8 g_cal_w_buf[50];
|
||
volatile u8 g_cal_r_buf[50];
|
||
void cal_did_test(void)
|
||
{
|
||
//g_cal_paddr = (u8*)&g_sysdid_f195[0];
|
||
cal_read_did(0xF195u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF180u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF100u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF181u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF1F2u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF182u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF187u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF188u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF18au,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF18bu,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF18cu,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF191u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF192u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF193u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF194u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF195u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF1f1u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF19eu,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF190u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF190u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF198u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF199u,(u8*)&g_cal_r_buf[0],50);
|
||
cal_read_did(0xF195u,(u8*)&g_cal_w_buf[0],50);
|
||
cal_write_did(0xF190u,(u8*)&g_cal_w_buf[0],50);
|
||
cal_read_did(0xF190u,(u8*)&g_cal_r_buf[0],50);
|
||
//(void)nvm_read_bytes(NVM_TYPE_FLASH,(u32)&g_cal_paddr,&g_cal_r_buf[0],SYSDID_F195_CK_LEN);
|
||
//(void)nvm_read_bytes(NVM_TYPE_FLASH,(u32)&g_sysdid_f195[0],&g_cal_w_buf[0],SYSDID_F195_CK_LEN);
|
||
}
|
||
#endif
|
||
|
||
|
||
|
||
#ifdef CALIBRATION_DISP_ADDR_DEBUG
|
||
|
||
typedef struct
|
||
{
|
||
u16 addr;
|
||
u8 len;
|
||
}cal_disp_s;
|
||
|
||
MEMORY_MAP_FLAG_NO_OPTIME const cal_disp_s g_cal_eeprom_addr[] =
|
||
{
|
||
{SYSDID_ATTEMP_ADDR,SYSDID_ATTEMP_LEN},
|
||
{SYSDID_ATTEMP_MAX_ADDR,SYSDID_ATTEMP_MAX_LEN},
|
||
{SYSDID_ATTEMP_CRC_ADDR,SYSDID_ATTEMP_CK_LEN},
|
||
{SYSDID_ECU_SN_ADDR,SYSDID_ECU_SN_CK_LEN},
|
||
{SYSDID_F190_VIN_ADDR,SYSDID_F190_VIN_CK_LEN},
|
||
{SYSDID_F198_REPAIR_SN_ADDR,SYSDID_F198_REPAIR_SN_CK_LEN},
|
||
{SYSDID_F199_DATE_ADDR,SYSDID_F199_DATE_CK_LEN},
|
||
{SYSDID_MANUFAC_LIFECYCLE_COUNT_ADDR,SYSDID_MANUFAC_LIFECYCLE_COUNT_CK_LEN},
|
||
{SYSDID_SECURITY_KEY_ADDR,SYSDID_SECURITY_KEY_CK_LEN},
|
||
{SYSDID_SA_LOCKTIMER_TIME_ADDR,SYSDID_SA_LOCKTIMER_TIME_LEN},
|
||
{SYSDID_SA_LOCKTIMER_FLAG_ADDR,SYSDID_SA_LOCKTIMER_FLAG_LEN},
|
||
{SYSDID_SA_LV1_ATTEMPT_ADDR,SYSDID_SA_LV1_ATTEMPT_LEN},
|
||
{SYSDID_SA_LC_CRC_ADDR,SYSDID_SA_LOCKTIMER_CK_LEN},
|
||
{SYSDID_SU_LOCKTIMER_TIME_ADDR,SYSDID_SU_LOCKTIMER_TIME_LEN},
|
||
{SYSDID_SU_LOCKTIMER_FLAG_ADDR,SYSDID_SU_LOCKTIMER_FLAG_LEN},
|
||
{SYSDID_SU_LV1_ATTEMPT_ADDR,SYSDID_SU_LV1_ATTEMPT_LEN},
|
||
{SYSDID_SU_LC_CRC_ADDR,SYSDID_SU_LOCKTIMER_CK_LEN},
|
||
{SYSDID_VEHICLE_CONFIG_ADDR,SYSDID_VEHICLE_CONFIG_CK_LEN},
|
||
{SYSDID_SW_VERSION_FOR_SG_ADDR,SYSDID_SW_VERSION_FOR_SG_CK_LEN},
|
||
{SYSDID_RES1_ADDR,SYSDID_RES1_CK_LEN},
|
||
{SYSDID_RES2_ADDR,SYSDID_RES2_CK_LEN},
|
||
{SYSDID_RES3_ADDR,SYSDID_RES3_CK_LEN},
|
||
{SYSDID_RES4_ADDR,SYSDID_RES4_CK_LEN},
|
||
{SYSDID_RES5_ADDR,SYSDID_RES5_CK_LEN},
|
||
{SYSDID_RES6_ADDR,SYSDID_RES6_CK_LEN},
|
||
{SYSDID_SA_TOTAL_TIMEOUT_ADDR,SYSDID_SA_TOTAL_TIMEOUT_CK_LEN},
|
||
{SYSDID_SU_TOTAL_TIMEOUT_ADDR,SYSDID_SU_TOTAL_TIMEOUT_CK_LEN},
|
||
};
|
||
|
||
#endif
|
||
|
||
|
||
/*PRQA S 1503*/
|