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/MSP432P4111: Customer BSL or main memory bootloader for MSP432P4111

Part Number: MSP432P4111

Tool/software: Code Composer Studio

Hi,

I am working on the MSP-EXP432P4111 LaunchPad with CCS8.3.

I want to do a bootloader with some new features. For example (1) getting into the booloader if "Enter" key is pressed when system power up; (2) the bootloader can write the firmware into flash memory on chip, the new firmware is a file from the file system in an external spi flash chip.

(1) I download the BSL package "MSP432BSL_1_01_00_00" and try to build/debug/program this BSL firmware into my launchpad. I did not modify the source code.

I follow the instruction steps in Part5 of the user guide(SLAU622G).

Import project, Build Debug_BSL_P4111 and Release_BSL_P4111 configuration, New Target configration for MSP432P4111 and Launch this new configuration, Debug...

But at this time I find a problem as following. How can I fix it?

(2) I have some other questions about the BSL.

the BSL f/w will be programmed into the information memory. I would add more codes into the customer BSL and its size will be bigger than the default one. what is its maximum size?

8KB(Bank 0 Sector 2 and Sector 3) or

24KB(Bank 0 Sector 2 and Sector 3, 4 sectors from Bank 1). which one is correct?

(3) I tried to use the override mailbox to enable the hardware BSL invocation. I add file "msp432-flashmailbox.c" into the original BSL project which will make a new BSL configure. Finally it works because the correct answer "0xACE" is found in the mailbox and the BSL configure command is removed.

I am curious that where did the BSL configure command change? Where I can find this modification about the hardware BSL invocation?

(4) Is it permitted to the change BSL configuration in TLV? Maybe I want to use another UART pins for my bootloader.

(5) The BSL firmware size in the information memory is limited, maybe it is feasible to make a main memory bootloader for MSP432. it is correct?

I found the main memory bootloader for MSP430, but not for MSP432.

From Page 122 of MSP432P4111 datasheet.

6.4.1.1 Flash Main Memory (0x0000_0000 to 0x001F_FFFF)
The flash main memory on MSP432P4x1x devices can be up to 2MB. Flash main memory consists of up
to 512 sectors of 4KB each, with a minimum erase granularity of 4KB (1 sector). The main memory can be
viewed as two independent identical banks of up to 1MB each, allowing simultaneous read or execute
from one bank while the other bank is undergoing a program or erase operation.

As showed in the datasheet, the main memory bootloader and the application must in different bank(the first 1MB bank and another 1MB bank)?

there are 512 sectors of 4KB each. Is it possible that the bootloader uses the first 64 sectors, the application uses the following 192 sectors and both of them share the Bank0?

Thank you very much. 

  • Hi,
    thanks for the detailed questions and providing many insights of the things you already try.
    As your questions are quite complex i try get get through your questions one by one:
    1. the BSL is invoked by a special entry sequence there for it does not have the Reset vector programmed. This means after downloading the device does not have a reset vector available in the table and do not know where to start. What you can do for debugging:
    - check for the start address (can be found in the map file) and set the program counter to that
    - add manually a Reset vector into your code with the start address of the BSL.
    2. the maximum size fully depends on how you partintion the memory. Using the Info memory makes it easier as this is already a seperated area but you can also define your own area and mapping with the linker command file.
    3 i need to check on the details with an colleague on that
    4. TLV information can not be changed but if you do your own BSL you can of course change the pins and/or interfaces. The TLV just has informative information which in this case would get a do not care status
    5. see item 2 - you just need to ensure that during the programming time no communication is ongoing as the interrupts can not be handled. Programming is running in an exclusive mode when using the TI provided library funtions.

    Regards,
    Stefan
  • Hi,

    some more information on item 3:
    this is handled in the boot process of the device and you do not have access to that part, so it is not possible to change this a new function.

    Regards,
    Stefan
  • Hi,
    I am setting this thread to resolved as there have been no additional questions. If there are still something open or pending, just put it in here and it will open again or start a new thread.

    Regards,
    Stefan

**Attention** This is a public forum