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.

LP-MSPM0G3507: BSL invoking

Part Number: LP-MSPM0G3507


Tool/software:

I am trying to invoke the BSL from my ESP32 to flash custom image to my MSPM0. Couple Questions and errors I am running into. I have looked at the BSLGuide and BSL Implimentation PDFs. I am currently trying to invoke the BSL but its not working. Here is my code for trying to invoke the BSL. 

D12 connects to PA18. Before this the line is driven Low
D11 is connected to NRST. Before this function the line is driven High.
void enterBSL() {
  // Step 0: Assert BSL_invoke (PA18) high first
  digitalWrite(D12, HIGH);   // PA18 = BSL_invoke, active high
  delayMicroseconds(500);     // hold it for ≥500us per TI guidance

  // Step 1: Pulse NRST low to trigger BOOTRST
  digitalWrite(D11, LOW);     // NRST low (reset)
  delay(2);                   // hold reset low; 100us is more than enough (2ms here is safe)

  // Step 2: Release NRST
  digitalWrite(D11, HIGH);    // NRST high — device boots, sees BSL_invoke high

  // Step 3: Keep BSL_invoke high briefly while bootloader starts
  delay(500); // give some time for bootcode to sample and enter BSL
  // Optional: you can pull PA18 low afterward if your application reuses it
From here I am connecting TX to PA11 and RX to PA10. Before I get to the Sending Connection to BSL I read the UART line and it is saying 0xC0. then after nothing else. 
after the invoke+ reading UART Line, I am then sending the connection. 
 // this snippet of my code is where I am writing the packet info over UART. 
  Serial2.write(0x80); // header

  Serial2.write(0x01); // Length
  Serial2.write(0x00);

  Serial2.write(0x19); // command (all my data)
  uint8_t data = 0x19;
  uint32_t crc32Code = crc32_iso(&data, 1);

Serial2.write((uint8_t)(crc32Code & 0xFF));         // LSB
Serial2.write((uint8_t)((crc32Code >> 8) & 0xFF));
Serial2.write((uint8_t)((crc32Code >> 16) & 0xFF));
Serial2.write((uint8_t)((crc32Code >> 24) & 0xFF)); // MSB
 After this, I am waiting for any response back from the BSL but nothing comes. 
Could you help me identify the issue? I  have spent multiple hours but couldn't figure out the solution yet. 
Also for reference, I have the software invoke flashed onto my MSPM0, but I am still just trying to do the regular MSPM0 hardware invoke such that it works for any image being on the MSPM0. 
 
Thankyou so much, 
Best Regards, 
Prathik Narsetty
  • Hi Prathik,

    Just one kind reminder, BSL invoke needs to ensure that PA18 remains high after power on, but when you perform boot reset, the IO port returns to high impedance by default as shown below in the TRM, so I don't think it enter the BSL properly.

    Best Regards,
    Peter