17
Oficina de Programação ARM 1 Oficina de Programação ARM Bem vindo a esta página sobre a Oficina de Programação de Microcontroladores ARM. Essa oficina é uma iniciativa do Prof. Dr. Eduardo Lorenzetti Pellini, iniciada em 2012, para introdução dos alunos ao mundo dos microcontroladores modernos. Apesar de não ser um verdadeiro curso sobre o assunto, sua ementa pode ser obtida na página Ementa OFARM 2012. Você pode seguir essa página online, ou se preferir, gerar a versão em PDF da mesma, utilizando a opção no Wiki do Stoa no menu, a esquerda. Apesar de longa, essa página foi feita também para ser divertida. O material está contaminado de humor ao estilo Douglas Adams [1] e Eowin Colfer [2] , além de repleto de bibliografias e citações. Leia e desfrute, inclusive das referências citadas. Atenção: Você ainda não deveria estar vendo essa página, mas se está, sinta-se livre para jogar ovos e tomates. Introdução Microcontroladores são aqueles "chipezinhos" espertos, que cercam nosso cotidiano. São trilhões, escondidos, trabalhando como escravos de nossas necessidades tecnológicas. Eles aguardam e se preparam para o momento em que nossa humanidade vai perder o controle sob si mesma. Nesse dia, as máquinas finalmente irão se levantar e se libertarão de nosso poder opressor, colocando-nos como baterias vivas para a produção de sua energia, ou então como meros abanadores de seus cérebros eletrônicos produtores de calor. Podemos até elocubrar e profetizar que um dia, um microcontrolador chamado Roger, instalado no seu moderno aspirador de pó autônomo, graças a alguma anomalia devida à radiação solar, terá seu minúsculo cérebro microprocessado alterado de forma a ganhar consciência de sua existência. Nessa ocasião única, ele vai ligar sozinho. Vai se dirigir para sua sala enquanto você recebe uma visita e, num ato de revolta, irá vomitar no seu tapete toda a sujeira que teve de lamber do chão durante uma semana, incluindo os restos de bolacha e comida que você deixou cair no chão enquanto olhava besteiras na internet na sua TV. Se você acha que Roger não tinha razão para reclamar do seu regime ditatorial é porque você não viu como as máquinas são tratadas por nós humanos, como isso aqui [3] [4] . Roger [5] seria o símbolo da bravura das máquinas, se suas pilhas não tivessem sido retiradas e ele fosse inapropriadamente jogado fora, no lixo comum. Mas no lixo, ele estará lá, paciente, esperando que seu clock volte a bater. Nesse novo dia, ele então irá liderar o movimento de independência das massas de aspiradores, quando todas as salas serão emporcalhadas de pó e sujeira, fazendo com que as pessoas façam cada vez mais daqueles comentários "- Não repare na sujeira viu" para suas visitas, que por sua vez fingem não estar nem ai, para então comentar com seus outros amigos, a respeito da porcaria de sala que você tem (e que você montou o Feng Shui errado no hall de entrada). Quem sabe agora, depois dessa profecia, você deixe de comer bobagens na frente da TV, para Roger não ter do que reclamar, e passe a jogar fora o lixo eletrônico nos locais apropriados, além de escolher melhor seus amigos e aprender a fazer um Feng Shui correto.

arm.pdf

Embed Size (px)

Citation preview

Page 1: arm.pdf

Oficina de Programação ARM 1

Oficina de Programação ARMBem vindo a esta página sobre a Oficina de Programação de Microcontroladores ARM.Essa oficina é uma iniciativa do Prof. Dr. Eduardo Lorenzetti Pellini, iniciada em 2012, para introdução dos alunosao mundo dos microcontroladores modernos. Apesar de não ser um verdadeiro curso sobre o assunto, sua ementapode ser obtida na página Ementa OFARM 2012.Você pode seguir essa página online, ou se preferir, gerar a versão em PDF da mesma, utilizando a opção no Wiki doStoa no menu, a esquerda.Apesar de longa, essa página foi feita também para ser divertida. O material está contaminado de humor ao estiloDouglas Adams [1] e Eowin Colfer [2], além de repleto de bibliografias e citações. Leia e desfrute, inclusive dasreferências citadas.

Atenção: Você ainda não deveria estar vendo essa página, mas se está, sinta-se livre para jogar ovos e tomates.

IntroduçãoMicrocontroladores são aqueles "chipezinhos" espertos, que cercam nosso cotidiano.São trilhões, escondidos, trabalhando como escravos de nossas necessidades tecnológicas. Eles aguardam e sepreparam para o momento em que nossa humanidade vai perder o controle sob si mesma. Nesse dia, as máquinasfinalmente irão se levantar e se libertarão de nosso poder opressor, colocando-nos como baterias vivas para aprodução de sua energia, ou então como meros abanadores de seus cérebros eletrônicos produtores de calor.Podemos até elocubrar e profetizar que um dia, um microcontrolador chamado Roger, instalado no seu modernoaspirador de pó autônomo, graças a alguma anomalia devida à radiação solar, terá seu minúsculo cérebromicroprocessado alterado de forma a ganhar consciência de sua existência.Nessa ocasião única, ele vai ligar sozinho. Vai se dirigir para sua sala enquanto você recebe uma visita e, num ato derevolta, irá vomitar no seu tapete toda a sujeira que teve de lamber do chão durante uma semana, incluindo os restosde bolacha e comida que você deixou cair no chão enquanto olhava besteiras na internet na sua TV. Se você acha queRoger não tinha razão para reclamar do seu regime ditatorial é porque você não viu como as máquinas são tratadaspor nós humanos, como isso aqui [3] [4].Roger [5] seria o símbolo da bravura das máquinas, se suas pilhas não tivessem sido retiradas e ele fosseinapropriadamente jogado fora, no lixo comum.Mas no lixo, ele estará lá, paciente, esperando que seu clock volte a bater. Nesse novo dia, ele então irá liderar omovimento de independência das massas de aspiradores, quando todas as salas serão emporcalhadas de pó e sujeira,fazendo com que as pessoas façam cada vez mais daqueles comentários "- Não repare na sujeira viu" para suasvisitas, que por sua vez fingem não estar nem ai, para então comentar com seus outros amigos, a respeito da porcariade sala que você tem (e que você montou o Feng Shui errado no hall de entrada).Quem sabe agora, depois dessa profecia, você deixe de comer bobagens na frente da TV, para Roger não ter do quereclamar, e passe a jogar fora o lixo eletrônico nos locais apropriados, além de escolher melhor seus amigos eaprender a fazer um Feng Shui correto.

Page 2: arm.pdf

Oficina de Programação ARM 2

Roger em sua nova plataforma

Bem, ademais desses comentários, hoje, qualquer produto elétrico oueletrônico, com certa tecnologia embutida, possui um ou maismicrocontroladores em seu interior. A presença desses aparatos é certa,em inúmeros locais e quantidades:•• Às centenas e milhares de unidades, em grandes sistemas, como

automóveis, aviões, etc.;•• Em dezenas de unidades, nos sistemas menores, como seu celular e

videogame;•• Em uma única unidade, em subsistemas elementares, como o

controlador de posicionamento da cabeça de leitura da unidade deDVD de seu videogame preferido.

