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.

CCS/MSPBSL: CryptoBSL for CCS

Part Number: MSPBSL
Other Parts Discussed in Thread: MSP430FR5043

Tool/software: Code Composer Studio

Hi,

Is there any example for Crypto-Bootloader (CryptoBSL) for Code Composer Studio(Mac)? I am using MSP430FR5043 which I want to update using a simplelink chip through UART.

The only example I found was using IAR on Windows, see link below:

Thanks in advance

  • Hi Thibault,

    Although the CryptoBSL User's Guide (SLAU657) is for MSP430FR59xx/69xx MCUs, it should be portable to MSP430FR5043 because that MCU supports UART, Memory Protection unit (MPU), IP Encapsulation (IPE), and an AES236 Advanced Encryption Standard module. 

    We only have the Crypto-Bootloader software package http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/Crypto_Bootloader/latest/index_FDS.html for MSP430FR59xx/69xx, and there are no migration packages to MSP430FR5043. The code should be very modular, so the main parts would be to adjust GPIOs and UART. The most complicated part would be to adapt the linker file for MSP430FR5043, but I believe Section 7.2.1 of the User's Guides states where you can find the IAR linker files and more information on the IAR Linker Reference Guide.  

  • Aaron Barrera said:

    Hi Thibault,

    Although the CryptoBSL User's Guide (SLAU657) is for MSP430FR59xx/69xx MCUs, it should be portable to MSP430FR5043 because that MCU supports UART, Memory Protection unit (MPU), IP Encapsulation (IPE), and an AES236 Advanced Encryption Standard module. 

    We only have the Crypto-Bootloader software package http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/Crypto_Bootloader/latest/index_FDS.html for MSP430FR59xx/69xx, and there are no migration packages to MSP430FR5043. The code should be very modular, so the main parts would be to adjust GPIOs and UART. The most complicated part would be to adapt the linker file for MSP430FR5043, but I believe Section 7.2.1 of the User's Guides states where you can find the IAR linker files and more information on the IAR Linker Reference Guide.  

    Hi  

    Thanks for you answer. Yes I have started the porting and I now have some ports of  linker left to port. 

    The MPU segments are defined in quite a strange way in the IAR linker file:

    // ---------------------------
    // Memory Protection Unit (MPU) border
    //
    -D_MPU_SEG_B1=(BSL_Limit_L/10)
    -D_MPU_SEG_B2=(10000/10)

    Why are the addresses divided by 10?

    Thanks in advance

  • Hi Thibult,

    I am asking some experts on the team about this and will get you a response Monday.

  • Hi Thibault,

    Thanks for your patience. If you look at section 9.2.3 in the User's Guide, you'll see that in order to define the Segment Border Addresses, you need to convert shift the MPUSEGBx << 4. This is the same as dividing by 16. The Linker file values are defined in Hex rather than decimal (10h = 16). 

  • Hi

    Thanks for the answer.

    I have kind of managed to get the bootloader to work with the help of section 7 of Code Composer Studio for MSP430 User Guide (SLAU157AS). 

    Trying to enable the MPU will cause the program to crash while trying to write to MPUSAM in low_level_init(). Do you have any idea where we should start troubleshooting this?

    Is there any differences between FR5969 and FR5043 regarding the MPU we have missed? They seem to have the same User Guide though (SLAU367P).

    The segment borders are defined as

    MPUSEGB1 = 0xF000 >> 4;

    MPUSEGB2 = 0x10000 >> 4;

    Thanks in advance!

  • HI Thibault,

    Unfortunately I do not have any direct solutions to the issue. You may try the following things to troubleshoot:

    - Password is not being set

    - MPUSAM is being set incorrectly, perhaps disabling execution rights or read/write to a section that is required

    - If the program crashes, maybe you can enable the NMI interrupt and check which flags are getting set