It seems like somewhere around the time I upgraded to CCS5, I stopped being able to just load a program in the normal way I used to (using just the CCS debug). Usually at around the 160 KB or 192 KB mark, though sometimes as soon as 32 KB, the flashing process fails with this message:
CORTEX_M3_0: Flash Programmer: Timed out while writing to Flash memory
I don't have CCS4 anymore, or I'd go back and see if that works. As for now, the only workaround I've found is to always do a full flash erase using LMFlashProgrammer first, then launch CCS debug so it can load the program.
LMFlashProgrammer usage:
- Interface: ICDI (Eval Board)
- Port: JTAG
- Speed: 1 MHz
- Clock Source: Using the Specified Single Ended Source Value 6 MHz
- Flash Utilities
- Entire Flash, no blank check. Click "Erase" button
CCS debug settings:
Program/Memory Load Options
- YES Disable all breakpoints when loading a different program
- YES Halt at program termination (requires setting a breakpoint)
- YES Enable CIO function use (requires setting a breakpoint)
- Verification Options: No verification
- Connection Options
- NO Halt the target on a connect
- NO Reset the target on a connect
- YES Remove remaining debug state at connect
- YES Auto connect if a child connects
- Disable interrupts when assembly stepping, when source stepping
- YES Reset the target on a program load or restart
- NO Restart the target on a symbol load as well as a program load
Auto Run and Launch Options
- YES Connect to the target on debugger startup
- YES Restore breakpoints from previous session
- NO Continue debug launch if target connection or program load fails
Misc/Other Options
- NO Automatically step over functions without debug information when source stepping
- NO Allow power transitions while running if supported
- YES Add timestamp information to target output
- YES Allow software breakpoints to be used
- Default directory for File IO: blank
- When added to a sync group: Synchronize breakpoints and symbols as well as execution
Cortex M3 Disassembly: Mixed ARM/Thumb
Stellaris Flash Settings
- Crystal Frequency: 8 MHz
- NO Reset target during program load to Flash memory (tried with YES, no difference)
- Program Load - Erase Method: Necessary Pages Only (tried with this set to Entire Flash, no difference)
Here is the verbose output from a load which failed at 192 KB (set to erase necessary pages only):
CORTEX_M3_0: GEL Output:
Memory Map Initialization Complete
CORTEX_M3_0: GEL Output: Watchdog Timer Enabled
CORTEX_M3_0: GEL Output: UARTs Enabled
CORTEX_M3_0: Writing Flash @ Address 0x0 of Length 30320
CORTEX_M3_0: Erasing Flash Page @ address 0x0
CORTEX_M3_0: Erasing Flash Page @ address 0x400
CORTEX_M3_0: Erasing Flash Page @ address 0x800
CORTEX_M3_0: Erasing Flash Page @ address 0xC00
CORTEX_M3_0: Erasing Flash Page @ address 0x1000
CORTEX_M3_0: Erasing Flash Page @ address 0x1400
CORTEX_M3_0: Erasing Flash Page @ address 0x1800
CORTEX_M3_0: Erasing Flash Page @ address 0x1C00
CORTEX_M3_0: Erasing Flash Page @ address 0x2000
CORTEX_M3_0: Erasing Flash Page @ address 0x2400
CORTEX_M3_0: Erasing Flash Page @ address 0x2800
CORTEX_M3_0: Erasing Flash Page @ address 0x2C00
CORTEX_M3_0: Erasing Flash Page @ address 0x3000
CORTEX_M3_0: Erasing Flash Page @ address 0x3400
CORTEX_M3_0: Erasing Flash Page @ address 0x3800
CORTEX_M3_0: Erasing Flash Page @ address 0x3C00
CORTEX_M3_0: Erasing Flash Page @ address 0x4000
CORTEX_M3_0: Erasing Flash Page @ address 0x4400
CORTEX_M3_0: Erasing Flash Page @ address 0x4800
CORTEX_M3_0: Erasing Flash Page @ address 0x4C00
CORTEX_M3_0: Erasing Flash Page @ address 0x5000
CORTEX_M3_0: Erasing Flash Page @ address 0x5400
CORTEX_M3_0: Erasing Flash Page @ address 0x5800
CORTEX_M3_0: Erasing Flash Page @ address 0x5C00
CORTEX_M3_0: Erasing Flash Page @ address 0x6000
CORTEX_M3_0: Erasing Flash Page @ address 0x6400
CORTEX_M3_0: Erasing Flash Page @ address 0x6800
CORTEX_M3_0: Erasing Flash Page @ address 0x6C00
CORTEX_M3_0: Erasing Flash Page @ address 0x7000
CORTEX_M3_0: Erasing Flash Page @ address 0x7400
CORTEX_M3_0: Finish Writing Flash @ Address 0x0 of Length 30320
CORTEX_M3_0: Writing Flash @ Address 0xC000 of Length 32752
CORTEX_M3_0: Erasing Flash Page @ address 0xC000
CORTEX_M3_0: Erasing Flash Page @ address 0xC400
CORTEX_M3_0: Erasing Flash Page @ address 0xC800
CORTEX_M3_0: Erasing Flash Page @ address 0xCC00
CORTEX_M3_0: Erasing Flash Page @ address 0xD000
CORTEX_M3_0: Erasing Flash Page @ address 0xD400
CORTEX_M3_0: Erasing Flash Page @ address 0xD800
CORTEX_M3_0: Erasing Flash Page @ address 0xDC00
CORTEX_M3_0: Erasing Flash Page @ address 0xE000
CORTEX_M3_0: Erasing Flash Page @ address 0xE400
CORTEX_M3_0: Erasing Flash Page @ address 0xE800
CORTEX_M3_0: Erasing Flash Page @ address 0xEC00
CORTEX_M3_0: Erasing Flash Page @ address 0xF000
CORTEX_M3_0: Erasing Flash Page @ address 0xF400
CORTEX_M3_0: Erasing Flash Page @ address 0xF800
CORTEX_M3_0: Erasing Flash Page @ address 0xFC00
CORTEX_M3_0: Erasing Flash Page @ address 0x10000
CORTEX_M3_0: Erasing Flash Page @ address 0x10400
CORTEX_M3_0: Erasing Flash Page @ address 0x10800
CORTEX_M3_0: Erasing Flash Page @ address 0x10C00
CORTEX_M3_0: Erasing Flash Page @ address 0x11000
CORTEX_M3_0: Erasing Flash Page @ address 0x11400
CORTEX_M3_0: Erasing Flash Page @ address 0x11800
CORTEX_M3_0: Erasing Flash Page @ address 0x11C00
CORTEX_M3_0: Erasing Flash Page @ address 0x12000
CORTEX_M3_0: Erasing Flash Page @ address 0x12400
CORTEX_M3_0: Erasing Flash Page @ address 0x12800
CORTEX_M3_0: Erasing Flash Page @ address 0x12C00
CORTEX_M3_0: Erasing Flash Page @ address 0x13000
CORTEX_M3_0: Erasing Flash Page @ address 0x13400
CORTEX_M3_0: Erasing Flash Page @ address 0x13800
CORTEX_M3_0: Erasing Flash Page @ address 0x13C00
CORTEX_M3_0: Finish Writing Flash @ Address 0xC000 of Length 32752
CORTEX_M3_0: Writing Flash @ Address 0x13FF0 of Length 32752
CORTEX_M3_0: Erasing Flash Page @ address 0x14000
CORTEX_M3_0: Erasing Flash Page @ address 0x14400
CORTEX_M3_0: Erasing Flash Page @ address 0x14800
CORTEX_M3_0: Erasing Flash Page @ address 0x14C00
CORTEX_M3_0: Erasing Flash Page @ address 0x15000
CORTEX_M3_0: Erasing Flash Page @ address 0x15400
CORTEX_M3_0: Erasing Flash Page @ address 0x15800
CORTEX_M3_0: Erasing Flash Page @ address 0x15C00
CORTEX_M3_0: Erasing Flash Page @ address 0x16000
CORTEX_M3_0: Erasing Flash Page @ address 0x16400
CORTEX_M3_0: Erasing Flash Page @ address 0x16800
CORTEX_M3_0: Erasing Flash Page @ address 0x16C00
CORTEX_M3_0: Erasing Flash Page @ address 0x17000
CORTEX_M3_0: Erasing Flash Page @ address 0x17400
CORTEX_M3_0: Erasing Flash Page @ address 0x17800
CORTEX_M3_0: Erasing Flash Page @ address 0x17C00
CORTEX_M3_0: Erasing Flash Page @ address 0x18000
CORTEX_M3_0: Erasing Flash Page @ address 0x18400
CORTEX_M3_0: Erasing Flash Page @ address 0x18800
CORTEX_M3_0: Erasing Flash Page @ address 0x18C00
CORTEX_M3_0: Erasing Flash Page @ address 0x19000
CORTEX_M3_0: Erasing Flash Page @ address 0x19400
CORTEX_M3_0: Erasing Flash Page @ address 0x19800
CORTEX_M3_0: Erasing Flash Page @ address 0x19C00
CORTEX_M3_0: Erasing Flash Page @ address 0x1A000
CORTEX_M3_0: Erasing Flash Page @ address 0x1A400
CORTEX_M3_0: Erasing Flash Page @ address 0x1A800
CORTEX_M3_0: Erasing Flash Page @ address 0x1AC00
CORTEX_M3_0: Erasing Flash Page @ address 0x1B000
CORTEX_M3_0: Erasing Flash Page @ address 0x1B400
CORTEX_M3_0: Erasing Flash Page @ address 0x1B800
CORTEX_M3_0: Erasing Flash Page @ address 0x1BC00
CORTEX_M3_0: Finish Writing Flash @ Address 0x13FF0 of Length 32752
CORTEX_M3_0: Writing Flash @ Address 0x1BFE0 of Length 32752
CORTEX_M3_0: Erasing Flash Page @ address 0x1C000
CORTEX_M3_0: Erasing Flash Page @ address 0x1C400
CORTEX_M3_0: Erasing Flash Page @ address 0x1C800
CORTEX_M3_0: Erasing Flash Page @ address 0x1CC00
CORTEX_M3_0: Erasing Flash Page @ address 0x1D000
CORTEX_M3_0: Erasing Flash Page @ address 0x1D400
CORTEX_M3_0: Erasing Flash Page @ address 0x1D800
CORTEX_M3_0: Erasing Flash Page @ address 0x1DC00
CORTEX_M3_0: Erasing Flash Page @ address 0x1E000
CORTEX_M3_0: Erasing Flash Page @ address 0x1E400
CORTEX_M3_0: Erasing Flash Page @ address 0x1E800
CORTEX_M3_0: Erasing Flash Page @ address 0x1EC00
CORTEX_M3_0: Erasing Flash Page @ address 0x1F000
CORTEX_M3_0: Erasing Flash Page @ address 0x1F400
CORTEX_M3_0: Erasing Flash Page @ address 0x1F800
CORTEX_M3_0: Erasing Flash Page @ address 0x1FC00
CORTEX_M3_0: Erasing Flash Page @ address 0x20000
CORTEX_M3_0: Erasing Flash Page @ address 0x20400
CORTEX_M3_0: Erasing Flash Page @ address 0x20800
CORTEX_M3_0: Erasing Flash Page @ address 0x20C00
CORTEX_M3_0: Erasing Flash Page @ address 0x21000
CORTEX_M3_0: Erasing Flash Page @ address 0x21400
CORTEX_M3_0: Erasing Flash Page @ address 0x21800
CORTEX_M3_0: Erasing Flash Page @ address 0x21C00
CORTEX_M3_0: Erasing Flash Page @ address 0x22000
CORTEX_M3_0: Erasing Flash Page @ address 0x22400
CORTEX_M3_0: Erasing Flash Page @ address 0x22800
CORTEX_M3_0: Erasing Flash Page @ address 0x22C00
CORTEX_M3_0: Erasing Flash Page @ address 0x23000
CORTEX_M3_0: Erasing Flash Page @ address 0x23400
CORTEX_M3_0: Erasing Flash Page @ address 0x23800
CORTEX_M3_0: Erasing Flash Page @ address 0x23C00
CORTEX_M3_0: Finish Writing Flash @ Address 0x1BFE0 of Length 32752
CORTEX_M3_0: Writing Flash @ Address 0x23FD0 of Length 32752
CORTEX_M3_0: Erasing Flash Page @ address 0x24000
CORTEX_M3_0: Erasing Flash Page @ address 0x24400
CORTEX_M3_0: Erasing Flash Page @ address 0x24800
CORTEX_M3_0: Erasing Flash Page @ address 0x24C00
CORTEX_M3_0: Erasing Flash Page @ address 0x25000
CORTEX_M3_0: Erasing Flash Page @ address 0x25400
CORTEX_M3_0: Erasing Flash Page @ address 0x25800
CORTEX_M3_0: Erasing Flash Page @ address 0x25C00
CORTEX_M3_0: Erasing Flash Page @ address 0x26000
CORTEX_M3_0: Erasing Flash Page @ address 0x26400
CORTEX_M3_0: Erasing Flash Page @ address 0x26800
CORTEX_M3_0: Erasing Flash Page @ address 0x26C00
CORTEX_M3_0: Erasing Flash Page @ address 0x27000
CORTEX_M3_0: Erasing Flash Page @ address 0x27400
CORTEX_M3_0: Erasing Flash Page @ address 0x27800
CORTEX_M3_0: Erasing Flash Page @ address 0x27C00
CORTEX_M3_0: Erasing Flash Page @ address 0x28000
CORTEX_M3_0: Erasing Flash Page @ address 0x28400
CORTEX_M3_0: Erasing Flash Page @ address 0x28800
CORTEX_M3_0: Erasing Flash Page @ address 0x28C00
CORTEX_M3_0: Erasing Flash Page @ address 0x29000
CORTEX_M3_0: Erasing Flash Page @ address 0x29400
CORTEX_M3_0: Erasing Flash Page @ address 0x29800
CORTEX_M3_0: Erasing Flash Page @ address 0x29C00
CORTEX_M3_0: Erasing Flash Page @ address 0x2A000
CORTEX_M3_0: Erasing Flash Page @ address 0x2A400
CORTEX_M3_0: Erasing Flash Page @ address 0x2A800
CORTEX_M3_0: Erasing Flash Page @ address 0x2AC00
CORTEX_M3_0: Erasing Flash Page @ address 0x2B000
CORTEX_M3_0: Erasing Flash Page @ address 0x2B400
CORTEX_M3_0: Erasing Flash Page @ address 0x2B800
CORTEX_M3_0: Erasing Flash Page @ address 0x2BC00
CORTEX_M3_0: Finish Writing Flash @ Address 0x23FD0 of Length 32752
CORTEX_M3_0: Writing Flash @ Address 0x2BFC0 of Length 32752
CORTEX_M3_0: Erasing Flash Page @ address 0x2C000
CORTEX_M3_0: Erasing Flash Page @ address 0x2C400
CORTEX_M3_0: Erasing Flash Page @ address 0x2C800
CORTEX_M3_0: Erasing Flash Page @ address 0x2CC00
CORTEX_M3_0: Erasing Flash Page @ address 0x2D000
CORTEX_M3_0: Erasing Flash Page @ address 0x2D400
CORTEX_M3_0: Erasing Flash Page @ address 0x2D800
CORTEX_M3_0: Erasing Flash Page @ address 0x2DC00
CORTEX_M3_0: Erasing Flash Page @ address 0x2E000
CORTEX_M3_0: Erasing Flash Page @ address 0x2E400
CORTEX_M3_0: Erasing Flash Page @ address 0x2E800
CORTEX_M3_0: Erasing Flash Page @ address 0x2EC00
CORTEX_M3_0: Erasing Flash Page @ address 0x2F000
CORTEX_M3_0: Erasing Flash Page @ address 0x2F400
CORTEX_M3_0: Erasing Flash Page @ address 0x2F800
CORTEX_M3_0: Erasing Flash Page @ address 0x2FC00
CORTEX_M3_0: Erasing Flash Page @ address 0x30000
CORTEX_M3_0: Erasing Flash Page @ address 0x30400
CORTEX_M3_0: Erasing Flash Page @ address 0x30800
CORTEX_M3_0: Erasing Flash Page @ address 0x30C00
CORTEX_M3_0: Erasing Flash Page @ address 0x31000
CORTEX_M3_0: Erasing Flash Page @ address 0x31400
CORTEX_M3_0: Erasing Flash Page @ address 0x31800
CORTEX_M3_0: Erasing Flash Page @ address 0x31C00
CORTEX_M3_0: Erasing Flash Page @ address 0x32000
CORTEX_M3_0: Erasing Flash Page @ address 0x32400
CORTEX_M3_0: Erasing Flash Page @ address 0x32800
CORTEX_M3_0: Erasing Flash Page @ address 0x32C00
CORTEX_M3_0: Erasing Flash Page @ address 0x33000
CORTEX_M3_0: Erasing Flash Page @ address 0x33400
CORTEX_M3_0: Erasing Flash Page @ address 0x33800
CORTEX_M3_0: Erasing Flash Page @ address 0x33C00
CORTEX_M3_0: Finish Writing Flash @ Address 0x2BFC0 of Length 32752
CORTEX_M3_0: Writing Flash @ Address 0x33FB0 of Length 32752
CORTEX_M3_0: Erasing Flash Page @ address 0x34000
CORTEX_M3_0: Erasing Flash Page @ address 0x34400
CORTEX_M3_0: Erasing Flash Page @ address 0x34800
CORTEX_M3_0: Erasing Flash Page @ address 0x34C00
CORTEX_M3_0: Erasing Flash Page @ address 0x35000
CORTEX_M3_0: Erasing Flash Page @ address 0x35400
CORTEX_M3_0: Erasing Flash Page @ address 0x35800
CORTEX_M3_0: Erasing Flash Page @ address 0x35C00
CORTEX_M3_0: Erasing Flash Page @ address 0x36000
CORTEX_M3_0: Erasing Flash Page @ address 0x36400
CORTEX_M3_0: Erasing Flash Page @ address 0x36800
CORTEX_M3_0: Erasing Flash Page @ address 0x36C00
CORTEX_M3_0: Erasing Flash Page @ address 0x37000
CORTEX_M3_0: Erasing Flash Page @ address 0x37400
CORTEX_M3_0: Erasing Flash Page @ address 0x37800
CORTEX_M3_0: Erasing Flash Page @ address 0x37C00
CORTEX_M3_0: Erasing Flash Page @ address 0x38000
CORTEX_M3_0: Erasing Flash Page @ address 0x38400
CORTEX_M3_0: Erasing Flash Page @ address 0x38800
CORTEX_M3_0: Erasing Flash Page @ address 0x38C00
CORTEX_M3_0: Erasing Flash Page @ address 0x39000
CORTEX_M3_0: Erasing Flash Page @ address 0x39400
CORTEX_M3_0: Erasing Flash Page @ address 0x39800
CORTEX_M3_0: Erasing Flash Page @ address 0x39C00
CORTEX_M3_0: Erasing Flash Page @ address 0x3A000
CORTEX_M3_0: Erasing Flash Page @ address 0x3A400
CORTEX_M3_0: Erasing Flash Page @ address 0x3A800
CORTEX_M3_0: Erasing Flash Page @ address 0x3AC00
CORTEX_M3_0: Erasing Flash Page @ address 0x3B000
CORTEX_M3_0: Erasing Flash Page @ address 0x3B400
CORTEX_M3_0: Erasing Flash Page @ address 0x3B800
CORTEX_M3_0: Erasing Flash Page @ address 0x3BC00
CORTEX_M3_0: Finish Writing Flash @ Address 0x33FB0 of Length 32752
CORTEX_M3_0: Writing Flash @ Address 0x3BFA0 of Length 32752
CORTEX_M3_0: Erasing Flash Page @ address 0x3C000
CORTEX_M3_0: Erasing Flash Page @ address 0x3C400
CORTEX_M3_0: Erasing Flash Page @ address 0x3C800
CORTEX_M3_0: Erasing Flash Page @ address 0x3CC00
CORTEX_M3_0: Erasing Flash Page @ address 0x3D000
CORTEX_M3_0: Erasing Flash Page @ address 0x3D400
CORTEX_M3_0: Erasing Flash Page @ address 0x3D800
CORTEX_M3_0: Erasing Flash Page @ address 0x3DC00
CORTEX_M3_0: Erasing Flash Page @ address 0x3E000
CORTEX_M3_0: Erasing Flash Page @ address 0x3E400
CORTEX_M3_0: Erasing Flash Page @ address 0x3E800
CORTEX_M3_0: Erasing Flash Page @ address 0x3EC00
CORTEX_M3_0: Erasing Flash Page @ address 0x3F000
CORTEX_M3_0: Erasing Flash Page @ address 0x3F400
CORTEX_M3_0: Erasing Flash Page @ address 0x3F800
CORTEX_M3_0: Erasing Flash Page @ address 0x3FC00
CORTEX_M3_0: Erasing Flash Page @ address 0x40000
CORTEX_M3_0: Erasing Flash Page @ address 0x40400
CORTEX_M3_0: Erasing Flash Page @ address 0x40800
CORTEX_M3_0: Erasing Flash Page @ address 0x40C00
CORTEX_M3_0: Erasing Flash Page @ address 0x41000
CORTEX_M3_0: Erasing Flash Page @ address 0x41400
CORTEX_M3_0: Erasing Flash Page @ address 0x41800
CORTEX_M3_0: Erasing Flash Page @ address 0x41C00
CORTEX_M3_0: Erasing Flash Page @ address 0x42000
CORTEX_M3_0: Erasing Flash Page @ address 0x42400
CORTEX_M3_0: Erasing Flash Page @ address 0x42800
CORTEX_M3_0: Erasing Flash Page @ address 0x42C00
CORTEX_M3_0: Erasing Flash Page @ address 0x43000
CORTEX_M3_0: Erasing Flash Page @ address 0x43400
CORTEX_M3_0: Erasing Flash Page @ address 0x43800
CORTEX_M3_0: Erasing Flash Page @ address 0x43C00
At this point, the processor resets (causing power draw to go up as the system starts booting the partially loaded code), then there is a short pause before CCS gives up and reports the timeout.
CORTEX_M3_0: Flash Programmer: Timed out while writing to Flash memory
CORTEX_M3_0: Error Writing Flash @ Address 0x3BFA0 of Length 32752
CORTEX_M3_0: GEL: File: C:\Mod3\source\proj\[project name edited out]\Main\Main\ccs_proj\Release\Main.out: Load failed.
For the sake of posterity, here is another one which failed pretty much right off the bat (CCS debugger set to erase entire flash)
CORTEX_M3_0: GEL Output:
Memory Map Initialization Complete
CORTEX_M3_0: GEL Output: Watchdog Timer Enabled
CORTEX_M3_0: GEL Output: UARTs Enabled
CORTEX_M3_0: Writing Flash @ Address 0x0 of Length 30320
CORTEX_M3_0: Performing Mass Erase on Flash memory
CORTEX_M3_0: Finish Writing Flash @ Address 0x0 of Length 30320
CORTEX_M3_0: Writing Flash @ Address 0xC000 of Length 32752
CORTEX_M3_0: Finish Writing Flash @ Address 0xC000 of Length 32752
CORTEX_M3_0: Writing Flash @ Address 0x13FF0 of Length 32752
CORTEX_M3_0: Flash Programmer: Timed out while writing to Flash memory
CORTEX_M3_0: Error Writing Flash @ Address 0x13FF0 of Length 32752
CORTEX_M3_0: GEL: File: C:\Mod3\source\proj\[edited]\Main\Main\ccs_proj\Debug\Main.out: Load failed.
Any ideas?
Thanks