DCM#1: Jump To Boot

1. DcmDspSessionForBoot

DcmDspSessioForBoot
DcmDspSessionForBoot
  1. Configures a diagnostic session as the one that needs to transition to boot.
  2. Further, it can identify two separate bootloaders. One for the OEM and one for the Supplier. Its use depends on the desing of the BSW for the ECU.
  3. Also, it specifies the source of the final positive response. This is can be either the application itself or the bootloader.

2. DcmSendRespPendOnTransToBoot

DcmSendRespPendOnTransToBoot

3. ModeDeclarationGroupPrototype DcmEcuReset

DcmEcuReset is the BswM ModeDeclarationGroupPrototype that is updated this operation. When the operation is requested the BswM mode is first switched to JUMPTOBOOTLOADER or JUMPTOSYSSUPPLIERBOOTLOADER and then to EXECUTE once all the checks are performed and the ECU is ready for reset.

ModeDeclarationGroup DcmEcuRest

Different possible cases

DCM supports 4 different implementations for the jump to boot operation. These implementations differ in the sequence in which sending the final positive response, sending the response pending negative response and the ECU Reset operation is performed.

Process of Jump to Boot in DCM

JumpToBoot in DCM

Step1: Switch mode of DcmEcuReset to trigger the BswM

In this step, mode of ModeDeclarationGroupPrototype DcmEcuReset is changed to JUMPTOBOOTLOADER or JUMPTOSYSSUPPLIERBOOTLOADER depending on value of DcmDspSessionForBoot. If the configuration parameter DcmDspSessionForBoot is set to DCM_OEM_BOOT or DCM_OEM_BOOT_RESPAPP then the DcmEcuReset is set to JUMPTOBOOTLOADER. This indicates that the jump will be performed to OEM bootloader. If the configuration parameter DcmDspSessionForBoot is set to DCM_SYS_BOOT or DCM_SYS_BOOT_RESPAPP then the DcmEcuReset is set to JUMPTOSYSSUPPLIERBOOTLOADER. This indicates that the jump will be performed to OEM bootloader.

Step2: Send the response pending negative response

This is the step where the response pending negative response (NRC_RCRRP_0x78) is sent if the configuration parameter DcmSendRespPendOnTransToBoot is set to TRUE.

Step3: Send the final positive response

This step is applicable only when the DcmDspSessionForBoot is set to either DCM_SYS_BOOT_RESPAPP or DCM_OEM_BOOT_RESPAPP. This is the step where the final positive response will be sent by DCM before the ECU is reset for the jump to bootloader.

Step4: Call Dcm_SetProgConditions()

This step allows the Application to store relevant information prior to jumping to bootloader.

Step5: Mode Switch DcmEcuReset to EXECUTE

Now that all the checks are complete and any required responses are sent, the mode of the ModeDeclarationGroupPrototype DcmEcuReset is changed to EXECUTE. Application is not ready to perform the ECU reset operation.

Step6: Perform ECU Reset

This is part where actual reset is performed. Reset can be triggered by the forcing the execution of program from the first instruction or by letting the watchdog reset the controller.

Step7: In Boot

If the configuration parameter DcmDspSessionForBoot was set to DCM_OEM_BOOT or DCM_SYS_BOOT then the boot is expected to send the final positive response now.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store