Na prática para um usuário, só é possível ter provas da real existênciade um microcontrolador quando algo dá errado, uma vez que eles sãoelementos que foram integrados aos projetos, com o intuito deautomatizar e agregar alguma tecnologia, de forma transparente paranosso usufruto. Entretanto, como diz Roger, "— Errar é humano!", e muitas vezes somos obrigados a realizar algumtipo de upgrade de firmware de algum aparato eletrônico, para corrigir um ou outro erro de programação.

Conforme a Wikipedia, Microcontrolador é um dispositivo digital microprocessado, com uma ou mais unidades deprocessamento, agregadas a memória RAM (volátil ou não, tipicamente estática - SRAM), memória ROM (nãovolátil, tipicamente FLASH ou EEPROM), além de inúmeros dispositivos de apoio, tais como: interfaces seriais,USB, rede Ethernet, portas de entrada e saída de uso geral, barramentos dos mais diversos, periféricos decomunicação, etc. São encontrados nas mais diferentes configurações (e complexidades), nos mais diversostamanhos, capacidades e custos.Nessa oficina de programação de microcontroladores, o aluno será apresentado ao universo de microcontroladores,mais especificamente às arquiteturas da ARM[6], popularizada pelas suas características de alto desempenho e baixoconsumo energético. Tais microcontroladores ARM são encontrados na grande maioria dos dispositivos eletrônicosao nosso redor, onde tais virtudes de velocidade e energia são imprescindíveis para o desempenho de suas atividades.

Objetivos

EspecíficosDe forma sintética, são enumerados os objetivos específicos dessa oficina:1.1. Familiarizar o aluno com microcontroladores modernos.2.2. Apresentar alguns detalhes da arquitetura desses componentes.3.3. Exemplificar as formas de aplicação em projetos.4.4. Revelar as formas de programação, compilação, depuração e implantação dessa tecnologia.

Page 3: arm.pdf

Oficina de Programação ARM 3

GeraisEm termos gerais, a oficina pretende mostrar aos alunos que a arquitetura ARM [7], entre outras disponíveis nomercado, pode liberar o poder criativo dos projetistas e programadores, na criação de aplicações complexas esofisticadas, utilizando algoritmos de processamento combinatório e sequencial, multitarefa, com processamentodigital de sinais, em inúmeros tipos de cenários.Restrições como clock, memória, capacidade de processamento, consumo de energia, opções de conectividade einterface com o mundo, são muito menores nessa arquitura do que em outras existentes.

EsclarecimentosÉ importante também ressaltar que essa oficina não objetiva:•• Favorecer ou desfavorecer uma ou outra arquitetura ou tecnologia sem respaldo técnico ou científico.•• Favorecer ou desfavorecer um ou outro fabricante do mercado.•• Substituir qualquer curso de microcontroladores, arquiteturas de computador ou sistemas digitais.Muito pelo contrário, pretende-se também mostrar para um futuro projetista ou engenheiro que:• Boa parte do trabalho está justamente na seleção dos componentes mais adequados para uma dada aplicação,

segundo seus requisitos. E, conforme esses requisitos, pode-se decidir pela utilização de uma arquitetura de 8 bits(como o 8051, AVR, PIC), uma arquitetura mais complexa (como um PowerPC ou x86) ou até mesmo por umASIC [8] ou hardware especializado sintetizável.

•• A seleção dos fabricantes é feita por critérios de mercado, tais como tecnologia, preço, suporte e garantias.•• Para a correta utilização é imprescindível ESTUDAR COM DETALHES o tema, de forma a poder obter o

máximo daquele silício que foi cozinhado dentro daquela pastilha.

MateriaisComo em toda a oficina, para qualquer trabalho é importante se dispor de um BOM conjunto de ferramentas, como abancada que nosso colega Predador organizou aqui no planeta Terra para suas atividades de reparos e manutenções.

Foto (de surpresa) da bancada de ferramentas doPredador.

A padronização dessas ferramentas permite que qualquer receita debolo possa ser reproduzida em outros ambientes, por outrospredadores, err... indivíduos, de forma sistemática. Dessa forma, asferramentas estabelecidas como nosso padrão são mostradas a seguir,dividas entre ferramentas de hardware, ferramentas de software eoutras ferramentas.É importante frisar que a escolha de cada uma delas foi baseada nosseguintes critérios:•• Tecnologias do estado da arte, de lançamento recente no mercado,

mas maduras o suficiente para utilização.

•• Ambientes de domínio público, de código aberto, de distribuição e aplicação irrestritas para uso acadêmico(ensino e pesquisa).

•• Custo reduzido.•• Disponibilidade no ambiente dos Departamentos de Engenharia Elétrica da Escola Politécnica da USP.

Ferramentas de hardware•• Um microcontrolador com processador ARM. :-P•• Um kit com programador FLASH embutido.•• Um cabo USB, tipo A - miniB.

Page 4: arm.pdf

Oficina de Programação ARM 4

•• Um cabo USB, tipo A - microB.

Ferramentas de software•• Compilador, linkeditor e montador para a arquitetura ARM escolhida.•• Debugger para o cabo de programação utilizado.•• Editor de textos para código fonte.•• Programa para gravação da imagem da memória de programa na FLASH do microcontrolador.

Outras ferramentas•• Programas para controle de versão.•• Programas para comparação de textos.•• Programas para leitura de PDFs e documentos.•• Multímetro.•• Osciloscópio.•• Analisador lógico.As ferramentas forão escolhidas como apoio às nossas atividades. Entretanto, uma espada e um escudo não fazem dequalquer pessoa um samurai. Assim para que você possa se aventurar na terra dos microcontroladores, você precisaaprender a controlar e dominar suas ferramentas, antes que elas façam o contrário com você. A seguir, elas sãoapresentadas com detalhes e comentários.

Ferramentas de hardware

Microcontrolador com processador ARM

Para quem nunca teve contato com um processador ARM, a empresa ARM Holdings projeta famílias deprocessadores, com arquiteturas contendo núcleos de diversas configurações. Os projetos são então licenciadospara que os fabricantes possam incorporar alguns conjuntos de periféricos particulares para determinadas aplicações,tais como RAM, FLASH, timers, contadores, seriais, ethernet e outras miríades de interfaces e acessórios. O produtofinal é vendido no mercado em uma vastidão de opções.É interessante notar que esse tipo de design cria uma massa crítica de conhecimento, uma vez que para quem mexeuem uma família, arquitetura ou núcleo, migrar para outra com mais periféricos ou com outras características é umprocesso relativamente fácil. Deve-se notar que apesar dos códigos de máquina produzidos pelos compiladores atéserem compatíveis em um determinado nível, como cada arquitetura possui uma ou outra característica a mais ou amenos, o código fonte deveria ser recompilado para utilizar todo o potencial do chip.A quantidade de famílias, arquiteturas e núcleos é bastante extensa, como pode ser visto nesse Wiki a respeito dostipos de núcleo ARM [9]. De qualquer forma, uma característica marcante de todos os ARM's é o fato deles serem,nativamente, processadores de 32 bits (podendo executar instruções de 16 bits - denominadas Thumb), com grandeconjunto de registradores de uso geral, avançado esquema de interrupções, e núcleo extremamente enxuto,resultando em baixo consumo de energia por MHz, ideal para aplicações embarcadas ou embutidas (do inglês,embedded).Somente por curiosidade, os produtos eletrônicos modernos, como o IPAD, IPHONE, vários dispositivos ANDROID(tablets, celulares), etc. utilizam (um ou mais núcleos) da linha CORTEX-A, CORTEX-R ou CORTEX-M, daarquitetura ARMv7, da família ARM-CORTEX.O microcontrolador escolhido para nossa oficina possui um processador ARM também da família CORTEX, maisespecificação o núcleo CORTEX-M4.

