Section 4.6 Programming
If using the ATmega328P within the Arduino Uno R3 package, the microcontroller can be programmed by connecting the Arduino to a computer with a USB cable and using the Arduino IDE. A section of program memory inside the microcontroller known as the bootloader instructs the microcontroller to receive external information and write it to program memory. The Arduino Uno can also be programmed using another serial protocol known as SPI.
A non-volatile memory programmer (such as the TL866II) can be used to program the ATmega328P microcontroller chip on its own. While the Arduino package has many features and is convenient to use, it is useful to be able to program individual microcontroller chips for small-footprint, low-power, or low-cost situations.
