I am looking to create a platform similar to Arduino for a side project using an ARM Cortex M4 based microcontroller. 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.