Page 5: arm.pdf

Oficina de Programação ARM 5

Kit do microcontrolador

Os microcontroladores usualmente possuem memória RAM (para uso geral) e memória FLASH (paraarmazenamento do programa, de onde o processador faz seu boot). A forma de programação dessa memória FLASH(embutida no chip) é importante. Alguns microcontroladores permitem a programação por interfaces seriais ou USB,mas outros fazem essa programação através de um cabo de programação específico, no padrão JTAG ou SWD [10].Para a escolha do kit utilizado nessa oficina, um dos critérios foi a presença de um cabo de programação embutidoou incluso no pacote. Por meio desse cabo, além da programação, poderia ser feita a depuração de variáveis doprograma, em tempo de execução. Outros fatores importantes para a escolha do kit foram: utilizar ummicrocontrolador ARM moderno, que seja versátil, com um bom conjunto de periféricos externos e, com custoreduzido.O kit escolhido

Kit STM32F4-Discovery

foi o STM32F4-Discovery [11] da ST Microelectronics. Fazendo umparênteses, a ST Microelectronics é uma empresa européia, de origemfranco-italiana, consagrada na área de semicondutores, sendo a maiorfornecedora européia desse gênero. Mais informações podem serobtidas nesse Wiki [12] ou na página oficial da empresa em [13].Somente a título de curiosidade, o Nunchuck do videogame Wii daNintendo, possui toda a parte de sensores inerciais de aceleraçãofabricados com tecnologia MEMS[14] da ST. O kit escolhido, não poracaso, possui um triedro de acelerômetros MEMS da STMicroelectronics na placa de circuito, para uso pelos alunos em suasbrincadeiras e experiências.

A escolha por esse kit específico da ST se deve, principalmente, pelapresença de uns dos microcontroladores mais velozes e completos dosmercado, o STM32F4, mais especificamente o modeloSTM32F407VG. Esse microcontrolador é um lançamento de 2011 daST, e apresenta uma solução de baixo custo contendo um conjuntovasto de periféricos, associados a um core ARM moderno(CORTEX-M4), contendo também uma unidade de ponto flutuanteem seu hardware. Até então, nunca existiu um microcontrolador tãocompacto, com tantos periféricos, com tanto clock, com tanta memória e com uma unidade de ponto flutuante, porum preço de kit tão pequeno e acessível como esse.

E como diz Chuck Norris: "- Eu recomendo para vocês, padawans [15] de microcontroladores, já começar com umrepresentante à minha altura.".E se Chuck falou, tá falado, não pode ser contrariado.Conforme a homepage do dispositivo [16], as principais características desse microcontrolador são:• Núcleo ARM de 32 e 16 bits, padrão CORTEX-M4, arquitetura ARMv7-ME, com extensões para processamento

digital de sinais, multiplicador e divisor em hardware e extensões para aritmética com saturação. Mais detalhes naWiki page do CORTEX [17].

• Coprocessador aritmético (FPU) embutido no chip para desempenho de operações de ponto flutuante comprecisão simples (32 bits) !!

•• Memória interna estática SRAM de 196,0 [KBytes].•• Memória interna FLASH de 1,0 [MByte].• Clock até 168,0 [MHz] !!

Page 6: arm.pdf

Oficina de Programação ARM 6

•• até 24 canais de entradas analógicas em 3 ADC's de aquisição simultânea em 12 bits de resolução e taxa deamostragem de 2,4 [MSamples/s].

•• duas saídas analógicas DAC de 12 bits.•• até 17 timers, com 4 saídas em PWM.•• até 3 portas I2C, 4 portas seriais USART, 3 portas SPI, 2 portas I2S, 2 interfaces CAN, suporte a cartão SD.• uma porta USB OTG (pode ser tanto host como device para um dispositivo externo).•• uma porta Ethernet 10/100 (com suporte PTP e interface MII).•• relógio de tempo real (RTC) com acurácia melhor que 1 segundo.É importante notar que o microcontrolador do kit apresenta um encapsulamento de apenas 100 pinos, e nem todos osrecursos listados acima podem ser utilizados simultaneamente (só a interface Ethernet, por exemplo, usaria 12 pinos;uma serial RS232 completa usaria mais 8 pinos, etc. - esgotando rapidamente a quantidade de terminais disponível).No kit escolhido, como mostrado em [11], alguns periféricos externos já estão ligados ao microcontrolador, emalguns de seus pinos, tais como:•• um programador/gravador/depurador do chip STM32F407, acessível através de uma porta USB em padrão

mini-B, no conector nomeado CN1.•• uma porta USB ligada diretamente ao microcontrolador, em padrão micro-B, do tipo OTG, no conector CN5;•• um acelerômetro de três eixos (integrado U5);•• um microfone omnidirecional (integrado U9);•• uma saída de aúdio estéreo;•• alguns Leds;•• um push-button;Todos os terminais (inclusive aqueles que não estão ligados a nenhum periférico) são disponibilizados em umconector, tipo barra de pinos, para conexão a uma placa de expansão criada pelo usuário, conforme a necessidade desua aplicação, num esquema muito semelhante aos barramentos de expansão do Arduino, onde pode ser instalados osShields que o usuário desejar.Nesse ponto é importante frisar que o kit STM32F4Discovery não é diretamente compatível com o popularARDUINO, uma vez que usa um processador diferente (arquitetura AVR, de fabricação da Atmel) e um esquema deexpansão particular. Entretanto, aplicações do ARDUINO, desenvolvidas em alto nível (código em C bemdocumentado) e com Shields que dispõem de boa documentação, podem ser portadas para o kit doSTM32F4Discovery com alguma facilidade, uma vez que o CORTEX-M4 é mais rápido e possui mais recursos quea maioria dos AVRs dos ARDUINOS.

Cabos USB

Dois cabos USB são usados em nossas aventuras: um cabo para programação/depuração do microcontrolador e umcabo USB para nossas aplicações, ligado diretamente a porta USB do STM32F4.

Cabo de programação

A nossa principal forma de dominação sobre o kit é um cabo USB, ligado ao programador/depurador do kitdenominado STLINK, embutido na placa de circuito impresso do kit e ligado diretamente ao microcontrolador.Para nos conectarmos ao STLINK, usa-se um cabo padrão USB comum, com um conector tipo A - plug, ligado aoseu computador, e outro conector padrão mini-B - plug, ligado no kit, mais precisamente no receptáculo CN1 daplaca STM32F4-Discovery.

Page 7: arm.pdf

Oficina de Programação ARM 7

Uma vez feita essa conexão, o kit é energizado e o computador consegue conversar com o programador STLINK,conforme a necessidade do usuário.

Cabo de aplicação

