O que é BootLoader?
A Carregador de inicialização é o primeiro programa que é executado (antes do programa principal) sempre que um sistema é inicializado.  No PC É usado para inicializar o sistema operacional do sistema.  No caso de microcontroladores, um gerenciador de inicialização enriquece as capacidades do microcontrolador e os torna um dispositivo autoprogramável.  Este artigo irá explorar a importância de ter bootloader no microcontrolador.
Ao trabalhar com microcontrolador um problema comum enfrentado é programar o controlador?  Controladores diferentes seguem protocolos diferentes para programar sua ROM e, portanto, cada controlador possui um programador diferente, o que é difícil de ser feito.  Por outro lado, um programador universal é bastante caro. 
Com a era de atualização da tecnologia, os microcontroladores atuais não estão apenas se tornando mais poderosos, mas também incorporando funcionalidades tecnicamente superiores, o que os torna mais flexíveis e bastante fáceis de usar.  O bootloader é um deles.  A carregador de inicialização é uma pequena seção na ROM do controlador que é executada primeiro quando é inicializado.  Geralmente o carregador de inicialização foram escritos para capacitar um controlador com recursos de gravação automática.  O programa bootloader pode acessar qualquer um dos periféricos embutidos como USB, USART, CAN, SPI, etc. para trocar dados e esse recurso é usado para gravar na memória flash.  Nas indústrias automotivas os controladores são encapsulados em uma caixa metálica e deixam acessibilidade apenas a poucos pinos. Nesses casos o controlador é programado com o programa bootloader utilizando interface CAN no momento da fabricação e depois é colado nos circuitos, o que fornece uma facilidade para atualizar o código com o tempo.
O carregador de inicialização pode ser inserido em um controlador usando um gravador externo ou qualquer convencional e então dependendo do tipo de bootloader o controlador começa a responder à interface.  Assim, sempre que o controlador é reinicializado, o contador do programa salta para a seção do bootloader e aguarda pela instrução, que é alimentada pelo dispositivo externo.  Caso não haja bootloader o contador do programa irá para 0000H (posição inicial da memória flash) e começará a executar as instruções que estão escritas na memória do dispositivo.  

Figura 1: Exibição de imagem papel de um gerenciador de inicialização
Se o contador do programa entrar no seção do gerenciador de inicialização então, após executar o bootloader, deve haver uma instrução no bootloader que forçará o contador do programa a ir para 0000H.
Principalmente o carregador de inicialização reside na área inferior da ROM, mas há alguns casos em que o carregador de inicialização pode ser configurado na parte superior (como no PIC18F). O endereço inicial e final do carregador de inicialização na ROM depende do produto.  Portanto, é recomendável usar a ficha técnica para coletar as informações necessárias.
 
              