It is an almost must to have feature to upgrade firmware in the field, but it is also dangerous if you don't have any mechanism to recover the system if the upgrade process failed, e.g., power was cut during FLASH programming. Does anybody in this community ever think about this and will you please share good practices with us?