A maior rede de estudos do Brasil

Grátis
256 pág.
Descobrindo o STM32

Pré-visualização | Página 6 de 47

Demo/
main.c
Makefile
Library/
· · ·
Makefile.common
README.md
startup_STM32F10x.c
STM32F100.ld
STM32F10x_conf.h
Figura 1.16: Template STM32VL
O diretório do template (mostrado na Figura 1.16) consiste na parte
específica de código inicial, de uma parte específica de linker script, um make-
file, e um arquivo header requerido pela biblioteca padrão do periférico. Um
subdiretório contem o código e exemplos específicos do makefile. O diretó-
rio inclui um arquivo binário (executável) para o STM32 VL Discovery. O
programa demo é discutido mais adiante no Capítulo 3.
Servidor GDB
Para baixar e debugar o código na placa STM32 VL Discovery, po-
demos explorar a interface USB de depuração stlink, que comunica com o
módulo depurador do STM32. A interface stlink pode ser usada tanto pelo
processador da placa Discovery, e selecionando os pinos corretamente para
processadores off-board. A ST também vende uma versão stand-alone desta
interface depuradora. Infelizmente, a interface stlink é suportada apenas em
Windows e a ST não publicou ainda uma especificação da interface. É ampla-
mente conhecido que a interface stlink é implementada usando um dispositivo
da classe USB Mass Storage e sabe-se ainda que esta aplicação é incompatível
com o OS X e com os drivers do kernel do Linux. Ainda assim, a interface
sofreu uma suficiente engenharia reversa que um servidor gdb executando em
um Linux ou OS X está disponível para download:
git clone git://github.com/texane/stlink.git
Revision: (None) ((None)) 29
CAPÍTULO 1. INICIANDO
O arquivo README descreve o processo de instalação. A placa STM32
VL Discovery utiliza o protocolo STLINKv1 que é um pouco problemático
devido à maneira com que interage com o Kernel OS. Devido aos problemas
do Kernel, é importante seguir as instruções fornecidas. No caso do OS X, há
também um “mac os x driver” que deve ser construída e instalada.
Para executar o servidor gdb, conecte uma placa STM32 VL Discovery.
Verifique se o “/dev/stlink” existe e então execute:
st-util -1
Observação: Versões anteriores do st-util necessitam uma sequência
inicial diferente
st-util 4242 /dev/stlink
Para fazer o download do exemplo pisca-led, inicie uma instancia de
arm-none-eabi-gdb em uma janela separada e execute os seguinte comandos
arm-none-eabi-gdb BlinkingLights.elf
(gdb) target extended-remote :4242
(gdb) load
(gdb) continue
Isto fará o download do programa para a memoria flash e iniciar a
execução.
GDB pode também ser usado para configurar breakpoints e watch-
points.
1.3 Referências Principais
Existe um extenso numero de documentos pertencentes à família STM32
da Cortex-M3 MCUs. A lista à seguir inclui os documentos chaves referen-
ciados neste livro. A maioria deles está disponível online em www.st.com.
Os documentos técnicos de referencia do Cortex-M3 estão disponíveis em
www.arm.com.
30 Revision: (None) ((None))
1.3. REFERÊNCIAS PRINCIPAIS
RM0041 Reference manual for STM32F100x Advanced ARM-based 32-bit
MCUs [20]. Este documento fornece informações de referência de todos
os periféricos usados nos processadores STM32 incluindo o processador
usado na placa STM32 VL Discovery.
PM0056 STM32F10xx/20xx/21xx/L1xxx [19]. Referencia da ST para pro-
gramar o processador Cortex-M3. Inclui modelo de execução e instru-
ções, e códigos para periféricos (p. ex. O controlador de interrupções).
Cortex-M3 ARM Cortex-M3 (revision r1p1) Technical Reference Manual.
Fonte definitiva para informações pertinentes para o Cortex-M3. [1].
Data Sheet Low & Medium-density Value Line STM32 data sheet [15]. For-
nece informações de pinos – especialmente o mapeamento entre GPIO
e funções alternativas. Existem data sheets para um grande número de
MCUs da família STM32 – este se aplica somente ao MCU da STM32
VL Discovery.
UM0919 User Manual STM32 Value Line Discovery [14]. Fornece informa-
ções detalhadas, incluindo diagramas de circuito, para a STM32 VL
Discovery.
Revision: (None) ((None)) 31
Capítulo 2
Introdução ao STM32 F1
Os micro-controladores STM32 F1xx são baseados no núcleo ARM
Cortex-M3. O Cortex-M3 é também a base para micro-controladores de vários
outros fabricantes, incluindo TI, NXP, Toshiba e Atmel. Compartilhar um
núcleo comum significa que as ferramentas de desenvolvimento de software,
incluindo o compilador e depurador são comuns através de uma vasta gama
de micro-controladores. O Cortex-M3 difere de gerações anteriores de proces-
sadores ARM pela definição de um número de periféricos-chave como parte da
arquitetura de núcleo incluindo controlador de interrupção, temporizador do
sistema, e hardware de depuração e trace (incluindo as interfaces externas).
Este nível de integração adicional significa que os softwares do sistema, tais
como sistemas operacionais em tempo real e ferramentas de desenvolvimento
de hardware tal como as interfaces de depuração podem ser compartilhadas
por toda a família de processadores. As várias famílias de micro-controladores
baseado no Cortex-M3 diferem significativamente em termos de periféricos de
hardware e memória – os periféricos da família STM32 são completamente di-
ferentes arquitetonicamente da família de periféricos da NXP, mesmo quando
eles têm uma funcionalidade semelhante. Neste capítulo apresentamos os prin-
cipais aspectos do núcleo Cortex-M3 e dos micro-controladores STM32 F1xx.
Um diagrama de blocos do processador de STM32F100 utilizado na
placa value line discovery board board é mostrada na Figura 2.1. A CPU
Cortex-M3 é mostrada no canto superior esquerdo. Os componentes da value
line têm uma frequência máxima de 24 MHz – outros processadores STM32
pode suportar um clock de até 72 MHz. A maior parte da figura mostra os
periféricos e sua interligação. O processador Discovery tem 8K bytes de SRAM
e 128K bytes de flash. Há dois barramentos de comunicação com periféricos
– APB2 e APB1 que suportam uma ampla variedade de periféricos.
Revision: (None) ((None)) 33
CAPÍTULO 2. INTRODUÇÃO AO STM32 F1
USART1
SPI1
TIM1
TIM17
TIM16
TIM15
GPIOE
GPIOD
GPIOC
GPIOB
GPIOA
12-bit ADC1
EXTIT
I2C2
I2C1
HDMI CEC
SPI2
USART3
USART2
TIM4
TIM3
TIM2
DAC1
DAC2
WWDG
TIM8
TIM7
A
P
B
2
A
P
B
1
B
u
s
M
a
tr
ix
Cortex-M3
DMA
Flash (128KB)
SRAM (8KB)
AHB2
APB2
AHB1
APB1
STM32F100
(simplified)
Figura 2.1: Arquitetura do STM32 F100
A arquitetura do núcleo do Cortex-M3 consiste de um processador de
32 bits (CM3) com um pequeno conjunto de periféricos principais – uma versão
simplificada deste núcleo é mostrada na Figura 2.2. O núcleo CM3 tem uma
arquitetura Harvard significando que usa interfaces separadas para buscar
instruções (Inst) e (Data). Isso ajuda a garantir que o processador não tenha
um gargalo de acesso a memória, uma vez que permite o acesso a dados e
memórias de instruções simultaneamente. Do ponto de vista do CM3, tudo
parece memória –- ele somente diferencia entre a busca de instruções e acesso
34 Revision: (None) ((None))
a dados. A interface entre o Cortex-M3 e um hardware específico de um
fabricante é feita através de três barramentos de memória – ICode, Dcode, e
de Sistema - que são definidos para acessar diferentes regiões da memória.
Cortex-M3
B
u
s
M
at
ri
x
ICode
DCode
System
NVIC
SysTick
Interrupts
CM3 Core
Inst Data
Figura 2.2: Arquitetura Simplificada no núcleo Cortex-M3
O STM32, mostrado na Figura 2.3 liga os três barramenots defini-
dos pela Cortex-M3 através de uma matriz de barramento a nível do micro-
controlador. No STM32, o barramento ICode conecta a interface de instrução
do CM3 a Memória Flash, o barramento DCode conecta a Memória Flash
para buscar dados e o barramento System fornece acesso de leitura/gravação
para SRAM e para os periféricos do STM32. O

Crie agora seu perfil grátis para visualizar sem restrições.