Обновление
This commit is contained in:
parent
62cd50c41f
commit
047dd3d4b1
|
|
@ -496,6 +496,20 @@ typedef struct __attribute__ ((packed)) {
|
||||||
uint8_t COUNT;
|
uint8_t COUNT;
|
||||||
} eXcpCommand_Program_ProgramNext_D0_CA;
|
} eXcpCommand_Program_ProgramNext_D0_CA;
|
||||||
|
|
||||||
|
typedef struct __attribute__ ((packed)) {
|
||||||
|
eXcpTypeCommand COM;
|
||||||
|
uint8_t RESERVED;
|
||||||
|
uint16_t CODESIZE;
|
||||||
|
} eXcpCommand_Program_Prepare_CC;
|
||||||
|
|
||||||
|
typedef struct __attribute__ ((packed)) {
|
||||||
|
eXcpTypeCommand COM;
|
||||||
|
uint8_t COMPRESSION_METHOD;
|
||||||
|
uint8_t ENCRYPTION_METHOD;
|
||||||
|
uint8_t PROGRAM_METHOD;
|
||||||
|
uint8_t ACCESS_METHOD;
|
||||||
|
} eXcpCommand_Program_Format_CB;
|
||||||
|
|
||||||
typedef struct __attribute__ ((packed)) {
|
typedef struct __attribute__ ((packed)) {
|
||||||
eXcpTypeCommand COM;
|
eXcpTypeCommand COM;
|
||||||
|
|
||||||
|
|
@ -559,6 +573,13 @@ typedef struct __attribute__ ((packed)) {
|
||||||
uint32_t VERIFICATION_VALUE;
|
uint32_t VERIFICATION_VALUE;
|
||||||
} eXcpCommand_Program_Verify_C8;
|
} eXcpCommand_Program_Verify_C8;
|
||||||
|
|
||||||
|
typedef struct __attribute__ ((packed)) {
|
||||||
|
eXcpTypeCommand COM;
|
||||||
|
uint8_t ACCESS_MODE;
|
||||||
|
uint8_t LOGICAL_DATA_SEGMENT_NUMBER;
|
||||||
|
} eXcpCommand_XCP_GET_CAL_PAGE_EA;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef bool (xcp_clear_flash_func)(uint32_t firstPageAddr, uint32_t totalSize);
|
typedef bool (xcp_clear_flash_func)(uint32_t firstPageAddr, uint32_t totalSize);
|
||||||
typedef bool (xcp_write_flash_func)(uint32_t beginPageAddr, void *sourceRamAddr, uint32_t size);
|
typedef bool (xcp_write_flash_func)(uint32_t beginPageAddr, void *sourceRamAddr, uint32_t size);
|
||||||
|
|
@ -572,6 +593,7 @@ typedef struct {
|
||||||
uint8_t RESOURCE;
|
uint8_t RESOURCE;
|
||||||
uint8_t ADR_EXT;
|
uint8_t ADR_EXT;
|
||||||
uint32_t ADR_MTA;
|
uint32_t ADR_MTA;
|
||||||
|
uint8_t PAGE_ID;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -852,7 +852,6 @@ static uint8_t XCP_PROGRAM_D0(tCanSerialPortFrameXCP *env) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static uint8_t PROGRAM_VERIFY_C8(tCanSerialPortFrameXCP *env) {
|
static uint8_t PROGRAM_VERIFY_C8(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_Program_Verify_C8 *request = (eXcpCommand_Program_Verify_C8 *) env->canFrame.data;
|
eXcpCommand_Program_Verify_C8 *request = (eXcpCommand_Program_Verify_C8 *) env->canFrame.data;
|
||||||
|
|
||||||
|
|
@ -879,6 +878,34 @@ static uint8_t XCP_PROGRAM_NEXT_CA(tCanSerialPortFrameXCP *env) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static uint8_t XCP_PROGRAM_PREPARE_CC(tCanSerialPortFrameXCP *env) {
|
||||||
|
eXcpCommand_Program_Prepare_CC *request = (eXcpCommand_Program_Prepare_CC *) env->canFrame.data;
|
||||||
|
|
||||||
|
if ((env->ADR_MTA < env->startFlashAdr) || ((env->ADR_MTA + request->CODESIZE) > env->endFlashAdr)) {
|
||||||
|
|
||||||
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
|
env->response[1] = XCP_ERR_GENERIC;
|
||||||
|
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static uint8_t XCP_PROGRAM_FORMAT_CB(tCanSerialPortFrameXCP *env) {
|
||||||
|
eXcpCommand_Program_Format_CB *request = (eXcpCommand_Program_Format_CB *) env->canFrame.data;
|
||||||
|
|
||||||
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static uint8_t XCP_PROGRAM_RESET_CF(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_PROGRAM_RESET_CF(tCanSerialPortFrameXCP *env) {
|
||||||
env->response[0] = XCP_COMMAND_CONNECT;
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
|
|
||||||
|
|
@ -952,10 +979,20 @@ static uint8_t XCP_GET_SECTOR_INFO_CD(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_SET_CALIBRATION_PAGE_EB(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_SET_CALIBRATION_PAGE_EB(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_SET_CALIBRATION_PAGE_EB *request = (eXcpCommand_SET_CALIBRATION_PAGE_EB *) env->canFrame.data;
|
eXcpCommand_SET_CALIBRATION_PAGE_EB *request = (eXcpCommand_SET_CALIBRATION_PAGE_EB *) env->canFrame.data;
|
||||||
|
|
||||||
|
env->PAGE_ID = request->PAGE;
|
||||||
|
|
||||||
env->response[0] = XCP_COMMAND_CONNECT;
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint8_t XCP_GET_CAL_PAGE_EA(tCanSerialPortFrameXCP *env) {
|
||||||
|
eXcpCommand_XCP_GET_CAL_PAGE_EA *request = (eXcpCommand_XCP_GET_CAL_PAGE_EA *) env->canFrame.data;
|
||||||
|
|
||||||
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
|
env->response[1] = env->PAGE_ID;
|
||||||
|
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
const eXcp_com xcp_com[256] = {
|
const eXcp_com xcp_com[256] = {
|
||||||
{NULL, ""},
|
{NULL, ""},
|
||||||
|
|
@ -1155,18 +1192,18 @@ const eXcp_com xcp_com[256] = {
|
||||||
{NULL, ""},
|
{NULL, ""},
|
||||||
{NULL, ""},
|
{NULL, ""},
|
||||||
{NULL, ""},
|
{NULL, ""},
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xC5 DTO_CTR_PROPERTIES
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xC6 TIME_CORRELATION_PROPERTIES
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xC7 WRITE_DAQ_MULTIPLE
|
||||||
{PROGRAM_VERIFY_C8, "PROGRAM_VERIFY_C8"},
|
{PROGRAM_VERIFY_C8, "PROGRAM_VERIFY_C8"},
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xC9 PROGRAM_MAX (This command does not support block transfer)
|
||||||
{XCP_PROGRAM_NEXT_CA, "XCP_PROGRAM_NEXT_CA"},
|
{XCP_PROGRAM_NEXT_CA, "XCP_PROGRAM_NEXT_CA"},
|
||||||
{NULL, ""},
|
{XCP_PROGRAM_FORMAT_CB, "XCP_PROGRAM_FORMAT_CB"}, // 0xCB PROGRAM_FORMAT
|
||||||
{NULL, ""},
|
{XCP_PROGRAM_PREPARE_CC, "XCP_PROGRAM_PREPARE_CC"}, // 0xCC PROGRAM_PREPARE
|
||||||
{XCP_GET_SECTOR_INFO_CD, "XCP_GET_SECTOR_INFO_CD"},
|
{XCP_GET_SECTOR_INFO_CD, "XCP_GET_SECTOR_INFO_CD"},
|
||||||
{XCP_GET_PGM_PROCESSOR_INFO_CE, "XCP_GET_PGM_PROCESSOR_INFO_CE"},
|
{XCP_GET_PGM_PROCESSOR_INFO_CE, "XCP_GET_PGM_PROCESSOR_INFO_CE"},
|
||||||
{XCP_PROGRAM_RESET_CF, "XCP_PROGRAM_RESET_CF"},
|
{XCP_PROGRAM_RESET_CF, "XCP_PROGRAM_RESET_CF"},
|
||||||
{XCP_PROGRAM_D0, "XCP_PROGRAM_D0"},
|
{XCP_PROGRAM_D0, "XCP_PROGRAM_D0"}, // This command does not support block transfer
|
||||||
{XCP_PROGRAM_CLEAR_D1, "XCP_PROGRAM_CLEAR_D1"},
|
{XCP_PROGRAM_CLEAR_D1, "XCP_PROGRAM_CLEAR_D1"},
|
||||||
{XCP_PROGRAM_START_D2, "XCP_PROGRAM_START_D2"},
|
{XCP_PROGRAM_START_D2, "XCP_PROGRAM_START_D2"},
|
||||||
{XCP_ALLOC_ODT_ENTRY_D3, "XCP_ALLOC_ODT_ENTRY_D3"},
|
{XCP_ALLOC_ODT_ENTRY_D3, "XCP_ALLOC_ODT_ENTRY_D3"},
|
||||||
|
|
@ -1178,7 +1215,7 @@ const eXcp_com xcp_com[256] = {
|
||||||
{XCP_GET_DAQ_RESOLUTION_INFO_D9, "XCP_GET_DAQ_RESOLUTION_INFO_D9"},
|
{XCP_GET_DAQ_RESOLUTION_INFO_D9, "XCP_GET_DAQ_RESOLUTION_INFO_D9"},
|
||||||
{XCP_GET_DAQ_PROCESSOR_INFO_DA, "XCP_GET_DAQ_PROCESSOR_INFO_DA"},
|
{XCP_GET_DAQ_PROCESSOR_INFO_DA, "XCP_GET_DAQ_PROCESSOR_INFO_DA"},
|
||||||
{XCP_READ_DAQ_DB, "XCP_READ_DAQ_DB"},
|
{XCP_READ_DAQ_DB, "XCP_READ_DAQ_DB"},
|
||||||
{NULL, ""},
|
{NULL, ""}, //0xDC GET_DAQ_CLOCK
|
||||||
{XCP_START_STOP_SYNCH_DD, "XCP_START_STOP_SYNCH_DD"},
|
{XCP_START_STOP_SYNCH_DD, "XCP_START_STOP_SYNCH_DD"},
|
||||||
{XCP_START_STOP_DAQ_LIST_DE, "XCP_START_STOP_DAQ_LIST_DE"},
|
{XCP_START_STOP_DAQ_LIST_DE, "XCP_START_STOP_DAQ_LIST_DE"},
|
||||||
{XCP_GET_DAQ_LIST_MODE_DF, "XCP_GET_DAQ_LIST_MODE_DF"},
|
{XCP_GET_DAQ_LIST_MODE_DF, "XCP_GET_DAQ_LIST_MODE_DF"},
|
||||||
|
|
@ -1186,29 +1223,29 @@ const eXcp_com xcp_com[256] = {
|
||||||
{XCP_WRITE_DAQ_E1, "XCP_WRITE_DAQ_E1"},
|
{XCP_WRITE_DAQ_E1, "XCP_WRITE_DAQ_E1"},
|
||||||
{XCP_SET_DAQ_PTR_E2, "XCP_SET_DAQ_PTR_E2"},
|
{XCP_SET_DAQ_PTR_E2, "XCP_SET_DAQ_PTR_E2"},
|
||||||
{XCP_CLEAR_DAQ_LIST_E3, "XCP_CLEAR_DAQ_LIST_E3"},
|
{XCP_CLEAR_DAQ_LIST_E3, "XCP_CLEAR_DAQ_LIST_E3"},
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xE4 COPY_CAL_PAGE
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xE5 GET_SEGMENT_MODE
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xE6 SET_SEGMENT_MODE
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xE7 GET_PAGE_INFO
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xE8 GET_SEGMENT_INFO
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xE9 GET_PAG_PROCESSOR_INFO
|
||||||
{NULL, ""},
|
{XCP_GET_CAL_PAGE_EA, "XCP_GET_CAL_PAGE_EA"}, // 0xEA GET_CAL_PAGE
|
||||||
{XCP_SET_CALIBRATION_PAGE_EB, "XCP_SET_CALIBRATION_PAGE_EB"},
|
{XCP_SET_CALIBRATION_PAGE_EB, "XCP_SET_CALIBRATION_PAGE_EB"},
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xEC MODIFY_BITS
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xEB SHORT_DOWNLOAD (This command does not support block transfer)
|
||||||
{XCP_COMMAND_DOWNLOAD_MAX_EE, "XCP_COMMAND_DOWNLOAD_MAX_EE"},
|
{XCP_COMMAND_DOWNLOAD_MAX_EE, "XCP_COMMAND_DOWNLOAD_MAX_EE"}, // This command does not support block transfer
|
||||||
{XCP_COMMAND_DOWNLOAD_NEXT_EF, "XCP_COMMAND_DOWNLOAD_NEXT_EF"},
|
{XCP_COMMAND_DOWNLOAD_NEXT_EF, "XCP_COMMAND_DOWNLOAD_NEXT_EF"},
|
||||||
{XCP_COMMAND_DOWNLOAD_F0, "XCP_COMMAND_DOWNLOAD_F0"},
|
{XCP_COMMAND_DOWNLOAD_F0, "XCP_COMMAND_DOWNLOAD_F0"},
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0XF1 USER_CMD
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xF2 DOWNLOAD
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xF3 DOWNLOAD_NEXT
|
||||||
{XCP_COMMAND_SHORT_UPLOAD_F4, "XCP_COMMAND_SHORT_UPLOAD_F4"},
|
{XCP_COMMAND_SHORT_UPLOAD_F4, "XCP_COMMAND_SHORT_UPLOAD_F4"}, // This command does not support block transfer
|
||||||
{XCP_COMMAND_UPLOAD_F5, "XCP_COMMAND_UPLOAD_F5"},
|
{XCP_COMMAND_UPLOAD_F5, "XCP_COMMAND_UPLOAD_F5"},
|
||||||
{XCP_COMMAND_SET_MTA_F6, "XCP_COMMAND_SET_MTA_F6"},
|
{XCP_COMMAND_SET_MTA_F6, "XCP_COMMAND_SET_MTA_F6"},
|
||||||
{XCP_UNLOCK_F7, "XCP_UNLOCK_F7"},
|
{XCP_UNLOCK_F7, "XCP_UNLOCK_F7"},
|
||||||
{XCP_GET_SEED_F8, "XCP_GET_SEED_F8"},
|
{XCP_GET_SEED_F8, "XCP_GET_SEED_F8"},
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xF9 SET_REQUEST
|
||||||
{NULL, ""},
|
{NULL, ""}, // 0xFA GET_ID
|
||||||
{XCP_GET_COMM_MODE_INFO_FB, "XCP_GET_COMM_MODE_INFO_FB"},
|
{XCP_GET_COMM_MODE_INFO_FB, "XCP_GET_COMM_MODE_INFO_FB"},
|
||||||
{XCP_COMMAND_SYNCH_FC, "XCP_COMMAND_SYNCH_FC"},
|
{XCP_COMMAND_SYNCH_FC, "XCP_COMMAND_SYNCH_FC"},
|
||||||
{XCP_COMMAND_GET_STATUS_FD, "XCP_COMMAND_GET_STATUS_FD"},
|
{XCP_COMMAND_GET_STATUS_FD, "XCP_COMMAND_GET_STATUS_FD"},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue