Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

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.

TIDM-02011: About PIE swap and LS0/LS1 swap for LFU

Part Number: TIDM-02011

Dear Champs, 

I am asking this for our customer.

Regarding to step 9 of the app note "spruiu9".

https://www.ti.com/lit/ug/spruiu9b/spruiu9b.pdf?ts=1678068618288&ref_url=https%253A%252F%252Fwww.google.com.tw%252F

1. For LFU PIE table population:

For example,

old image:

      ISR A

      ISR B

      ISR C

new image

     ISR A

     ISR D

The user needs to popular the ISR in the new application code in this way:

Interrupt_disable(interrupt number B);

Interrupt_disable(interrupt number C);

Shadow_Interrupt_register(interrupt number A, &A);

Interrupt_enable(interrupt number A);

Shadow_Interrupt_register(interrupt number D, &D);

Interrupt_enable(interrupt number D);

That is, the user should

disable these ISR that are not yet available in the new app

popular ISR that are available in old and new apps and popular ISR the are available in the new apps and enable them.

Is our understanding correct?

2. For LS0/LS1 swap,

The user is responsible to allocate these function pointers "symmetrically" in LS0 and LS1.

That is, the function pointers for old app and new app should reside at the same relative location in both LS0 and LS1

Is it right?

3. LS0/LS1 swap is optional to the user if there is no function pointers swap. Is it right?

  • Wayne,

    1. Running Interrupt_disable() in init_lfu() (where the shadow PIE vector table is populated) could cause problems, because in your specific example, you could end up disabling one of the ISRs that could still be running during the LFU process. Remember that init_lfu() occurs prior to the LFU switchover so old FW ISRs are still running at that point. So your steps on Shadow_Interrupt_Register() are correct. But the Interrupt_Disable (for B and C) should occur during the Actual switchover. Similarly, you can run the Interrupt_Enable (on D) during the Actual switchover.

    2.Correct.

    3. Correct

    Thanks,

    Sira