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.

MSP430FR59691: BSL write check failed

Part Number: MSP430FR59691
Other Parts Discussed in Thread: MSP-TS430RGZ48C, MSPBSL, MSP430FR5969, MSP-FET

Hi,

I want to program a MSP430FR59691 through i2c BSL. The communication works, but i have two problems. 

First, i get a lot of  "Flash write check failed" errors and i don´t know how i can fix that. 

Second i get responses from the RX Data Block that no error ocurred, but when i read out the memory (with elpotronic FET-Pro430) i see a lot of 0xFF where i got a positive response from BSL. In the cases where it's not 0xFF it's just some data which has nothing to do with the data i transmitted. 

Is there anything i can do, except for using BSL-Scripter ( didn´t get it to work) 

  • Hello Martin,

    You shouldn't get the "Flash Write Check Error" for the MSP430FR59691 does not have Flash. Are you issuing the correct setup commands to the device via the scripter? Can you provide the log file for your script?

    When reading out memory on the MSP430, sections of memory that cannot be read will be seen as 0xFF. Also, depending on your settings when programming, blank sections of memory well be written to as 0xFF.
  •  

    I got this BSL response. And SLAU550 says that MSG = 0x01 indicates a "Flash wirte check failed"

    I send this already in a different thread and it was suggested to look over the connections and pull ups, but i can´t see any mistake. By the way i use the MSP-TS430RGZ48C.

    I know that some sections of memory cannot be read, but if i program the MSP through JTAG/SBW and read the memory afterwards i see the complete code. With BSL it looks more like rubbish or dummy data. 

    This is the program i try to transmit. The lines until Adress FFCC always get positive BSL-response, but no real data in the memory. After FFCC i get nearly always the "Flash write check failed" error described above

    :204400000F1403431F426E063F821A243F800E000E242F831E201F422A1C5F02924F1E1C4D       
    :204420004E0692532A1CB2F0EFFF4006123C1F42281C5F029F424C06001C9253281C093C16
    :2044400082432A1C8243281CB2C26C06B1C0100004000F16001381000024B113D0010C93CC
    :204460000224B11300000C43B1136C00B113D4019253241C8263261C001332D01000FD3F8D
    :2044800080010100CA010100B80101000101010400200001000000000000280000008C44F4
    :0E44A0000000281C000098440000001C0000D2
    :04FF8000FFFFFFFF81
    :04FF8400FFFFFFFF7D
    :08FF8800FFFFFFFFFFFFFFFF79
    :02FFCC007A4475
    :02FFCE007A4473
    :02FFD0007A4471
    :02FFD2007A446F
    :02FFD4007A446D
    :02FFD6007A446B
    :02FFD8007A4469
    :02FFDA007A4467
    :02FFDC007A4465
    :02FFDE007A4463
    :02FFE0007A4461
    :02FFE2007A445F
    :02FFE4007A445D
    :02FFE6007A445B
    :02FFE8007A4459
    :02FFEA00704461
    :02FFEC007A4455
    :02FFEE000044CD
    :02FFF0007A4451
    :02FFF2007A444F
    :02FFF4007A444D
    :02FFF6007A444B
    :02FFF8007A4449
    :02FFFA007A4447
    :02FFFC007A4445
    :02FFFE00564467
    :020000040001F9
    :200000002A1440181A425C014018B240805A5C018F0080449F008C44132489009E44880024
    :20002000AE440C3C0C097F4C5F0600185F4F8044A90004000D094F13A9000400D908F223EF
    :200040007AC23AD0085A4018824A5C018F0000009F00000009248A000000033C6A13AA002C
    :2000600004009A000000FA2328161001B240805A5C01D2D30402F2D0C0000C0292C330018C
    :20008000F240A5006101A2436201B2403301640182436601C243610192D34006B2D000078D
    :2000A0004006B2F0EFFF4006B2D06C045406F2400A004606C243470692C34006B2400B0066
    :2000C0006A068243281C034332D018000343B1133E01FD3F03431A147A4C243CAC0001007B
    :2000E0000E930D243F9000010A2C29434F4F8F107B4C0FDB1983FA23023C2F9202287B4C25
    :20010000013CCB0A1F833F930D244B4BAD000100CD4BFFFF1F833F93F923043CAD00010050
    :20012000CD4FFFFF7F4C0F9AF9237F4C0F93E5237F4C8F106B4C0F5BD123191610018293CC
    :20014000281C1D20B2904600001C0720B24010001E1C8243001CD2E30202B2904900001CD6
    :200160000520B24049001E1C8243001CB2904200001C052032C203433F4000104F13100103
    :200180001F4C01001E4C03000E9302200F930924AD000100CD43FFFF1F830E73F9230F9357
    :2001A000F7231001CF0C0E930624AF000100FF4DFFFF1E83FA231001CF0CCC0DCD0FAD0068
    :1801C00005001E4F01008001A4011E438001D6001C4310010343FF3FE2
    :00000001FF

  • Hello Martin,

    Please provide the script you are using to program the device with the BSL Scripter. Be sure to add the command "Log" at the beginning of the script and provide the accompanying Log file as well.
  • BSLSCRIPT

    LOG
    MODE msp430frxx i2c 100000 COM14
    TX_BSL_VERSION
    MASS_ERASE
    RX_PASSWORD pass32_default.txt
    DELAY 2000
    RX_PASSWORD pass32_default.txt
    RX_DATA_BLOCK blinkLED_FR6989.txt
    CRC_CHECK 0x4400 0x0020
    SET_PC 0x4400

    Log

    ---------------------------------------------------------
    BSL Scripter 3.2.1
    PC software for BSL programming
    2017-Mar-30 09:14:14
    ---------------------------------------------------------
    Input file script is : C:/Program Files/BSL/MSPBSL_Scripter_win/MSPBSL.txt
    MODE msp430frxx i2c 100000 COM14
    TX_BSL_VERSION
    [ACK_ERROR_MESSAGE]Unknown ACK value!
    MASS_ERASE
    [ACK_ERROR_MESSAGE]Unknown ACK value!
    RX_PASSWORD pass32_default.txt
    Read Txt File : C:\Program Files\BSL\MSPBSL_Scripter_win\pass32_default.txt

    DELAY 2000
    Delay 2000 ms
    RX_PASSWORD pass32_default.txt
    Read Txt File : C:\Program Files\BSL\MSPBSL_Scripter_win\pass32_default.txt
    [ACK_ERROR_MESSAGE]Unknown ACK value!
    RX_DATA_BLOCK blinkLED_FR6989.txt
    Read Txt File : C:\Program Files\BSL\MSPBSL_Scripter_win\blinkLED_FR6989.txt
    [ACK_ERROR_MESSAGE]Unknown ACK value!
    Time elapsed of writing 32 bytes : 0.003 seconds
    Speed of writing data :10.42(kB/s)
    CRC_CHECK 0x4400 0x0020
    [ACK_ERROR_MESSAGE]Unknown ACK value!
    SET_PC 0x4400

  • Thanks Martin.

    I'm seeing an issue when I attempt to do this on my end as well. Let me confer with the BSLScripter developer and get back to you. Please be warned as this may take some time as my colleague is out on vacation until April 3rd.
  • Martin,

    I quick update here. I tried to use a different version of BSLScipter (3.1.0.0) and I was able to communicate to the MSP430FR5969 using the UART version. Can you try the older version of BSLScripter for the I2C interface? Link below:

    software-dl.ti.com/.../index_FDS.html
  • I don´t get the "Unknown ACK Error" message, everything seems ok. But program is not started with SET_PC. 

    Reading out the memory produces the result i expected --> 0xFF everywhere. Actually i think no command from the Scripter is transmitted. Even MassErase is not working

    MSPBSL_2017Mar30_091414.log
    ---------------------------------------------------------
    BSL Scripter 3.2.1
    PC software for BSL programming
    2017-Mar-30 09:14:14
    ---------------------------------------------------------
    Input file script is : C:/Program Files/BSL/MSPBSL_Scripter_win/MSPBSL.txt
    MODE msp430frxx i2c 100000 COM14
    TX_BSL_VERSION
    	[ACK_ERROR_MESSAGE]Unknown ACK value!
    MASS_ERASE
    	[ACK_ERROR_MESSAGE]Unknown ACK value!
    RX_PASSWORD pass32_default.txt
    	Read Txt File  : C:\Program Files\BSL\MSPBSL_Scripter_win\pass32_default.txt
    	
    DELAY 2000
    	Delay 2000 ms
    RX_PASSWORD pass32_default.txt
    	Read Txt File  : C:\Program Files\BSL\MSPBSL_Scripter_win\pass32_default.txt
    	[ACK_ERROR_MESSAGE]Unknown ACK value!
    RX_DATA_BLOCK blinkLED_FR6989.txt
    	Read Txt File  : C:\Program Files\BSL\MSPBSL_Scripter_win\blinkLED_FR6989.txt
    	[ACK_ERROR_MESSAGE]Unknown ACK value!
    	Time elapsed of writing 32 bytes : 0.003 seconds
    	Speed of writing data :10.42(kB/s)
    CRC_CHECK 0x4400 0x0020
    	[ACK_ERROR_MESSAGE]Unknown ACK value!
    SET_PC 0x4400
    

  • Martin,

    You can start an application from BSL by setting the PC to the start address of your program. However, most programs assume a cold boot and the BSL sets up some of the peripherals and clocks differently than a cold boot. This means you can see discrepancies between what happens after setting the PC and what your downloaded application looks like from a cold boot. This is explained further within the FAQ section of the BSL Scripter User Guide () To ensure everything is working properly, I recommend a restart of the device. This can be done by holding RST line low for ~2us, disconnecting of power for a short period, or you can set the PC address to an area of memory that will cause a POR, such as the Watchdog Password register or other parts of peripheral memory.

  • Hi Martin,

    I evaluated your script and did some modification into:
    LOG
    MODE msp430frxx i2c 100000 COM14
    RX_PASSWORD pass32_wrong.txt //this will execute MASS_ERASE
    DELAY 2000 // since the BSL does not give back response from RX_PASSWORD pass32_wrong.txt , we wait 2s afterwards
    RX_PASSWORD pass32_default.txt //unlock the BSL
    RX_DATA_BLOCK blinkLED_FR6989.txt
    TX_DATA_BLOCK 0x4400 0x00C0 Read_1.hex // you can add this to read back the memory, see if it's programmed
    TX_DATA_BLOCK 0xff80 0x0020 Read_2.hex
    TX_DATA_BLOCK 0xffcc 0x0036 Read_3.hex
    CRC_CHECK 0x4400 0x0020
    SET_PC 0x4400

    This should work.
    The important thing to communicate with BSL is that we follow the steps:
    1. setup the communication and device type by MODE
    2. unlock the BSL , but we can use by sending wrong password, so all parts of memory is erased
    3. MASS_ERASE in MSP430FR5969/6959 does not send back the response, and reset the device. So if you do so, again repeat the step 1 and 2
    4. when the BSL is unlocked, you can start program and reading back the device.

    I tested this with MSP430FR59921 which also has the I2C BSL. I tried the respective blink application for the device and reading back the memory, everything work as expected.

    Please let me know if this still does not work for you.
  • Hi Martin,

    I just notice you are using the MSP-TS430RGZ48C target socket board. This does not have the pull-up resistor for I2C_SDA and I2C_SCL. If you are using the MSP-BSL "Rocket" then you can place the pull up resistor on the Rocket. MSP-FET does not have it. so you have to add it. I think this might be also the problem why the I2C does not communicate.
  • Thanks both of you, 

    I tried your script and it is working now with BSL-versions 3.2.1 and 3.1.0. It seems for me that you have to send a wrong password and not a mass erase and a correct password afterwards, alright.

    The reason i openend this question was not because of problems with the Scripter tool. 

    I connected a microcontroller through I2C with the MSP430FR59691 and tried to use the implemented BSL for firmware updates. The communication worked but after some "RX Data Block" commands i got a response from the BSL which looked like that : 00 80 02 00 3B 01 41 D4. Which is, according to  SLAU550E, a failed write to the flash. 

    I solved it by my self. I swapped, because of unknown reasons, the low and the high byte of the adress. Thats why i got this error message just sometimes. 


  • Hi Martin,


    thanks for your confirmation and I am glad now everything is working for you!

    Yes, better to send always wrong password to do mass erase in the MSP430FR5969, that's my recommendation.

**Attention** This is a public forum