Once programmed, your App is stored in NVRAM by the minidriver and will be automatically loaded to internal RAM (bootloader not required) on boot up and initialized.
Specifically, the application runs in its own thread and the entire application framework is event driven. The main entry point of the application is APPLICATION_INIT() where it has to register its GATT database, configurations and the application create function (no other operations are allowed at this point).
Once this is done, the rest of the firmware and the BLE stack will be initialized - and once these are ready - the application create function will be invoked.
Once you return from this function, everything is event driven and callbacks for connection up/down/end of ADV interval/write to GATT handle, interrupts, timer expiry etc. are all events for the application to handle.
Also remember that When sampled on RESET only:
HCI UART Rx = High (Programming mode)
HCI UART Rx = Low (Application mode)
This is all controlled by the minidriver and cannot be reconfigured in any way by the developer.
Thanks for your response.
Is it the same minidriver who validates the Static segment in case of OTA update scheme?
Yes, it is the same minidriver.