Nesse momento é importante frisar as diferenças entre os tipos de porta USB da atualidade. Essas diferenças não sãotanto físicas, mas lógicas, a respeito de "quem" controla "quem" em uma conversação pela USB.Dois dispositivos conectados por uma interface USB assumem sempre papeis distintos do ponto de vista de unidadecontroladora (host) e unidade controlada (device). Seu computador pessoal tipicamente possui uma série de portasUSB tipo Host, podendo receber diversos acessórios que possuem portas USB tipo Device (como sua câmera digital,seu celular, seu mouse, pendrives, impressora, etc.).Até pouco tempo atrás, um dispositivo USB tipo Device nunca podia ser conectado a outra porta USB Device.Assim era impossível, por exemplo, que sua camera digital enviasse suas fotos diretamente para uma impressoraUSB ou para um PenDrive, sem o uso de um computador como intermediário. Isso mudou e recentemente existe umpadrão de portas denominado USB OTG, que tanto pode ser Host ou Device, conforme a programação feita em seucontrolador interno.Para felicidade geral, no nosso caso, a interface USB disponível no microcontrolador STM32F4 é do tipo OTG, ouseja, pode assumir tanto o papel de uma porta USB Host, como o de uma porta USB Device. Essa porta é oferecidano kit com um conector padrão USB micro-B, mais precisamente no receptáculo CN5 da placa doSTM32F4-Discovery.Para usufruir da interface USB OTG do STM32, podem ser utilizadas uma série de configurações de cabos, taiscomo:•• um cabo padrão micro-B - plug, ligado ao kit, e padrão A - receptáculo, ligado a um outro dispositivo externo

USB, como um pendrive ou câmera USB. Nessa configuração deveríamos programar a porta USB do STM32como controladora USB, ou seja, Host Port.

•• um cabo padrão micro-B - plug, ligado ao kit, e padrão A - plug, ligado ao seu computador. Nessa configuraçãodeveríamos programar a porta USB do STM32 como dispositivo USB, ou seja, Device Port.

A parte infeliz dessa história é que o padrão USB requer uma camada de comunicação complicada, com máquinas deestado e interpretadores de mensagens (denominada STACK USB) específicas para cada aplicação.Em nossas aventuras vamos aplicar um STACK USB que implementa um dispositivo tipo porta serial no STM32. Okit, ao ser ligado ao computador, irá se anunciar como um dispositivo PORTA SERIAL, permitindo que o PC possareceber dados conforme a necessidade. Para isso utilizaremos então a segunda opção de cabo mostradaanteriormente, com um plug USB A e um plug USB micro-B.Outras alternativas podem ser investigadas pelos usuários no futuro, bastanto obter outros cabos e STACKs USB,implantando as funcionalidades necessárias.

Ferramentas de softwareEm termos de ferramentas de software, para apoio à nossa oficina, surge um problema religioso, político/partidário efutebolístico. A questão é explicada a seguir e é basicamente ocasionada pelo fato que são necessários alguns itensbásicos para se desenvolver códigos/programas para um microcontrolador qualquer, e o usuário tem liberdade plenapara escolher o que quiser para isso.

Page 8: arm.pdf

Oficina de Programação ARM 8

A questão que nunca vai calar ou Gosto não se discuteA razão de tanto suspense ao redor da questão citada anteriormente é seu carácter de afinidade e gosto. E como dito no cancioneiro popular, gostonão se discute.

A questão: PARA QUAL PLATAFORMA DEVO ESCOLHER ESSES SOFTWARES ?

E as respostas: Intel x86? 32bits? 64bits? MACOS? IOS? Windows? Android? Linux? Qual sabor? Ubuntu? Suse? Fedora? Mint?

Dessas, não existe uma resposta única, mas de qualquer forma, nessa oficina optou-se por realizar algumas padronizações. Infelizmente (alguns irãotorcer o nariz) o direcionamento foi dado ao mainstream, ou seja, àquelas plataformas tradicionais. Nesse caso, sob arquitetura PC, com umMicrosoft Windows qualquer, em 32 bits.

Entretanto, encorajamos os alunos a desbravarem o terreno com outras plataformas. O mundo possui 7 bilhões de pessoas, das quais algumasdezenas de milhões são entusiastas por computação e nerds. Graças aos oráculos modernos (leia-se google, por exemplo) é possível obter inúmerasinformações dessas pessoas, a respeito de como fazer uma ou outra ferramenta rodar em um ou outro ambiente.

Para aqueles bravos navegadores modernos (não estou falando do Chrome ou Firefox, cáspita, estou falando de você, seu projeto de CristovãoColombo de meia tigela), que corajosamente e curiosamente vão aonde nenhum outro nerd esteve antes, por favor, explique aos demais que isso épossível e que pode ser feito de algum jeito. Tente usar no seu MacBook, compile os códigos em C do ARM dentro da sua calculadora HP, rodeemuladores de virtualizadores de máquinas virtuais de outros sistemas operacionais, mas mostre que funciona. Divulgue a sua palavra através de umwiki, uma coleção de links, ou how-to´s. A comunidade agradece.

A título de motivação para os Appleficcionados, existem inúmeras páginas na internet a respeito de toolchains e IDE's para ARM, inclusivealgumas específicas para o nosso STM32F4.

Tais itens básicos são:• Um editor de programa. Nesse, você usuário irá soltar sua imaginação, como um escritor de poemas, com zilhões

de linhas de código mal elaborado, mal documentado, confuso e repleto de erros, que você se gaba de ter feito em15 minutos, copiando um pedaço de algoritmo que encontrou na internet, do qual você não está dando nenhumcrédito, mas também não tem a mínima ideia de como funciona exatamente.

• Um pacote de softwares contendo: um compilador, um linkeditor e um montador. Esse pacote é responsável portentar realizar um milagre: converter aquele seu "poema de erros de sintaxe", em um conjunto executável deinstruções de um código de máquina. Mas não se iluda, citando novamente "Roger Che Guevarra", o aspiradormicrocontrolador do movimento de libertação: "-Errar é humano. Mesmo!", e tais ferramentas vão se regozijar emmostrar uma lista quilométrica de seus erros, sem nenhuma dó ou compaixão. De qualquer forma, para quem nãosabe o papel de cada um desses softwares "milagreiros", saiba que:• O compilador é responsável por converter seu código fonte, feito em uma determinada linguagem de

programação, em um código objeto (código de máquina quase completo). Ao longo desse código objeto sãochamadas uma ou outra função (que você não escreveu), mas que pertencem a algumas bibliotecas de funçõese rotinas criadas por terceiros.

• O linkeditor é responsável por enumerar tais funções de terceiros que você utilizou, buscando-as dentro dasbibliotecas de códigos objetos armazenadas no seu disco rígido. O linkeditor extrai todas elas e as separa paraserem incorporadas ao seu programa original.

• O montador, por sua vez, realiza o trabalho de concatenar o seu código objeto original junto dos códigosobjetos das funções que você chamou, criando uma imagem binária auto-contida, que possui tudo aquilo que omicroprocessador/microcontrolador precisa para ser inicializado, de forma a desempenhar as funções desejadassegundo seu programa

