Infineon XMC1000
This article describes device specifics of the Infineon XMC1000 microcontroller.
BMI - Boot Mode Index
The XMC1000 family supports different boot modes. The actual boot mode is configured in the Boot Mode Index (BMI) which is a 2 byte value stored in the flash and holding information about the boot mode (start-up mode) and the debug configuration of the device. Depending on the configured boot mode, different debug pins are used for the debug communication. For a overview of all different boot modes and the used debug pins, please refer to XMC1000#Overview_BMI_Modes
Problem
The XMC1000 series devices are shipped with boot mode ASC Bootstrap Loader mode (ASC_BSL). Unfortunately, the debug interface of the device is disabled in this mode. So when using J-Link or Flasher, the boot mode needs to be changed prior a target connection can be established.
Solution
By default, J-Link changes the BMI from ASC to SWD0 (P0.14 & P015 used for SWD) if the BMI of the device is ASC_BSL. If a BMI other than SWD0 is required, the default behavior can be simply overwritten using a J-Link Script File. Please find below script files for the other boot modes:
- ASC_BSL to SWD1: Infineon_XMC1000_PCode_SWD1.pex
- ASC_BSL to SPD0: Infineon_XMC1000_PCode_SPD0.pex
- ASC_BSL to SPD1: Infineon_XMC1000_PCode_SDP1.pex
Please note that the J-Link Script Files are pre-compiled (*.pex) thus they neither contain plaintext nor can be modified. If you feel that you need a modified version of the script file, please get in contact with SEGGER directly (e.g. via E-Mail / forum). For further information how to use the J-Link Script File in your environment please refer to https://wiki.segger.com/Using_J-Link_Script_Files
NOTE
- The required switching sequence needs to be performed over a half-duplex UART communication on the TMS/SWDIO pin (Pin7) thus this pin needs to be connected to be able to change the BMI
- The bootstrap loader of the XMC1000 becomes confused if invalid / incorrect data have been sampled. To prevent unexpected behavior, we recommend to perform a power-on-reset of the target before establishing a connection using J-Link
- The BMI configuration is stored in the flash and therefore survives a power-on-reset of the device
Overview BMI Modes
The table below represents the available boot mode index (BMI) configurations and the used pins in this mode.
BMI | Description |
---|---|
ASC Bootstrap Load Mode (ASC_BSL) | Factory default half-duplex UART |
User Mode (Productive) | |
User Mode (Debug) SWD0 | P0.14 & P0.15 used for SWD |
User Mode (Debug) SWD1 | P1.3 & P1.2 used for SWD |
User Mode (Debug) SPD0 | P0.14 used for SPD |
User Mode (Debug) SPD1 | P1.3 used for SPD |
User Mode (HAR) SWD0 | P0.14 & P0.15 used for SWD |
User Mode (HAR) SWD1 | P1.3 & P1.2 used for SWD |
User Mode (HAR) SPD0 | P0.14 used for SPD |
User Mode (HAR) SPD1 | P1.3 used for SPD |
For further information regarding the BMI, please refer to the technical reference manual of the Infineon XMC1000 series.