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.

TMS320F28388D: Boot fail in flash mode

Part Number: TMS320F28388D


Dear.

Rescently, I have designed motor drive application by using TMS320F28388D.

I have faced to booting fail issue when I tried to boot from flash. However, It booted well in debug mode.

I searched and found a similar sympthom and issue in e2e forum.(Please refer the below address)

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/591382/rtos-launchxl-f28379d-launchxl-f28379d-fail-to-boot-from-flash

and I have tried the solution (adding disabling watchdog config) and finally It worked.

However, I have several questions for the issue and solution. 

  1) I just wonder if it is correct solution for the issue.

  2) Please explain why this issue happened and the root cause in flash boot mode.

  3) Please explain why it worked well in debug mode even though without any watchdog configuration. What is different booting sequence in debug mode and flash mode??

  4) There must be reason the watchdog processing when it boot. I wonder if it is ok to disable watchdog.

  5) What is the role of the watchdog which I disabled refering the e2e forum? 

Thanks a lot.

  • Hi,

      1) I just wonder if it is correct solution for the issue.

    Yes, it is correct.

      2) Please explain why this issue happened and the root cause in flash boot mode.

    If there are lot's of variable to initialize then .cinit takes lot's of time and WD get timeout.

      3) Please explain why it worked well in debug mode even though without any watchdog configuration. What is different booting sequence in debug mode and flash mode??

    It is mentioned in other E2E post you were referring. When running with debugger, there is gel file which disabled WD hence it works with debugger.

      4) There must be reason the watchdog processing when it boot. I wonder if it is ok to disable watchdog.

    As mentioned in point #2, it just because there are lot's of variables to initialize. So it's ok to disable the WD.

      5) What is the role of the watchdog which I disabled refering the e2e forum? 

    Watchdog is used to recover the device from unknown errors by issuing a reset. You can enable the WD in your application and service it before timesout.

    Hope this helps.

    Regards,

    Vivek Singh

  • Hi. Vivek

    Thanks for the quick reply. 

    I have additional questions for your feed-back.

    Vivek) As mentioned in point #2, it just because there are lot's of variables to initialize. So it's ok to disable the WD.

    Inseok_10.29) Currently We use almost TI basic code. We only little adjust heap size.The issue was always happened when we minimized the heap size. 

                            It seems that WD time is already not enough until moving to main function.

                            Is the WD time fixed value? What's current WD time? 

                            Can we adjust the time instead of disabling WD when the system boot? 

    Vivek) Watchdog is used to recover the device from unknown errors by issuing a reset. You can enable the WD in your application and service it before timesout.

    Inseok_10.29) Is there no other side effect or issue when we do not use the WD? Please let us know how we can re-enable the WD in application. 

     

    Thanks alot 

    Inseok.

  • Hi,

    WD timer is fixed and it's 8bit counter counting 10MHz INTOSC clock. User can not adjust it.

    As mentioned earlier, WD is used for recovering the device from system error by issuing reset (safety mechanism) but in this initialization state, device configuration is default and none of the GPIOs are active so it should be ok.

    Regards,

    Vivek Singh

  • Hi, Vivek

    OK. Understood.

    Please reply for my last question How I can enable this WD again after initialization is done. 

    Is this WD only used when the system is initializing? 

    What about during the processor is running after initialization is done

    Please give some guide for the WD. 

    Thanks alot.

    Inseok. 

  • Hi,

    You can enable the watchdog by updating WDDIS bit in WDCR register. We have a function SysCtl_enableWatchdog(); which can be used for the same.

    Is this WD only used when the system is initializing? 

    What about during the processor is running after initialization is done

    WD can be used during application runtime as well and you need to make sure you service the WD in application at regular interval before counter expires. 

    Regards,

    Vivek Singh