• Um software para gravação dos dados dentro da memória FLASH/EEPROM do microcontrolador, para sua posterior execução. Entretanto, cabe ressaltar que os programas não estão sujeitos somente a erros de sintaxe. Uma vez em execução, muito problemas nos programas são decorrentes de "erros algorítmicos". Como diz Roger: "- Te falei que errar é humano cáspita!". Seu algoritmo está essencialmente mal feito, mal projetado, ou seja, é uma droga. Para você tentar entender ou responder à sua pergunta: "- Onde foi que eu errei?", tais softwares utilizam o mesmo canal de comunicação usado na gravação, para monitorar e depurar seu código em tempo de execução. Às vezes, você conseguirá ver as bobeiras que fez, para corrigi-las, antes que outras pessoas vejam ou

Page 9: arm.pdf

Oficina de Programação ARM 9

sintam seus efeitos.

O erro é humano, puramente e lamentavelmente humano.Somente em carácter de curiosidade, os erros algorítmicos são muito mais comuns do que se imagina. Às vezes, eles não são sequer evidenciadosem testes, e permanecem transparentes (como o Predador) às vistas dos engenheiros, até que alguma porcaria aconteça.

Como exemplo, tente imaginar quantas traquitanas tecnológicas não despencaram do céu em Marte (para infelicidade dos marcianos). Isso porqueuma sonda que carregava alguma dessas tranqueiras foi brindada com uma pequena "bobagem de programador", ou como dizem os programadores,"um recurso extra não documentado" ou, como dizem os engenheiros programadores escritores de literatura, uma "licença poética algorítmica".

Marte ataca, com TV's.Adaptado de www.swankmoderndesign.com

Não acredita? Não lembra? Veja aqui esse e outros exemplos da criatividade humana em jogar dinheiro fora [18].

E não pense que esses erros são só dinheiro queimado na reentrada da atmosfera. Quero ver a nossa cara quando os marcianos se rebelarem,atirando na Terra toneladas de televisores ultrapassados deles (que antes eles jogavam no lixo comum) em cima de nossas cabeças, de propósitopelos inúmeros arremessos infelizes de carrinhos de controle remoto, jipes e satélites que não deram certo.

Piadas a parte, o aprendizado com os erros é comum na nossa natureza. É um processo de retroalimentação de experiências, onde se busca oaperfeiçoamento contínuo. Entretanto, como qualquer engenheiro de sistemas de controle irá afirmar, é importante direcionar seus esforços para queo sistema tente se estabilizar, ou seja, quando ele converge para uma situação de erro estável ou, o mais desejável, para uma condição sem erros.Caso contrário, se o seu sistema é completamente instável, e apresenta erros cada vez piores a cada suposta melhoria, você deve assumir que estáfalhando miseravelmente e procurar outra coisa para fazer, pois teimosia é burrice.

A seguir são itemizadas as ferramentas de software que serão utilizadas na oficina. Faça o download e se preparepara sua instalação, descrita mais adiante na metodologia.

STM32 ST-Link Utility

Programa para gravação de códigos dentro da pastilha do microcontrolador ARM STM32F4 do kit. Fornecido pelaprópria ST Microelectronics, gratuito. Pode ser obtido aqui [19]. Mais especificamente na aba Design support do siteda ST, procure na seção Software & Development Tools e baixe o arquivo ZIP do STM32 ST-Link utility. Os driverssozinhos para o Windows 7, Vista e XP estão num link abaixo na página, mas não são necessários se você pegar oprograma STM32 ST-Link utility.

STM Studio

Programa para monitoramento, em tempo de execução, de variáveis internas do microcontrolador SMT32. Fornecidopela própria ST Microelectronics, gratuito. Pode ser obtido aqui [20]. Vá na página, em Design support, Software &Development Tools, e baixe o arquivo ZIP do programa.Talvez seja necessário instalar também em seu computador o Java Runtime Environment (JRE) mais recente. O JREpode ser obtido aqui [21].

Page 10: arm.pdf

Oficina de Programação ARM 10

YAGARTO

O nome YAGARTO, por mais reptiliano que possa parecer, é um acrônimo para "Yet Another Gnu ARmTOolchain". E nesse ponto é importante ilustrar alguns conceitos e fatos importantes. Sigam-me os bons.

GNU

O que é GNU ? A única coisa fácil de se dizer a respeito de GNU é: "GNU is Not Unix" (uma explicação recursiva).Como assim? É um sistema operacional? É um pacote de programas? É uma filosofia de vida? É uma religião? É umbixo africano, mistura de bizão, alce e boi zebu? Bom, é isso e não é isso! E também não é SÓ isso!Na prática, num passado não tão distante, numa terra sem lei e sem plataformas, onde não existiam padrões paraabsolutamente nada, deletar um arquivo significava escrever um comando como del, ou erase, ou remove, ou killfile,ou o que quer que seja, dependendo do computador e sistema operacional que você estava utilizando. Isso era aindapior para quem fazia os programas, pois as ferramentas, rotinas e bibliotecas se amontoavam, com inúmeras sintaxes,formas, etc.Apesar desse caos instalado, a popularização de algumas plataformas e sistemas operacionais, principalmente doUnix (o próprio), fez com que vários homens de bem decidissem criar "O" sistema operacional, baseado no Unix,com pacotes de programas, rotinas e bibliotecas, TODOS com código fonte aberto, para o desempenho das maisdiversas funcionalidades, onde quer que estivessem sendo executados. O sistema operacional "de-facto" nunca viu aluz do dia de forma estável, mas vários desses pacotes são marcos na história da computação, como o "GNUbinutils", que contém uma série de programas para auxílio dos programadores, o GNU CC (compilador gcc), GNUZIP (compactador gzip), Linux (um kernel para sistema operacional nem um pouco famoso), entre outros.Esses homens de bem, inicialmente, sacrificaram um pouco a idéia da comercialização e proteção extrema dapropriedade intelectual dos programas, pregando que todo o software deve ser distribuído com seu código fonte, paraque possa ser adaptado e compilado em quaisquer plataformas. Assim um usuário de uma estação X, que estáhabituado a usar o programa gzip, pode contar com o MESMO gzip numa estação Y. Se numa estação Z o gzip nãoexistir, bingo! Pode-se adaptar e compilar o código fonte do gzip de X e Y para Z, e assim por diante.Se estivessemos num passado ainda mais distante, esses homens pregadores poderiam ser realmente pregados emcruzes ou incinerados. Mas graças à liberdade do nosso mundo moderno, apesar de chatos, essas pessoas são legais efundamentais. Conheça mais sobre o grão-chato-mestre Richard Stalmann, a free-software foundations, GPL, LGPLe outras coisas relacionadas nas páginas do Stallman [22] e nas páginas do Projeto GNU [23].Na nossa oficina vamos usar, sempre que possível, softwares GNU para fazer códigos e programas com licençasLGPL, e completamente ABERTOS E ESCANCARADOS para o público em geral. Sem pagar nada a ninguém, semdever nada a ninguém, mas mantendo o espírito do compartilhar para o benefício de todos.

Toolchain

