This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570LC4357: Are any TMS570LC4357 registers not reset after a PORRST?

Expert 1226 points
Part Number: TMS570LC4357


We're using the TMS570LC4357.

My understanding is that in a PORRST the 4357's RAM is not automatically reset, but that the vast majority of the MCU registers are put into their reset state.

My understanding is that even the SYSESR register is automatically reset by a PORRST.  (SYSESR's PORST bit gets set, of course.)

My understanding is that (other than the PC) all of the basic ARM CPU registers (R0-14, CPSR, and SPSR, including any banked versions) need to be explicitly initialized after any reset to ensure that there is no CCM error.  This would render somewhat moot the question of whether or not a PORRST resets those registers.  I assume the same is true for the FPU registers, is that correct? 

Other than those, are there any 4357 MCU registers which are _not_ reset by a PORRST?  TI system or peripheral control registers?  ARM CP15 registers?

--thx

  • Hello,

    On a nPORRST reset, most of the registers get reset to its default values. Some error registers (for example, double bit ECC error addr register (UERRADDR)). After a power-on reset, the contents of those registers will be unpredictable.

    After a power-on reset, the contents of the SRAM is unknown. A hardware auto-initialization can be performed so that there is no ECC error.

    After a power-on reset, CPU internal registers are not guaranteed to be in the same state for both the CPUs. Any difference in the two CPUs’ outputs is flagged as a fault of a high-severity level. Therefore, the CPU internal core registers need to be initialized to a predefined state before any function call is made.
  • Hello QJ,

    Thank you for following up on my question. I would like to dig into this a little further to make sure that my understanding is complete.

    First, I should have made clear earlier when I said "PORRST" that I meant what the Hercules 4357 does in response to the nPORRST input having been held low for at least the minimum required time. (Incidentally, we've connected a TPS65381a's NRES output to our 4357's nPORRST input.)

    My understanding is that when executing code immediately after power has been initially applied to the 4357 (and the TPS65381a has released our nPORRST input), then everything which is reset by the 4357's nPORRST logic will be in a known state, and that everything else (including SRAM) will be in an unknown / unreliable state.

    My understanding is that after any further nPORRST cycles (if power has been continuously good throughout) that the SRAM contents will contain whatever it had prior to the nPORRST (is this independent of how long nPORRST was low? what if it was low for several seconds?), some? most? CPU & FPU registers will be unreliable, and that _most_ other registers will be reset by the nPORRST logic.

    It is these "most other registers" that I am particularly interested in. There are, after all, rather a lot of them. Are there _any_ registers (CPU, FPU, CP15, or TI config/peripheral) that reliably maintain their state across a nPORRST boundary? (If, again, power has been good throughout.)

    You mentioned something about the UERR_ADDR registers. The 4357's technical reference manual specifies that they are 0 "after asynchronous reset on power-on reset", which I assume includes nPORRST. Are you saying that those registers are reset to 0 by a nPORRST, but if an access to corrupted SRAM has been attempted prior to any code reading UERR_ADDR, then UERR_ADDR will not be 0?

    --thx
  • Hello,

    As stated in the TMS570 TRM, the following registers are not reset:

    • UERRADDR (VIM Module)  -- Page 683, SPNU563A
    • FBVECADDR (Vim module)  -- Page  683, SPNU563A
    • SBERRADDR (VIM module)  -- Page 684, SPNU563A
    • UERRADDR1 (MibSPI)  -- Page 1592, SPNU563A
    • UERRADDR0  (MibSPI)  -- Page 1594, SPNU563A
    • SBERRADDR1  (MibSPI)  -- Page 1603, SPNU563A
    • SBERRADDR0  (MibSPI)  -- Page 1604, SPNU563A

    ARM TRM says "After applying power-up reset to the processor, you must initialize various registers"  (Cortex-R5 r1p2)

    "Most of the architectural registers in the processor, such as r0-r14, and s0-s31 and d0-d15 when floating-point is included, are not reset. Because of this, you must initialize these for all modes before they are used"

    "The processor does not initialize the TCM RAMs. It is not essential to initialize all the memory attached to the TCM interface but ARM recommends that you do."

    TMS570 TRM: "the contents of the CPU level 2 SRAM after power-on reset is unknown"