This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Freescale K22 Cortex-M4  cpu : why Core Lock Up state occurs ???

I am using Cortex m4 processor from freescale K22,

In boot loader i download my firmware and after that I do following steps to soft restart

   // Disable - WatchDog and disbled IRQ.

  WDT_DISABLE();

  Disable_ALL_IRQ();

  DisableInterrupts;

  // Small delay is required before Soft RESET.

  delay1S();

  // SOFT RESET For K20

    SCB_AIRCR = SCB_AIRCR_VECTKEY(0x05FA) | SCB_AIRCR_SYSRESETREQ(1) ;

Now when MCU gets soft restart signal, next time it goes into CORE LOCK UP state

Ref:

ARM Information Center

Also after soft restart, i take jump to firmware with ODD address so as to ensure it is thumb mode.

my firmware address is 0X5000 + 1

Then it remains in Hard fault mode until i give power on reset then this hard fault state never occurs.

Can any body tell why this Hard fault state occurs when I soft restart??????

Thanks in advance!!!

Parents
  • Thanks Joseph.

    I tried using 4

    SCB_AIRCR = SCB_AIRCR_VECTKEY(0x05FA) | SCB_AIRCR_SYSRESETREQ(4) ;

    but NO improvements, still same results.

    These are .h file defines

    #define SCB_AIRCR_SYSRESETREQ_SHIFT              2

    #define SCB_AIRCR_VECTKEY_MASK                   0xFFFF0000u

    #define SCB_AIRCR_SYSRESETREQ(x)                 (((uint32_t)(((uint32_t)(x))<<SCB_AIRCR_SYSRESETREQ_SHIFT))&SCB_AIRCR_SYSRESETREQ_MASK)

    I have already posted on freescale communitiy BUT NO REPLY

    I don't know why????

    but same code works well for K20 processor, and it is not working for k22..........

    https://community.freescale.com/message/361246#361246

    and

    https://community.freescale.com/message/362070#362070

    Anyway Thanks a lot Joseph!!!

    By the way r u famous author of cortex series books???

    Thanks

Reply
  • Thanks Joseph.

    I tried using 4

    SCB_AIRCR = SCB_AIRCR_VECTKEY(0x05FA) | SCB_AIRCR_SYSRESETREQ(4) ;

    but NO improvements, still same results.

    These are .h file defines

    #define SCB_AIRCR_SYSRESETREQ_SHIFT              2

    #define SCB_AIRCR_VECTKEY_MASK                   0xFFFF0000u

    #define SCB_AIRCR_SYSRESETREQ(x)                 (((uint32_t)(((uint32_t)(x))<<SCB_AIRCR_SYSRESETREQ_SHIFT))&SCB_AIRCR_SYSRESETREQ_MASK)

    I have already posted on freescale communitiy BUT NO REPLY

    I don't know why????

    but same code works well for K20 processor, and it is not working for k22..........

    https://community.freescale.com/message/361246#361246

    and

    https://community.freescale.com/message/362070#362070

    Anyway Thanks a lot Joseph!!!

    By the way r u famous author of cortex series books???

    Thanks

Children