| Gene's Quick Lab Ref
2017 | by Gene Casanova
Senior Systems/Network/Internet Engineer; Senior Technical Writer/Author/Editor
Load During System Boot
The term "boot loader" (also written "bootloader") refers to a computer process, executed first, when a computer system is turned on (a start routine), intended to load something into the computer system.
Microcontrollers, like the Arduino, are usually programmed through a programmer-device. A microcontroller can also be configured to store a computer program in it ("firmware"), which runs when the microcontroller is first powered (turned on), enabling loading an additional computer program for running. A computer program designed to run at boot time for loading an additional computer program, is referred to as a "bootloader".
Arduino Default Booting Routine
- When a standard Arduino systemboard is first turned on, the onboard LED will flash a couple times; to indicate the AVR MPU IC chip is executing the pre installed "Arduino" bootloader.
The Arduino bootloader program/process can be changed or removed.
A new bootloader can be uploaded into a compatible AVR MPU IC chip or entirely not used.
An 'AVR In-System Programmer' (a piece of hardware used to program microcontrollers) can be used, to upload a bootloader program; or, a second Arduino systemboard can be used as a programmer, when first loaded with a 'AVR In-System Programmer' sketch. Build your own AVR MPU programmer ("Arduino burner").
CGI Computer Wares in Milwaukee WI USA (EST 1977), offers premium-grade Arduino Burner kits, with a matched pair of premium/specification-grade Arduino systemboards, one pre-programed to function as an Arduino burner. The CGI Computer Wares Arduino systems, are tested and approved suitable for students of all levels, hobbyists, professionals, industrial controls, home automation, and scientific research labs.
Arduino Bootloader Versions
There are different versions of the Arduino bootloader. Versions differ for many reasons..... including:
Different microcontroller models, have different instructions built-in; requiring different boot loading programming.
Different Arduino systemboards have different hardware onboard, available to use during boot or require being initialized for use.
How To Load An Arduino Bootloader?
The command "Burn Bootloader" is provided in the special "Arduino IDE" software; and uses the open-source software utility application, named, "avrdude".
There are four steps, to loading an Arduino, with a bootloader. The steps for loading an Arduino bootloader are:
- Unlock the bootloader section of the microcontroller IC chip (MPU).
- Setting the the fuses in the MPU.
- Uploading the bootloader program to the MPU.
- Locking the bootloader section of the MPU.
These steps are controlled by a number of preferences in the Arduino preferences file.
Loading An Arduino Bootloader
A "bootloader" can be uploaded into the ROM space built into a MPU IC chip, by using one of the following methods:
- "AVR-ISP" (ISP = In-System Programmer)
- A "Parallel Programmer".
Most microcontrollers have an 'in-system programming' (ISP) header. Some manufacturers, such as Atmel and Microchip, use a specialized ISP method for programming their MPU IC chips. Their method is refered to as " in-circuit serial programming" (ICSP).
Most Arduino systemboards are made with a 2x3 pin ICSP PCB header connecto; mounted on the printed circuit board (PCB). Some Arduino systemboards may feature an addtional connector, depending on how many addtional MPU IC chips are provided on the systemboard.
The ICSP connector provides the three SPI signal paths ('MISO', 'MOSI', 'SCK'), plus a + power lead, a - ground lead, and a AVR MPU IC chip 'reset' signal. These pins are all needed to connect to a AVR programmer device.
2017 - The Arduion UNO R3
As an example, the Arduino UNO R3 (version 3) open-source systemboard design, has two ICSP PCB headers. A ICSO header for the ATmega16U2 IC chip and a ICSO header for the ATmega328 AVR MPU.
To "reflash"/"reburn" the Arduino bootloader on an Arduino UNO R3 systemboard, use the ICSP header for the ATmega328 MPU.
Programming Mini Arduino Systemboards
On very small systemboards, a ICSP header may not fit and not provided. The ICSP pins will be provided using a different method.
The ATmega surface mount device (SMD) MPU IC and the bigger ATmega MPU DIP IC version, both provide ISP pins. Some systemboard may only have test points for the ISP header. Connect to the test point pins, or consider buying an ISP interfacae/adapter. Connecting to the test points, enables programming the MPU IC chip.
Using Arduino 'AVR ISP' (In-System Programmer)
Using an Arduino systemboard as an 'AVR ISP' (in-system programmer) enables burning bootloaders into MPU IC chips. An Arduion systemboard can be loaded with a special open-source sketch, provided by the Arduino IDE software, to burn ATmega168 or ATmega328 MPU IC chips.
The sketch/firmware, "mega-isp", is an "In System Programmer", based on the AVR Mega8 chip, including Arduino™.
Avrisp protocol firmware (includes support for fuses and locks). Source code made available on github.
Use The Technology Wisely & Keep It Simple
Need More? Need Help? ........Software, Network, System & Data Center Builder & Developer | Development Services Available - Freelance Small Jobs; To Outsourced Long Term Service Provider Contract Labor Available.
CGI Computer Wares | EST 1979