domingo, 3 de novembro de 2013

Entendendo o bootloader

Uma das muitas funcionalidades incorporadas ao microcontroladores avançados da Microchip é a capacidade do programa se auto-programar. Este recurso muito útil, foi deliberadamente incluído para dar ao usuário a capacidade de realizar operações de "Bootloading". Dispositivos como o PIC18F4550 são projetados com um 'bloco de boot', uma pequena parte da memória de programa protegida, alocados especificamente para o firmware bootloade.

O bootloader tem a função de se comunicar com o PC através da USB,  receber o programa  e direciona-lo para a área reservada para o "programa de usuário". Veja abaixo a demonstração da distribuição de memória de um microcontrolador sem bootloader e um microcontrolador com bootloader. .

Bootloader PIC18

Obs: No exemplo ilustrado acima a área de "User program" se inicia no endereço 1000H, contudo este endereço inicial pode variar de acordo com a versão do bootloader utilizado.

Como observado na ilustração acima , o programa de usuário sempre ira iniciar em uma posição deslocada do ponto 0 de memória, visto que o bootloader estará ocupando esta área inicial da memória, e isso é muito importante para desenvolver o seu programa, pois todo programa que será desenvolvido, com destino a ser carregado em um dispositivo que faz uso de bootloader para auto-programação, tem que possuir em seu código uma diretiva de programação que diz ao compilador que todo o código de execução será colocado em uma posição de memória a partir de um endereço X. No caso do exemplo acima o programa deverá ter uma diretiva que coloque o código a partir da posição 1000H, um exemplo desta diretiva no programador mikroC é o "#pragma orgall" como no exemplo abaixo:


Obs: Para cada compilador utilizado é importante  pesquisar para saber qual a diretiva correta a se utilizar.

Abaixo temos um exemplo do arquivo HEX gerado com a utilização da diretiva acima.



Dica: Um bom exemplo para utilização deste conhecimento é na programação da placa PROTO'n PIC18F4550.

Um comentário: