Design a firmware update mechanism for a server's BMC that ensures the system can recover even if the update process is interrupted mid-way.