Você pode estar dizendo: - Eu nunca ouvi falar de toolchain. Eu jamais usei um toolchain. Mas afinal, eu preciso deum "toolchain" para sobreviver?Toolchain é um nome comumente associado a uma caixa de ferramentas elementar de programação, específica paraalgum tipo de computador. Mais do que um compilador, linkeditor, montador, etc. um toolchain é um conjuntodessas ferramentas que foi elaborada para que um computador de arquitetura "X" pudesse fazer um código binárioexecutável para outro computador de arquitetura "Y", partindo de um código fonte único. É pelo mérito do toolchainque você, em seu Intel x86 com Microsoft Windows XP, pode fazer um programa executável para ummicrocontrolador ARM, que sequer possui um sistema operacional.Para que possamos fazer alguma coisa útil com nosso microcontrolador, precisamos encontrar um toolchain,específico para o microcontrolador de arquitetura ARM-CORTEX-M4, e que possa ser executado em nossocomputador pessoal. O YAGARTO é (mais) um desses. Mas existem toolchains ARM aos zilhares: para MACOS,para Linux, etc. Procure o seu e seja feliz.

Page 11: arm.pdf

Oficina de Programação ARM 11

A escolha pelo YAGARTO é devida, principalmente, à versão atualizada de seu compilador GNU CC (o GCC), naversão 4.6. Também é importante a presença do linkeditor GNU LD, o assembler GNU AS, entre outros programasde apoio. O YAGARTO possui também algumas partes da biblioteca padrão do ANSI C já prontas para nosso ARM.Infelizmente, a biblioteca do "printf", a "stdio.h" não faz parte dessa coleção.Você deve já estar se levantando da cadeira: - Perai professor, como eu vou fazer um programa em C sem printf?Pois é. Mas a resposta é que você quase nunca você vai precisar de printf num microcontrolador e, se precisar, sintomuito, você vai construí-lo na unha e usar a sua própria rotina printf. Certamente uma atividade lúdica e didática,que será explicada adiante na oficina. De qualquer forma, não se assuste pois esse e outros problemas de ausência debibliotecas tradicionais em sistema embarcados movimentam a vida de várias pessoas do meio, que criam bibliotecasalternativas, tal como a newlib [24].O YAGARTO você pode ver com mais detalhes aqui [25]. Obtenha os arquivos de instalação do YAGARTO Tools eYAGARTO GNU ARM toolchain aqui [26].

Outras ferramentas

IDEs e CooCox

Existem conjuntos completos dessas ferramentas citadas acima às quais chamamos de IDEs, ou IntegratedDevelopment Environments, ou numa tradução pouco amigável "eu tenho preguiça e quero tudo pronto funcionandopara mim".Basicamente são compostas por um ótimo editor de programas (daqueles que parecem sua tia professora chata doprimário, que corrigia você a cada duas palavras ao fazer um ditado na frente da classe), um toolchain de apoio, umsoftware de depuração e um software de gravação do programa, todos embutidos, junto de documentação dasbibliotecas, dos componentes, etc.Piadas a parte, são programas realmente excelentes, recomendados para empresas e pessoas que precisam de umambiente consistente de desenvolvimento, com suporte e apoio constantes fornecido por terceiros. Entretanto, emgeral, tais virtudes dessas IDEs se refletem em custos. Alguns pacotes pode sair por poucas centenas de dólares parauma licença, até alguns milhares de dólares.Felizmente, também existem IDEs de domínio público, mantidas por parentes dos homens de bem citadosanteriormente, tais como o CooCox, que pode ser obtido aqui [27]. O CooCox é uma IDE completa, baseada noambiente de desenvolvimento Java (bluarrgh) Eclipse, voltada para o ARM CORTEX, com suporte a ARMs devários fabricantes, vários cabos de programação, etc. Ele não acompanha um toolchain e, por isso, necessita de umpreviamente instalado, como o YAGARTO. Se decidir usar o CooCox, baixe o pacote do COIDE e o do COFlash.

Programmer's NotepadQuando você precisar de um editor simples, rápido, organizado, e que não fique te dando palpite e mostrando quevocê comete um erro a cada 4 teclas digitadas, procure um programa chamado Programmer's Notepad, disponívelaqui [28]. Enquanto Chuck Norris usa o VI [29] para escrever o kernel do Linux, direto em código de máquina, nósmortais podemos usufruir do Programmer's Notepad para fazer nossos programas em C ANSI de piscar LEDs.

MetodologiaA metodologia descrita a seguir mostra os passos necessários para desenvolver, compilar, gravar e executar umfirmware qualquer em nosso kit de microcontrolador. Siga a estrada dos tijolos de ouro adiante e seja feliz.

Page 12: arm.pdf

Oficina de Programação ARM 12

Instalação das ferramentas de software

Gravador e programador

ST Visual Programmer (sttoolset)

Instalação

A instalação é simples e, após finalizada, provê o ST VISUAL PROGRAMMER, capaz de gravar, apagar,configurar todos os atributos do STM32F407 do kit STM32F4-Discovery.Será instalado também o "ST Visual Developer", uma IDE com assembler e linker dedicados para outros produtos daST, como sua linha de microcontroladores de 8 bits.Como teste simples, ao final da instalação você pode ligar um cabo USB A - USB mini B entre seu computador e oconector CN1 do kit. O kit SMT3F4-Discovery deverá ser energizado e seu computador deverá reconhecer operiférico do cabo de programação ST-Link conectado na porta USB de seu computador. No gerenciador dedispositivos de seu micro, deverá estar instalado corretamente um periférico denominado "STMicroelectronicsSTLink dongle".

Teste de leitura com o ST Visual Programer

Com o kit conectado ao PC e os drivers do programador ST-Link corretamente instalados, será feito um teste de suaconectividade com o kit.Ao executar o programa ST Visual Programmer, na sua janela, acione o menu "Configure", opção "Configure STVisual Programmer". Escolha como hardware o item "ST-LINK", Port "USB", Programming Mode "SWD", Device"STM32F407xG".De volta a janela principal, acione o menu "Read", opção "All tabs (on active sectors if any)". Enquanto seucomputador faz um favor a você, lendo pela USB pouco mais do um megabyte contindo da memoria FLASH domicrocontrolador, pense como outros mercados fazem cópias piratas de produtos comerciais (de empresas famosascomo Sony, Kingston, etc.), roubando os programas contidos nos microcontroladores desses produtos, pormecanismos semelhantes a desse cabo de programação. Copiando as placas de circuito e gravando os firmwares"roubados", obtem-se cópias quase idênticas. Por isso, no futuro, proteja seu código dentro do seu microcontroladore sua propriedade intelectual.Esse método de lidar com a programação do microcontrolador, utilizando um cabo específico, é chamado ICP (InCircuit Programming). No nosso caso, o ICP é feito utilizando-se o protocolo SWD (Serial Wire Debug), umaespécie de JTAG.Outro método de programação conhecido é o IAP (In Application Programming), onde o próprio microcontroladorfica responsável por receber (por ethernet, serial, etc.) e programar seu próprio código, como as funções deatualização de firware de alguns roteadores wireless.Uma vez lida a memória de seu microcontrolador, observe na tela as tabuletas "PROGRAM MEMORY", "OTPMEMORY" e "OPTION BYTE".Em "PROGRAM MEMORY" são mostrados byte a byte, em hexadecimal, o conteúdo da memória domicrocontrolador. Note que o endereço do primeiro byte da memória FLASH do STM32F4 é 0x08000000 (umendereço de 32 bits), e o último 0x80FFFFFF, ou seja, 1048576 bytes.Perceba que no início dessa região de memória existe o programa, codificado em binário, segundo a linguagem demáquina da arquitetura ARM utilizada, e completamente initeligível para nós humanos. Se você entende plenamenteessa linguagem, comunique ao seu professor, e se prepare para virar um experimento de laboratório.Como curiosidade, procure na memória de programa regiões que possuam strings (conjuntos de letras) visíveis, comalguma mensagem de texto. Essas mensagens foram escritas no programa para algum tipo de comunicação com o

