Part Number: MSPM0L1306
I'm working with the LP-MSPM0L1306 right now and I'm trying to figure out how to load multiple *.out files to the microcontroller using CCS v20.5.1. The goal is to be able to load/program both the bootloader and the application images, as well as load all the symbols for both, to make debugging easier. For reference, this is a single-core micro.
Reading through the scripting documentation (C:\ti\ccs2051\ccs\scripting\docs), it looks like I should be using the multiLoadStart/multiLoadEnd construct to wrap the 2 loadProgram calls so that the microcontroller's flash memory is erased only once:
However, I'm getting the following output:

Here is my launch configuration in launch.json:
{
"name": "LoadAll2",
"type": "ccs-debug",
"request": "launch",
"targetConfig": "C:/ti_ccs/Project1/targetConfigs/MSPM0L1306.ccxml",
"initializationScript": "C:/ti_ccs/LoadAll2.js",
"loadSymbolsOnly": true
},
Here is my initialization script (LoadAll2.js):
const ds = initScripting();
const session = ds.openSession(/cortex/i);
if (session.target.isConnected() === false) {
session.target.connect();
}
console.log("Loading...");
session.flash.multiLoadStart();
session.memory.loadProgram("C:/ti_ccs/Project1/Debug/Project1.out");
session.memory.loadProgram("C:/ti_ccs/Project2/Debug/Project2.out");
session.flash.multiLoadEnd();
session.symbols.load("C:/ti_ccs/Project1/Debug/Project1.out");
session.symbols.add("C:/ti_ccs/Project2/Debug/Project2.out");
const bp1 = session.breakpoints.add("C:/ti_ccs/Project1/main.c", 61);
console.log("Resetting...");
session.target.reset("System Reset");
session.target.run();
I get the same output if I try loading Intel hex files like this:
session.flash.multiLoadStart();
session.memory.loadProgram("C:/ti_ccs/Project1/Debug/Project1.hex");
session.memory.loadProgram("C:/ti_ccs/Project2/Debug/Project2.hex");
session.flash.multiLoadEnd();
If I pre-load the 2 image files into flash memory another way and comment out the 4 lines in the script related to programming, then the remaining lines that load the symbols, set the breakpoint, reset the target, and run the target work just fine. I can also load/program a single image file into the micro's flash memory using the script if I do not include the multiLoadStart/multiLoadEnd wrapper, like this:
const ds = initScripting();
const session = ds.openSession(/cortex/i);
if (session.target.isConnected() === false) {
session.target.connect();
}
console.log("Loading...");
//session.flash.multiLoadStart();
session.memory.loadProgram("C:/ti_ccs/Project1/Debug/Project1.out");
//session.memory.loadProgram("C:/ti_ccs/Project2/Debug/Project2.out");
//session.flash.multiLoadEnd();
session.symbols.load("C:/ti_ccs/Project1/Debug/Project1.out");
session.symbols.add("C:/ti_ccs/Project2/Debug/Project2.out");
const bp1 = session.breakpoints.add("C:/ti_ccs/Project1/main.c", 61);
console.log("Resetting...");
session.target.reset("System Reset");
session.target.run();
I have verified that both *.out files do not overlap each other by reviewing the map files:


I'm assuming I'm missing some configuration step that is required for the multiLoadStart/multiLoadEnd construct, but I'm not sure. Does anybody have any insight into why the multiLoadStart/multiLoadEnd construct isn't working, or have an example that does work?
Thanks!