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.

MSP430F5438: BSL Password for MSP430F5438

Part Number: MSP430F5438

Hello,

I am currently trying to find the RX password for the BSL for the MSP430F5438 and cannot seem to get it.  I am currently invoking BSL mode through software on CCS using:

__disable_interrupt(); //disable interrupts
((void(*)())0x1000)(); //jump to BSL

RX and TX lines are respectively on P1.1 and P1.2 and are connected to the RX and TX lines of a FTDI cable.

I have verified the BSL can communicate with my computer via UART using the following commands:

//Baud Rate
0x80 0x02 0x00 0x52 0x02 0x90 0x55
//Returns buffer size
0x80 0x01 0x00 0x1A 0x8B 0x52

I cannot get the password to unlock however.  Whenever I pass through the password, I will receive the ack return value from the BSL (0x00) and the BSL would have erased the main memory code as well as exiting BSL mode for some reason. 

Here are a few passwords I have tried:

//password given in BSL Flashed Devices document
80 11 00 11 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 5C 38 4F

//password I made assuming the Interrupt vector is FF

//16 FFs password I made assuming the Interrupt vector is FF
0x80 0x11 0x00 0x11 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x4E 0xC9

//32 FFs

0x80 0x21 0x00 0x11 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x9E 0xE6

BSL interrupt vector table (located between addresses 0xFFE0 and 0xFFFF)

//32 from memory (BSL interrupt vector table (located between addresses 0xFFE0 and 0xFFFF) Located by looking at Memory Browser via CCS
0x80 0x21 0x00 0x11 0x5C 0x44 0x5C 0x00 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x28 0x86 0xBA

All of the above passwords seem to not work.  They are all being acknowledged with 0x00 from the BSL in which afterwards the BSL no longer responds to further commands sent to it, leading me to assume it had resetted for some reason and thinking it left BSL mode.

Thank you for your help in advnace!

Nick

  • Hey Nick,

    I have a few suggestions that will hopefully help. From the Flash BSL documentation, it looks like your device requires a 16-byte password, not 32 byte:

    The BSL password should be equal to your interrupt vector table content:

    Another thing you will want to keep in mind is the endian-ness of the password file. You will want to input the lower-byte first, then the upper byte. I have another thread where I explain this and other BSL considerations with more detail. I think it may be helpful in this case:

    https://e2e.ti.com/support/microcontrollers/msp430/f/166/p/736686/2777509#pi320995=5

    Please take a look and let me know if you continue to have issues.

    Thanks!

    -Mitch

  • Hello Mitch,

    The solution to this is hinted in the documentation but not specifically said.

    The password ended up being the last 16 bytes of the interrupt vector table, between FFF0 and FFFF.

    Here is an image of my memory browser:

    Also, it is like you said, the endianness matters.

    Here is the password I ended up sending as well as the message sent:

    0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x28 0x5C

    0x80 0x11 0x00 0x11 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x44 0x5C 0x28 0x5C 0xB8 0xF5

    Thanks for the help!

    Nick