How to debug an embedded system - Part I