Sorry but I have to withdraw / rephrase what I said.
In further research, it's confirmed that TAG4 normally needs external memory to store and load program to RAM.
If no external memory is attached, then TAG4 will go into and stalls in Download Mode. In this case, if you still want to load program (without external memory), you can manually interact with TAG4 via HCI UART port, using WICED HCI commands to get your program transmitted through HCI UART port and loaded to RAM.
Just like what MiniDriver will do, and please refer to "Downloading the Application to RAM" in the following documentation:
But this case needs a lot of work of modification, and the demo uart_firmware_upgrade wasn't designed to work like that so I withdraw what I said and you have to figure it out yourself.
To be more specific, If you didn't want to use external memory, you didn't need to mind UPGRADE / FW_UPDATE / OTA features at all because no programs are stored in the chip. Just reboot the board and make sure you send the newest program to RAM via HCI UART every time you reboot it, and then you will get the newest program running.
Sincere regards from C. L.
OK, our actual board is, indeed, a 20736S. The TAG4 I was using to develop code because it's all too easy to brick the 20736S. Unfortinaely the I2C lines are not exposed on our board so if it gets its knickers in a twist, there is no way to recover the BLE.
We have no access to the HCI UART from our micro. We have to open up the unit to access it, so programming it via HCI is a non-starter.
I'm hoping that Anjana is right and if we use the 20736S the UART bootloader will work as expected.