I have an application running on a 5566 processor that will reset the processor into the flexcan bootload mode if it receives a specific CAN message. The application clears the RCHW and performs a soft reset.
At this point, I can use the BAM process to send a bootloader over CAN, then the 5566 will then start running that program which periodically sends out CAN messages.
If I power off the 5566 while loading the bootloader image, then power back on, the 5566 is still using BAM and accepting images. I can go through the entire protocol of loading the same bootloader over CAN, but at the end, I never see any CAN messages from my bootloader.
Why would the BAM process work when an application put it into BAM using a soft reset, but it does not work when I perform a hard power cycle?
Problem appears to be that my bootloader application is using SRAM outside of what is specified in the image.
In the soft reset, this is probably okay because the SRAM is still initialized from the flash image that was running. But after a hard power cycle, nothing was initializing the SRAM.
I couldn't figure out how to get Codewarrior to initialize all of SRAM, so I ended up padding my image to 128,000 bytes before sending to BAM. Once I did that, the bootloader runs and sends out CAN messages even when loaded after a power cycle.