Quote:
Originally Posted by RayBan81
I also found some versions of 08flash on my winkfp installation, but the fun-stuff is just called as functions from external librarys.
Starting from version 6.13 they included a function "PruefeSignatur" (CheckSignature). So it looks like at that time the signature fun started (~ Summer 2005). But again, the function just references an API call where the "magic" happens.
I included one version, which i think links to the DME. Change the file extension to rar, pw is "e90post".
|
Yeah, the magic occurs in the SGBD files. Check out this job (SPEICHER_SCHREIBEN) in GS19D:
Code:
<JOB>
<JOBNAME>SPEICHER_SCHREIBEN</JOBNAME>
<JOBCOMMENT>Beschreiben des Steuergeraete-Speichers</JOBCOMMENT>
<JOBCOMMENT>Als Argumente werden uebergeben:</JOBCOMMENT>
<JOBCOMMENT>Speichersegment, Start-Adresse, Anzahl der Datenbytes</JOBCOMMENT>
<JOBCOMMENT>und Datenbytes (Datenbytes durch Komma getrennt)</JOBCOMMENT>
<JOBCOMMENT>KWP2000: $3D WriteMemoryByAddress</JOBCOMMENT>
<JOBCOMMENT>Modus : Default</JOBCOMMENT>
<ARG>
<ARGNAME>SEGMENT</ARGNAME>
<ARGTYPE>string</ARGTYPE>
<ARGCOMMENT> "LAR" "linearAdressRange"</ARGCOMMENT>
<ARGCOMMENT> "ROMI" "ROM / EPROM, internal"</ARGCOMMENT>
<ARGCOMMENT> "ROMX" "ROM / EPROM, external"</ARGCOMMENT>
<ARGCOMMENT> "NVRAM" "NV-RAM (characteristic zones, DTC memory"</ARGCOMMENT>
<ARGCOMMENT> "RAMIS" "RAM, internal (short MOV)"</ARGCOMMENT>
<ARGCOMMENT> "RAMXX" "RAM, external (x data MOV)"</ARGCOMMENT>
<ARGCOMMENT> "FLASH" "Flash EPROM, internal"</ARGCOMMENT>
<ARGCOMMENT> "UIFM" "User Info Field Memory"</ARGCOMMENT>
<ARGCOMMENT> "VODM" "Vehicle Order Data Memory"</ARGCOMMENT>
<ARGCOMMENT> "FLASHX" "Flash EPROM, external"</ARGCOMMENT>
<ARGCOMMENT> "RAMIL" "RAM, internal (long MOV / Register)"</ARGCOMMENT>
<ARGCOMMENT> "???" "unbekanntes Speichersegment"</ARGCOMMENT>
</ARG>
<ARG>
<ARGNAME>ADRESSE</ARGNAME>
<ARGTYPE>long</ARGTYPE>
<ARGCOMMENT>0x000000 - 0xFFFFFF</ARGCOMMENT>
</ARG>
<ARG>
<ARGNAME>ANZAHL</ARGNAME>
<ARGTYPE>int</ARGTYPE>
<ARGCOMMENT>1 - n ( max. 249 )</ARGCOMMENT>
</ARG>
<ARG>
<ARGNAME>DATEN</ARGNAME>
<ARGTYPE>string</ARGTYPE>
<ARGCOMMENT>zu schreibende Daten (Anzahl siehe oben)</ARGCOMMENT>
<ARGCOMMENT>z.B. 1,2,03,0x04,0x05...</ARGCOMMENT>
</ARG>
<RESULT>
<RESULTNAME>JOB_STATUS</RESULTNAME>
<RESULTTYPE>string</RESULTTYPE>
<RESULTCOMMENT>OKAY, wenn fehlerfrei</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_GENERAL_REJECT"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_SERVICE_NOT_SUPPORTED"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_SUBFUNCTION_NOT_SUPPORTED__INVALID_FORMAT"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_BUSY_REPEAT_REQUEST"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_CONDITIONS_NOT_CORRECT_OR_REQUEST_SEQUENCE_ERROR"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_ROUTINE_NOT_COMPLETE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_REQUEST_OUT_OF_RANGE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_SECURITY_ACCESS_DENIED__SECURITY_ACCESS_REQUESTED"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_EXCEED_NUMBER_OF_ATTEMPTS"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_REQUIRED_TIME_DELAY_NOT_EXPIRED"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_DOWNLOAD_NOT_ACCEPTED"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_IMPROPER_DOWNLOAD_TYPE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_CANNOT_DOWNLOAD_TO_SPECIFIED_ADDRESS"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_CANNOT_DOWNLOAD_NUMBER_OF_BYTES_REQUESTED"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_UPLOAD_NOT_ACCEPTED"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_IMPROPER_UPLOAD_TYPE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_CANNOT_UPLOAD_FROM_SPECIFIED_ADDRESS"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_CANNOT_UPLOAD_NUMBER_OF_BYTES_REQUESTED"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_TRANSFER_SUSPENDED"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_TRANSFER_ABORTED"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_ILLEGAL_ADDRESS_IN_BLOCK_TRANSFER"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_ILLEGAL_BYTE_COUNT_IN_BLOCK_TRANSFER"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_ILLEGAL_BLOCK_TRANSFER_TYPE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_BLOCKTRANSFER_DATA_CHECKSUM_ERROR"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_REQUEST_CORRECTLY_RECEIVED__RESPONSE_PENDING"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_INCORRECT_BYTE_COUNT_DURING_BLOCK_TRANSFER"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_SERVICE_NOT_SUPPORTED_IN_ACTIVE_DIAGNOSTIC_MODE"</RESULTCOMMENT>
<RESULTCOMMENT> "OKAY"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_INCORRECT_RESPONSE_ID"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_INCORRECT_LEN"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_INCORRECT_LIN_RESPONSE_ID"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_INCORRECT_LIN_LEN"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_F_CODE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_TABLE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_INTERPRETATION"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_F_POS"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_SEGMENT"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ADDRESS"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_NUMBER"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_DATA"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_MODE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_BAUDRATE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_BYTE1"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_BYTE2"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_BYTE3"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_DATA_OUT_OF_RANGE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_NUMBER_ARGUMENT"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_RANGE_ARGUMENT"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_VERIFY"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_NO_BIN_BUFFER"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_BIN_BUFFER"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_DATA_TYPE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_CHECKSUM"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_FLASH_SIGNATURE_CHECK"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_VEHICLE_IDENTIFICATION_NR"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_PROGRAMMING_DATE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ASSEMBLY_NR"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_CALIBRATION_DATASET_NR"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_EXHAUST_REGULATION_OR_TYPE_APPROVAL_NR"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_REPAIR_SHOP_NR"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_TESTER_SERIAL_NR"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_MILAGE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_PROGRAMMING_REFERENCE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_NO_FREE_UIF"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_MAX_UIF"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_SIZE_UIF"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_LEVEL"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_KEY"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_AUTHENTICATION"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_NO_DREF"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_CHECK_PECUHN"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_CHECK_PRGREF"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_AIF_NR"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_CHECK_DREF"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_CHECK_HWREF"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_CHECK_HWREF"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_CHECK_PRGREFB"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_CHECK_VMECUH*NB"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_CHECK_PRGREFB"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_CHECK_VMECUH*N"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_MOST_CAN_GATEWAY_DISABLE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_NO_P2MIN"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_NO_P2MAX"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_NO_P3MIN"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_NO_P3MAX"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_NO_P4MIN"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_DIAG_PROT"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_SG_ADRESSE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_SG_MAXANZAHL_AIF"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_SG_GROESSE_AIF"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_SG_ENDEKENNUNG_AIF"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_SG_AUTHENTISIERUNG"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_TELEGRAM_LEN_OUT_OFF_RANGE"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ARGUMENT"</RESULTCOMMENT>
<RESULTCOMMENT> "ERROR_ECU_UNKNOWN_NEGATIVE_RESPONSE"</RESULTCOMMENT>
</RESULT>
<RESULT>
<RESULTNAME>_TEL_AUFTRAG</RESULTNAME>
<RESULTTYPE>binary</RESULTTYPE>
<RESULTCOMMENT>Hex-Auftrag an SG</RESULTCOMMENT>
</RESULT>
<RESULT>
<RESULTNAME>_TEL_ANTWORT</RESULTNAME>
<RESULTTYPE>binary</RESULTTYPE>
<RESULTCOMMENT>Hex-Antwort von SG</RESULTCOMMENT>
</RESULT>
</JOB>
You can extract the jobs to a XML file:
Code:
C:\EDIABAS\Bin>xtract -X c:\ediabas\ecu\gs19d.prg
XTRACT Version 7.3.0, EDIABAS Version 7.3.0
Copyright BMW AG, created by Softing AG
C:\EDIABAS\ECU\GS19D.PRG -> .\GS19D.XML
Press any key to exit...