A maior rede de estudos do Brasil

Grátis
256 pág.
Descobrindo o STM32

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

(RTOS),
essenciais para a construção de sistemas embarcados mais complexos.
Para leitores com experiência em programação com linguagem “C”, a
família STM32 é uma plataforma muito superior que a Arduíno em sistemas
micro-controlados se as dificuldades iniciais puderem ser reduzidas. O objetivo
desde livro é ajudar aprendizes em sistemas embarcados a dar um salto inicial
com a programação para a família STM32. Eu assumo que tenha competências
básicas na linguagem C em ambiente LINUX –- leitores sem experiência são
melhores servidos com a plataforma Arduíno. Parto do princípio também que
1Existem atualmente cinco famílias de MCUs STM32 – STM32 F0, STM32 F1, STM32
L1, STM32 F2, e STM32 F4 suportadas por diferentes, mas estruturalmente semelhantes, bi-
blioteca de firmware. Embora estas famílias compartilhem vários periféricos, algum cuidado
deve ser tomado quando for movimentar os projetos entre estas famílias. [18, 17, 16]
2Uma tool-chain inclui um compilador, assembler, linker, debugger e varias ferramentas
para processamento de arquivos binários.
14 Revision: (None) ((None))
esteja familiarizado com editores de texto, e experiência em escrever, compilar
e depurar códigos em C. Não assumo que tenha familiaridade significativa com
o hardware -– as pequenas quantidades de “ligações” requeridas neste livro
podem ser facilmente realizadas por um iniciante.
Os projetos que descrevo neste livro utilizam uma pequena quantidade
de módulos disponíveis comercialmente e de baixo custo. Entre eles, incluem
o poderoso STM32 VL Discovery Board (uma placa de US$10 que inclui um
processador STM F100 e um hardware para depuração), um pequeno display
LCD, uma porta USB/UART, um Wii Nunchuk, um alto-falante e um micro-
fone. Com estes poucos componentes podemos explorar as três mais impor-
tantes interfaces -– serial, SPI e I2C –- interfaces de entrada e saída analógica,
e desenvolvimento de firmware utilizando interrupções e DMA. Todos os com-
ponentes requeridos para construção estão disponíveis por fornecedores locais
ou vendedores do Ebay. Escolhi não utilizar um único “evaluation board”
abrangente, normalmente utilizados em tutoriais, porque desejo que os leito-
res desde livro vejam que poucos componentes aliados a técnicas de softwares
provêm os conceitos necessários para adaptar vários outros componentes co-
merciais. Ao longo do livro irei sugerir outros módulos e descreverei como
adaptar as técnicas introduzidas neste livro para sua utilização.
O software de desenvolvimento usado neste livro é todo open-source.
Nosso recurso principal é a tool-chain de desenvolvimento de software GNU
que inclui o gcc, gas, objcopy, objdump e o depurador gdb. Não utilizo uma
IDE como o eclipse. Acredito que a maioria das IDEs possuem um custo ini-
cial alto embora possam agilizar o processo de desenvolvimento para sistemas
de grande porte. IDEs também ocultam o processo de compilação de uma ma-
neira a dificultar a determinação do que realmente está acontecendo, quando
meu objetivo aqui é detalhar o processo de desenvolvimento. Enquanto o lei-
tor é livre para usar uma IDE, eu não ofereço orientações para a utilização
de uma. Não se pode assumir que open-source significa baixa qualidade –-
muitas aplicações comerciais para sistemas embarcados utilizam o software
GNU e uma significante parcela de desenvolvimento de software comercial é
feita com software da GNU. Finalmente, virtualmente todos os processado-
res embarcados são suportados pela tool-chain de software GNU. Aprender
como usar esta ferramenta em um processador literalmente abre portas para
o desenvolvimento de sistemas embutidos.
O desenvolvimento de Firmwares diferem significativamente de desen-
volvimento de aplicações porque geralmente é excessivamente difícil de deter-
minar o que realmente está acontecendo no código que interage com hardwares
periféricos apenas examinando o estado do programa. Além disto, em muitas
Revision: (None) ((None)) 15
CAPÍTULO 1. INICIANDO
situações é impraticável a parada do programa (exemplo: com um depurador)
porque poderia invalidar o comportamento em tempo-real. Por exemplo, no
desenvolvimento de código para interface com um Wii Nunchuk (um dos pro-
jetos descritos neste livro), eu tive dificuldades em rastrear um bug (erro) de
temporização relacionado ao quão rápido os dados estavam sendo “clockeados”
pela interface de hardware. Nenhum depurador de software poderia isolar este
problema –- tinha que encontrar uma maneira de verificar o comportamento
do hardware. Similarmente, ao desenvolver código para prover controle de
fluxo para uma interface serial, fiz suposições erradas sobre a ponte USB/U-
ART específica que estava comunicando. Somente ao observar a interface de
hardware é que encontrei este problema.
Neste livro, introduzo um processo de desenvolvimento de firmware que
combina métodos tradicionais de depuração (com o GDB), com o uso de um
“analisador logico” de baixo custo que permite capturar o comportamento em
tempo real das interfaces de hardware.
1.1 Hardware Necessário
Uma lista do hardware necessário para os tutoriais desde livro é apre-
sentada na Figura 1.1. A lista de componentes está organizada por catego-
rias correspondendo às várias interfaces cobertas por este livro seguido pelos
materiais de teste e prototipagem necessários. No restante desta seção, des-
crevemos cada componente e, quando existente, as características chave que
precisam serem satisfeitas. Alguns destes componentes necessitam de solda-
gem de pinos. Esta é uma tarefa simples que pode ser completada com um
ferro de solda simples e barato. A quantidade de solda necessária é mínima e
recomendo pegar emprestado o equipamento necessário se possível. Existem
muitos tutoriais de solda na web.
O componente de maior custo é um analisador lógico. Utilizo o “Saleae
Logic”, que para alguns iniciantes pode ser caro (US$150). 3 Uma alterna-
tiva, o OpenBench Logic Sniffer, é consideravelmente mais barato (US$50) e
provavelmente adequado. Minha escolha foi ditada pelas necessidades de um
laboratório de ensino, cujos equipamentos sofrem diferentes danos -– as partes
eletrônicas expostas e pinos do Logic Sniffer são muito vulneráveis neste am-
biente. Um osciloscópio pode ajudar nas interfaces de áudio, mas está longe
de ser essencial.
3Atualmente a Saleae oferece um desconto para alunos e professores.
16 Revision: (None) ((None))
1.1. HARDWARE NECESSÁRIO
Componente Fornecedor Custo
Processador
STM32 VL discovery Mouser, Digikey, Future Elec-
tronics
$10
Asynchronous Serial
USB/UART breakout Sparkfun, Pololu, ebay $7-$15
SPI
EEPROM (25LC160) Digikey, Mouser, others $0.75
LCD (ST7735) ebay and adafruit $16-$25
Micro SD card (1-2G) Various $5
I2C
Wii Nunchuk ebay (clones), Amazon $6-$12
Nunchuk Adaptor Sparkfun, Adafruit $3
Time Based
Hobby Servo (HS-55 micro) ebay $5
Ultrasonic range finder (HC-SR04) ebay $4
Analog
Potenciometro Digikey, Mouser, ebay $1
Audio amplifier Sparkfun (TPA2005D1) $8
Speaker Sparkfun COM-10722 $1
Microphone Module Sparkfun (BOB-09868 or
BOB-09964)
$8-$10
Power Supply (optional)
Step Down Regulator (2110) Pololu $15
9V Battery Holder
9V Battery
Prototyping Materials
Solderless 700 point breadboard (2) ebay $6
Jumper wires ebay $5-$10
Equipamento de Tests
Saleae Logic ou Saleae $150
OpenBench Logic Sniffer Seeed studio $50
Osciloscópio opcional para testes de saída
analógica
Figura 1.1: Required Prototype Hardware and Suppliers
Revision: (None) ((None)) 17
CAPÍTULO 1. INICIANDO
STM32 VL Discovery
Figura 1.2: STM32 VL Discovery Board
O componente essencial usado nos tutoriais é o STM32 VL Discovery
produzido pela STMicroelectronics (ST) e disponível em muitos distribuido-
res de eletrônicos por aproximadamente US$10. 4 Esta placa, mostrada na
Figura 1.2 inclui um microcontrolador configurável STM32 F100 com 128KB

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