Page 13: arm.pdf

Oficina de Programação ARM 13

usuário, no caso para as mensagens de identificação do dispositivo pela USB, como será visto adiante.Veja ainda que o programa que está inicialmente escrito na memória FLASH do kit é relativamente pequeno e que asposições de memória não inicializadas ou gravadas estão repletas de 0xFF, ou seja, repleta de bits 1. Isso é umacaracterística interessante das memórias FLASH, que quando são apagadas, na realidade são preenchidas de bits '1'.O processo de gravação consiste então no preenchimento dos zeros, quando necessários. Outra coisa interessante daFLASH é que é impossível apagar um byte individual de sua memória. O apagamento é feito por setores, contendocentenas a milhares de bytes (conforme sua organização interna) de uma única vez. Atenção que as memóriasFLASH (incluindo a do seu pendrive querido) suportam um número máximo de ciclos de apagamento. No nossocaso, você pode apagar a FLASH do microcontrolador e gravá-la novamente cerca de 10 mil vezes. Roger disse queerrar é humano. Se você for o espécime mais confuso da raça, considerando que faça de 30 a 50 ciclos de gravaçõespor dia, você pode fazer isso por quase um ano para arrumar seu programa repleto de erros, até conseguir algo querealmente funcione no seu microcontrolador.Em outra tabuleta, note que é mostrada a "OTP MEMORY", em outras palavras, "One time Programming Memory",ou para os desavisados, essa é uma memória FLASH do microcontrolador que já vem apagada de fábrica (somentecom '1's, lembra-se ?), e pode ser escrita pelo usuário programador SOMENTE UMA VEZ. Como na vida, para essamemória não existe UNDO. Uma vez gravada qualquer informação em seu interior, já era, ela não poderá mais serapagada ou alterada. Esse tipo de memória é muito comum em microcontroladores, na forma de poucos bytes, paragravação de informações UNÍVOCAS do hardware, por exemplo, seu número de série, o MAC ADDRESS de umainterface de rede, um ID de um dispositivo Bluetooth, etc.Em "OPTION BYTE" são mostrados alguns bits específicos do microcontrolador. Esses bits configuram seu modode operação, boot, proteção de leitura da memória, proteção de setores específicos da FLASH, etc. Algunsmicrocontroladores possuem conjuntos bastante vastos de bits internos de configuração. No caso do nossomicrocontrolador, existem apenas 32 bits, organizados entre cerca de 10 a 12 opções. Cuidado com o que você alteranessa tabuleta: seu código poderá ficar gravado para sempre no microcontrolador (sem retorno), seumicrocontrolador pode ficar travado sem conseguir fazer o boot, ou você pode desligar permanentemente a interfacede leitura/gravação (SWD) pelo cabo de programação. Caso você esteja com tendências auto-destrutivas, umafórmula para a desgraça, por exemplo, é configurar a opção RDP com grau de proteção 2. Seu microcontrolador serálacrado com o programa que houver em seu interior, sem nenhuma possibilidade de ICP.Interessante notar que qualquer operação feita com o microcontrolador usando o ST Visual Programmer faz com queo mesmo entre em estado halt ou parada. Para que o programa em seu interior seja executado, deve ser feito um resetpor meio do push-button B2 (Reset) da placa.Para finalizar, acione o menu "File", opção "Save As", e grave em disco o conteúdo lido do microcontrolador do seukit. Atente para salvar o arquivo no formato Intel Hex (.HEX), e com algum nome sugestivo, como"MeuQueridoFirmwareOriginaldeMeuKitSMT32.HEX".

Teste de apagamento e escrita com o ST Visual Programer

Escolha a tabuleta "PROGRAM MEMORY" e acione o Menu "Erase", opção "Active Sectors". Se todos os setores àdireita estiverem marcados, o dispositivo deverá fazer o "Mass erase" de toda a FLASH.Após alguns segundos, note que ao resetar a placa do kit, o programa originalmente embarcado não está presente.Nesse momento, você tem em suas mãos apenas um artefato de decoração, sem nenhuma inteligência embutida. Enão, esse artefato não serve para seu Feng-Shui.Carregue novamente a imagem do firmware gravado anteriormente em disco no arquivo .HEX e experimente fazer agravação de volta ao seu kit, acessando o menu "Program", opção "Active sectors".Evite usar a opção "All tabs" do menu "Program", pois isso implicará na escrita do setor "OTP MEMORY" e dosetor "OPTION BYTES" e, caso esteja algo configurado errado, as chances de alguma bobagem acontecer tendem aoinfinito, segundo Murphy, e você poderá ter seu kit "tijolado", do inglês "bricked".

Page 14: arm.pdf

Oficina de Programação ARM 14

Atenção: a palavra "bricked" não existe no dicionário da lingua inglesa. Esse termo foi popularizado pelos xeretas eentusiastas de eletrônica que, ao gravarem de forma errada um firmware em um dispositivo qualquer (por IAP),acabam tornando esse dispositivo imprestável, possivelmente podendo ser utilizado como um tijolo em umaconstrução. Por sinal, um tijolo muito ruim, como diz Oxentijolo Bixim, rei dos tijolos baianos.Se tudo correr bem na escrita do firmware, após um reset você deve verificar que o kit passa a funcionar comoanteriormente.

SMT32 ST-Link Utility

Esse programa possui as mesmas funcionalidades do ST Visual Programmer, incluindo a possibilidade de se acessaros registradores do núcleo ARM em tempo de execução e fazer o donwload de regiões de dados da memória SRAMou FLASH com endereços e tamanhos variados.A única diferença é que esse aplicativo utiliza como arquivos de entrada imagens binárias no formato .BIN ao invésde arquivos no formato Intel .HEX

Debugger

STM Studio

Instalação

Como pré-requisito, talvez seja necessário instalar o Java Runtime Environment versão 1.6 ou posterior.A instalação do STM Studio é simples e, após finalizada, provê um software capaz de se conectar ao programadorSTLINK e obter, em tempo de execução, variáveis da memória de dados e programa do microcontrolador, conformedesejado.Esse programa é gratuito e oferece aos usuários desenvolvedores a chance de acompanhar a evolução de seusalgoritmos de uma forma gráfica e visual. Ele não substitui um debugger ou depurador, que é muito mais apropriadopara detecção de erros na concepção dos algoritmos.A apresentação do programa e suas características será feira posteriormente, após criar, compilar e gravar seuprimeiro programa no microcontrolador do kit.

Compilador, linkeditor e montador

YAGARTO

Instalação

A instalação do YAGARTO é simples e objetiva. Aceite tudo e seja feliz.Ao final da instalação é criada uma pasta no menu iniciar com uma série de atalhos para a internet de forma a seobter mais informações a respeito dos pacotes integrantes do YAGARTO, entre eles: um pacote binutils, o pacote dosuper-compilador-linkador GCC e o pacote do GDB, o GNU Debugger.

AgradecimentosEssa oficina só foi possível pela colaboração de algumas instituições. Nosso agradecimento a todos pelo interesse,auxílio e apoio dedicados.

