I think the issue is that Checksum Bypass at memory location 0x40A is not getting programmed with value 0x00. Therefore the device enters bootloader mode.. Everytime device is powered on (with and without programmer connected), it will not run a program. It will only run a program through a debug session.
The S19 file shows the applicable memory locations being given the desired values, but when examining the device memory, they don't get written into the memory.
S3060000040A00EB Indicates that 0x40A will be set to 0x00, but device memory remains set to 0xff.
Lines in source code:
const byte CHKSBYP1_INIT @0x0000040a = 0x00;
const byte NV1PROT_INIT @0x0000040d = 0xf7;
const byte NV1OPT_INIT @0x0000040f = 0x43;
const byte CHKSBYP2_INIT @0x0002040a = 0x00;
const byte NV2PROT_INIT @0x0002040d = 0xf7;
const byte NV2OPT_INIT @0x0002040f = 0x43;
Using CodeWarrior v11.1 and PE Micro Cyclone Pro
This message on mcf51je not able to change flash non volatile registers appears to be very similar to my problem. However, there should be a better and more reliable remedy.