Szenario:
We have an imx6 running Linux and a TIVA TM4c123gh6zrb on the same custom board - connected via SPI (spi0).
We want to bring up the system after being manufactured with as few preprogrammed components as possible and with no "external Connections" (like jtag, programmers etc). This is why we investigate the various possibilities to "self-Flash"/update the TIVAs.
what we've archieved:
- adapted the boot_serial code to use SPI instead of UART
- created a Linux tool to talk to boot_serial via SPI. employing a bootloader requires us to "Offset" our app-code to go after the bootloader. this is working as expected
- created a custom TIVA app (based at flash-start/0) that can be switched to "upload mode" via SPI, the TIVA-app then calls ROM_UpdateSSI(), on the Linux end our tool then sends boot commands, also working as expected
"working as expected" means: we can ping, get Status, upload a new application and reset. the new application then starts as expected.
And now the issue:
if we erase the entire Flash via LMflash and start our Linux tool, we can talk to the TIVA as before (ping, Status, upload, reset ...)
EXCEPT the uploaded application isn't programmed into Flash - so after we do a reset, the TIVA still finds it's Flash empty and again enters boot-mode.
What is wrong with our thinking?