| 'Bootloader' is a small hex file program that runs first, at | | | | 'bootloader' starts listening to various interfaces |
| each time of reset. It resides in the program memory | | | | ('UART', 'SPI', 'I2C', 'CAN') for incoming bytes. Other |
| of the micro controller. The 'bootloader' enables | | | | times, it generates some clock pulses on the 'SPI' clock |
| programming without using an external programmer, | | | | line, or initiate the 'I2C' protocol. Then, if the uploaded |
| thus saving cost. | | | | data (programming codes) matches the format |
| First, an external programmer must be used to upload | | | | expected by the 'bootloader', these data or incoming |
| the 'bootloader' hex codes into the 'Atmega328' micro | | | | bytes will be written in the program memory. |
| controller. Then, programming (upload project task | | | | 'UART' stands for universal asynchronous receive / |
| codes) via 'USB' (universal serial bus) connection from | | | | transmitter, 'SPI' stands for serial peripheral bus and |
| the computer is possible without external programmer. | | | | 'I2C' is inter-integrated circuit ( a bus communications |
| An external programmer is usually purchased | | | | type). Finally 'CAN' is controlled area network. |
| separately, and is a circuit board that is able to | | | | In conclusion, a 'bootloader' allows direct programming |
| program micro controllers. This is done by uploading of | | | | from the personal computer. Simply burn a hex file |
| codes (written program in programming) from the | | | | (specific for a circuit board type) with an external |
| computer to the external programmer, and then to the | | | | programmer, that you can borrow from a friend. Then |
| intended micro controller. | | | | connect via 'USB' or serial from the computer to the |
| When the micro controller board is reset, the 'Arduino' | | | | micro controller development circuit board. |