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.

MSP430FR2532: Application does not run after programming over BSL and load rest vector address into PC

Part Number: MSP430FR2532
Other Parts Discussed in Thread: MSP-FET

Hi,

I have the problem, that the µC wouldn't start run the application after I load the reset vector address in the PC. Communication is over UART. When I reset the device with the RST pin everything is fine, but the circumstance doesn't allow me to control this pin. So in my thoughts it should be possible to use the Load PC command and invoke the reset vector address 0xFFFE into the PC to reset the device after I finished the download via BSL.

When I stop the device in debug mode (using IAR EW) after I use the Load PC command, the controller is here (BP not active):

and I can't go further by clicking Go (F5).

When I activate the breakpoint at 0xFFFE the controller is here:

and after I click Go (F5), the application is running.

Any suggestions why the controller does no reset? Without the MSP-FET I got an ACK from the BSL after I send the Load PC command and the controller also doesn't run the application. I think it is the same behavior as I mentioned first.

  • Hello,

    Sorry for the delay.  Were you able to find a workaround?  

    How are you invoking the BSL?  was it done via software or is it a custom BSL?  

    I don't think you can just point the PC to the reset vector.  I think you need to create a PUC in the device.  I guess you could load a small function somewhere that causes a PUC, and point the PC counter there.  

    Thanks,

    JD

  • Hi,

    no problem. I haven't found a workaround right now.

    I invoke the BSL via software, after my application received the right command over UART, with this code:

    case command_bootloader:        // "BA" received
        asm("NOP");
        __disable_interrupt();      // disable interrupts 
        ((void ( * )())0x1000)();   // jump to BSL        
        break;

    I have this function from the slau550aa.pdf at page 5.

    I do not have customized the BSL.

    I thought it is exactly the way I can run my application, when I put the reset vector address to the PC? Because it is described in the same slau550aa.pdf at page 30.

**Attention** This is a public forum