sexta-feira, 30 de outubro de 2015

Começando pela placa STM32F0Discovery

A STMicroeletronics possui uma série de microcontroladores baseados nos processadores ARM Cortex. Possui também disponível algumas placas de desenvolvimento de fácil utilização. Comecemos com a placa STM32F0Discovery baseada no microcontrolador STM32F051R8T6 possuindo 64 KB de memória Flash e 8 KB de memória RAM .
STM32F0discovery
Como recursos, ela possui um botão de RESET, dois LEDs e um botão para uso do usuário, interface ST-LINK/V2 para debug e programação do microcontrolador alem de dezenas de pinos de entrada e saída do microcontrolador diretamente acessíveis por terminais externos da placa. O manual de usuário da placa STM32F0Discovery está disponível aqui. Caso o link não retorne o manual, basta procurar pelo documento UM1525 da STMicroelectronics.

Ao conectar a placa via cabo USB ao computador, a mesma será reconhecida automaticamente pelo WINDOWS, como mostrado na figura abaixo.

Placa STM32F0Discovery conectada

O microcontrolador é acessível pela interface ST-LINK/V2 através dessa conexão USB. Para programar, depurar ou mesmo visualizar registradores e áreas de memória do microcontrolador, é necessário o software STM32 ST-LINK utility. Ele pode ser encontrado aqui ou, caso seja necessário, procure por STSW-LINK004. Só há as versão para MS-WINDOWS. Sua instalação é simples e ele pode ser visto na figura seguinte.

Utilitário STM32 ST-LINK
Ao se clicar no botão , o utilitário se comunica com o microcontrolador e traz suas informações além da imagem do conteúdo da memória flash.

Conectado ao microcontrolador
Podemos ver que o microcontrolador é da família STM32F0 (ARM Cortex M0) e possui 64 KBytes de memória flash.
Algumas informações do microcontrolador
A interface ST-LINK/V2 embarcada na placa suporta apenas comunicação bidirecional a dois fios SWD (Serial Wire Debug) para microcontroladores da família STM32. A frequência é de 1,8 MHz e isso pode ser comprovado nas informações de configuração padrão do utilitário STM32 ST-LINK mostradas abaixo:


Alguns recursos e estados do microcontrolador alem da memória flash podem ser observados na tela MCU Core onde temos registradores e estado do microcontrolador. Esse painel possui ainda botões de comandos que usaremos mais adiante.


Finalmente, vamos às documentações obrigatórias para se trabalhar com esse microcontrolador. O manual de usuário da placa já mostrado acima é o primeiro documento útil. Nele temos a disposição dos pinos, LEDs, botões, jumpers e suas funções. 
O próximo manual indicado é o datasheet desse microcontrolador que pode ser encontrado aqui. Da mesma forma, caso não esteja disponível, procurar por DM00039193. Junto com esse, o manual de referência desse microcontrolador é de uso obrigatório e pode ser encontrado aqui ou procurando por RM0091.
Primeira informação relevante que obtemos é o mapeamento de memória como visto na figura abaixo:
Mapeamento de memória do microcontrolador STM32F05xx 
Nota-se que a memória flash, que é a disponível para o programa residir, está mapeada na faixa de endereços 0x08000000 a 0x0800ffff no caso desse microcontrolador que possui 64 KBytes de memória flash. Também nota-se que a memória RAM está mapeada na faixa de 0x20000000 a 0x20001fff para esse microcontrolador (4 KBytes de RAM).
O espaço inicial de memória (0x0000000) possui um mapeamento dependente da configuração de boot. Algumas implementações do processador AMR Cortex M0 possuem um pequeno programa chamado boot-loader. Esse programa é preparado com a fabricação do microcontrolador e possui algumas funções dentre as quais a possibilidade de remapeamento de memória. No caso da placa STM32F0Discovery o pino BOOT0 vem de fábrica com valor zero o que, segundo o manual de referência no capítulo 2.5, a memória flash é remapeada como área de boot. Dessa forma, a memória flash é vista pelo microcontrolador tanto no endereço 0x08000000 original como no endereço 0x00000000. Isto pode ser comprovado pela figura abaixo onde observa-se o conteúdo do endereço 0x00000000 idêntico ao mostrado anteriormente no endereço 0x08000000.


Como curiosidade, segundo o documento AN2606 do fabricante, a versão do boot loader para esse microcontrolador está presente na posição de memória 0x1ffff7a6 e tem o valor 0x21 que representa versão 1 e com uso de 2 interfaces USART para a carga de programa.



REFERÊNCIAS:
"The Definitive Guide to the ARM Cortex-M0",Joseph Yiu
UM1525 - "User manual STM32F0DISCOVERY Discovery kit for STM32 F0 microcontrollers"
http://www.arm.com/products/system-ip/debug-trace/coresight-soc-components/serial-wire-debug.php
STM32F051xx microcontrollers datasheet
AN2606-Application note-"STM32 microcontroller system memory boot mode"

Nenhum comentário:

Postar um comentário