I am looking to create a platform similar to Arduino for a side project using an [ARM Cortex M4 based microcontroller][1]. The device essentially will communicate with a bunch of sensors on the board and relay that information through a USB Serial Connection to a connected USB host (similar to the Arduino Serial Monitor). I am not using an Arduino because I would like to learn about how to practically prototype a circuit like this. My question is, what do I have to do to make my microcontroller reprogrammable via a USB connection to a computer like how the Arduino is. I am looking for a hardware explanation like what I need to include in my circuit to accomplish this goal. Thank you and hopefully my question makes sense. EDIT: I am looking for possible components that I have to include in my board to allow for native USB programming. [1]: http://www.atmel.com/Images/Atmel-11289-32-bit-Cortex-M4-Microcontroller-SAM-G55_Datasheet.pdf