UCD3138064: UCD3138064: Question About MFBALR1 Initialization in load.asm

Part Number: UCD3138064
Other Parts Discussed in Thread: UCD3138,

Hello TI Support,

We are reviewing the load.asm startup code in our UCD3138064 firmware.

The following three instructions are commented out:

; LDR   r4, c_mfbalr1_half0
; MOV   r0, #0x62
; STRH  r0, [r4]

However, the following two instructions are still executed:

LDR   r0, c_mfbalr2_half0_load
STRH  r0, [r4,#8]

According to the TI application note “Avoiding UCD3138 Device Lockup” (SLUAAP5 / ZHCACU3), if the first three instructions are removed while the following two instructions are retained, r4 may not contain a valid value and the device may continuously reset. The document states that all five instructions should either be retained or removed together.

However, our UCD3138064 firmware can still run normally on a UCD3138064 device when the first three instructions are commented out.

In an additional test, when this UCD3138064 firmware was programmed into a UCD3138064A device, it could not reach main(). After uncommenting the first three instructions, the firmware could reach main().

Could you please help clarify the following questions?

  1. Why can the UCD3138064 still run normally when the first three instructions are commented out?

  2. For UCD3138064 firmware, is it safe and recommended to uncomment the first three instructions so that all five instructions are executed?

  3. Alternatively, can all five instructions be removed or commented out? If so, under what conditions is this safe?

  4. For firmware running from Program Flash Block 0, does TI recommend keeping all five instructions or removing all five?

  5. Could uncommenting the first three instructions cause any functional or compatibility issue on UCD3138064?

Thank you.

  • We have received your case and have initiated our investigation. The analysis will require some time to complete. We appreciate your patience during this process.

  • The UCD3138064 may run normally with the first three instructions commented out because:

    • Default Memory Mapping: After reset, the UCD3138064's Boot ROM automatically initializes basic memory mapping that allows execution from Program Flash Block 0 (address 0x0000)
    • r4 Register State: Even without explicit initialization, register r4 may contain a usable value (possibly left from Boot ROM execution or reset state) that happens to work for the subsequent instructions
    • Device Tolerance: The original UCD3138064 silicon may be more tolerant of incomplete MFBALR initialization

    However, this is unreliable and not recommended - it's essentially working by accident due to favorable default conditions.