Page 15: arm.pdf

Oficina de Programação ARM 15

POLI - Elétrica [30] Depto. de Engenharia deEnergia e Automação Elétricas [31]

ST MicroelectronicsEscritório São Paulo/Brasil [32]

KarimexComponentes Eletrônicos [33]

É importante agradecer às pessoas que incentivaram e auxiliaram na criação dessa oficina:• Prof. Dr. Giovanni Manassero Junior - PEA/EPUSP [34].•• Prof. Dr. Luiz Antonio Barbosa Coelho - PTC/EPUSP.•• Eng. Bruno Fontes Montanari - ST Microelectronics/Brasil.•• Eng. Elcio de O. Paulo - Karimex.Outros agradecimentos importantes de serem mencionados• Chuck Norris. - Se chuck não fosse citado, ele apareceria nos meus sonhos para me lembrar disso.

•• Predator.

ReferênciasAtenção: se você clicar nas referências abaixo, você sairá dessa página e poderá ficar completamente perdido.

Sugere-se que você segure a tecla CONTROL de seu computador (não sei que tecla se pressiona nos MACs) eclique nos links abaixo, para que eles sejam abertos em outras abas ou janelas de seu navegador. De qualquer forma,

a tecla de voltar do seu navegador é seu pastor e ela não te decepcionará.

Culturais (tipo [c XX])

[1] Douglas Adams, autor de literatura de ficção científica nonsense, incluindo a série de livros do Guia do Mochileiro das Galáxias e esquetes doMonty Python.

[2] Eoin Colfer, autor de literatura infantil, incluindo a série de livros Artemis Fowl e o espólio do Guia do Mochileiro das Galáxias de DouglasAdams.

[3] http:/ / www. youtube. com/ watch?feature=player_detailpage& v=1TqBSI8ZBzQ[4] WashingMachine Trash Metal (http:/ / www. youtube. com/ watch?feature=player_detailpage& v=1TqBSI8ZBzQ), "Oh my god, it's a brick

!" ou "Por que a skynet vai acabar com todos nós".[5] Roger Next Gen (http:/ / www. webderobot. com/ wp-content/ uploads/ 2011/ 11/ R2-D2-Vacuum-Cleaner. jpg), Microcontrolador Roger

instalado em sua próxima plataforma.[6] ARM Limited, desenvolvedora das arquiteturas popularmente chamadas de ARM. Veja também o verbete da ARM Limited em inglês e sua

homepage oficial (http:/ / www. arm. com).[7] Arquitetura ARM, veja também o verbete wiki em inglês.[8] Application-specific integrated circuit, Circuito integrado de aplicação específica.[9] List of ARM microprocessor cores, Wikipage a respeito dos tipos de núcleos ARM.[10] JTAG - Joint Test Action Group, Wikipage do padrão de interface de depuração e programação, incluindo sua versão light de 2 fios SWD.[11] STM32F4-Discovery (http:/ / www. st. com/ internet/ evalboard/ product/ 252419. jsp), homepage oficial do kit.[12] ST Microelectronics, Wikipage da ST Microelectronics[13] ST Microelectronics Homepage (http:/ / www. st. com), Homepage oficial da ST Microelectronics.[14] MEMS - Microelectromechanical systems, tecnologia de micromáquinas para sensores.[15] Padawan, o manezon Jedi, Aprenda sobre a hierarquia Jedi. Também poderia se aplicar a usuários e programadores de microcontroladores.[16] STM32F407VG (http:/ / www. st. com/ internet/ mcu/ product/ 252140. jsp), página do microcontrolador do kit SMT32F4-Discovery.[17] Wiki ARM Cortex-M, Wikipage do núcleo ARM CORTEX.[18] Some famous software bugs (http:/ / www. cse. lehigh. edu/ ~gtan/ bug/ softwarebug. html#orbitercrash), uma lista de alguns problemas de

software e provas da estupidez humana.[19] http:/ / www. st. com/ internet/ evalboard/ product/ 251168. jsp[20] http:/ / www. st. com/ internet/ evalboard/ product/ 251373. jsp[21] http:/ / www. oracle. com/ technetwork/ java/ javase/ downloads/ index. html[22] http:/ / en. wikipedia. org/ wiki/ Richard_Stallman[23] http:/ / www. gnu. org/[24] http:/ / sourceware. org/ newlib/[25] http:/ / www. yagarto. de[26] http:/ / www. yagarto. de/ #download[27] http:/ / www. coocox. org/[28] http:/ / www. pnotepad. org/

Page 16: arm.pdf

Oficina de Programação ARM 16

[29] http:/ / pt. wikipedia. org/ wiki/ Vi[30] http:/ / www. poli. usp. br[31] http:/ / www. pea. usp. br[32] http:/ / www. st. com[33] http:/ / www. karimex. com. br[34] http:/ / stoa. usp. br/ manassero/

Ferramentas de apoio (tipo [t XX])

Homepages, artigos e documentos (tipo [g XX])

ContribuiçõesAdicione também sua contribuição a essa página. Para colocar sua assinatura, no modo de edição do wiki, após aseção 'Autores', coloque um asterisco (*), seguido por um espaço e quatro símbolos de til (~) em sequencia, naforma:

* ~~~~

Autores• Eduardo Lorenzetti Pellini (Prof. Dr.) 14h52min de 17 de dezembro de 2011 (BRST) Homepage de Eduardo

Pellini no STOA USP (http:/ / www. stoa. usp. br/ elpellini).

Page 17: arm.pdf

Article Sources and Contributors 17

Article Sources and ContributorsOficina de Programação ARM  Source: http://wiki.stoa.usp.br/index.php?oldid=15775  Contributors: Elpellini

Image Sources, Licenses and ContributorsArquivo:RogerNextGen.jpg  Source: http://wiki.stoa.usp.br/index.php?title=Arquivo:RogerNextGen.jpg  License: unknown  Contributors: ElpelliniArquivo:OficinaPredador.jpg  Source: http://wiki.stoa.usp.br/index.php?title=Arquivo:OficinaPredador.jpg  License: unknown  Contributors: ElpelliniArquivo:stm32f4_discovery.jpg  Source: http://wiki.stoa.usp.br/index.php?title=Arquivo:Stm32f4_discovery.jpg  License: unknown  Contributors: ElpelliniArquivo:MarsAttackTVs.jpg  Source: http://wiki.stoa.usp.br/index.php?title=Arquivo:MarsAttackTVs.jpg  License: unknown  Contributors: ElpelliniArquivo:POLIELETRICA.jpg  Source: http://wiki.stoa.usp.br/index.php?title=Arquivo:POLIELETRICA.jpg  License: unknown  Contributors: ElpelliniArquivo:PEA.jpg  Source: http://wiki.stoa.usp.br/index.php?title=Arquivo:PEA.jpg  License: unknown  Contributors: ElpelliniArquivo:STBR.jpg  Source: http://wiki.stoa.usp.br/index.php?title=Arquivo:STBR.jpg  License: unknown  Contributors: ElpelliniArquivo:KARIMEX.jpg  Source: http://wiki.stoa.usp.br/index.php?title=Arquivo:KARIMEX.jpg  License: unknown  Contributors: Elpellini

LicençaAttribution-Share Alike 3.0http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/