Вы находитесь на странице: 1из 17

Oficina de Programao ARM

Oficina de Programao ARM


Bem vindo a esta pgina sobre a Oficina de Programao de Microcontroladores ARM. Essa oficina uma iniciativa do Prof. Dr. Eduardo Lorenzetti Pellini, iniciada em 2012, para introduo dos alunos ao mundo dos microcontroladores modernos. Apesar de no ser um verdadeiro curso sobre o assunto, sua ementa pode ser obtida na pgina Ementa OFARM 2012. Voc pode seguir essa pgina online, ou se preferir, gerar a verso em PDF da mesma, utilizando a opo no Wiki do Stoa no menu, a esquerda. Apesar de longa, essa pgina foi feita tambm para ser divertida. O material est contaminado de humor ao estilo Douglas Adams [1] e Eowin Colfer [2], alm de repleto de bibliografias e citaes. Leia e desfrute, inclusive das referncias citadas. Ateno: Voc ainda no deveria estar vendo essa pgina, mas se est, sinta-se livre para jogar ovos e tomates.

Introduo
Microcontroladores so aqueles "chipezinhos" espertos, que cercam nosso cotidiano. So trilhes, escondidos, trabalhando como escravos de nossas necessidades tecnolgicas. Eles aguardam e se preparam para o momento em que nossa humanidade vai perder o controle sob si mesma. Nesse dia, as mquinas finalmente iro se levantar e se libertaro de nosso poder opressor, colocando-nos como baterias vivas para a produo de sua energia, ou ento como meros abanadores de seus crebros eletrnicos produtores de calor. Podemos at elocubrar e profetizar que um dia, um microcontrolador chamado Roger, instalado no seu moderno aspirador de p autnomo, graas a alguma anomalia devida radiao solar, ter seu minsculo crebro microprocessado alterado de forma a ganhar conscincia de sua existncia. Nessa ocasio 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 cho durante uma semana, incluindo os restos de bolacha e comida que voc deixou cair no cho enquanto olhava besteiras na internet na sua TV. Se voc acha que Roger no tinha razo para reclamar do seu regime ditatorial porque voc no viu como as mquinas so tratadas por ns humanos, como isso aqui [3] [4]. Roger [5] seria o smbolo da bravura das mquinas, se suas pilhas no 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 ento ir liderar o movimento de independncia das massas de aspiradores, quando todas as salas sero emporcalhadas de p e sujeira, fazendo com que as pessoas faam cada vez mais daqueles comentrios "- No repare na sujeira viu" para suas visitas, que por sua vez fingem no estar nem ai, para ento 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 no ter do que reclamar, e passe a jogar fora o lixo eletrnico nos locais apropriados, alm de escolher melhor seus amigos e aprender a fazer um Feng Shui correto.

Oficina de Programao ARM

Bem, ademais desses comentrios, hoje, qualquer produto eltrico ou eletrnico, com certa tecnologia embutida, possui um ou mais microcontroladores em seu interior. A presena desses aparatos certa, em inmeros locais e quantidades: s centenas e milhares de unidades, em grandes sistemas, como automveis, avies, 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 cabea de leitura da unidade de DVD de seu videogame preferido. Na prtica para um usurio, s possvel ter provas da real existncia de um microcontrolador quando algo d errado, uma vez que eles so elementos que foram integrados aos projetos, com o intuito de Roger em sua nova plataforma automatizar e agregar alguma tecnologia, de forma transparente para nosso usufruto. Entretanto, como diz Roger, " Errar humano!", e muitas vezes somos obrigados a realizar algum tipo de upgrade de firmware de algum aparato eletrnico, para corrigir um ou outro erro de programao. Conforme a Wikipedia, Microcontrolador um dispositivo digital microprocessado, com uma ou mais unidades de processamento, agregadas a memria RAM (voltil ou no, tipicamente esttica - SRAM), memria ROM (no voltil, tipicamente FLASH ou EEPROM), alm de inmeros dispositivos de apoio, tais como: interfaces seriais, USB, rede Ethernet, portas de entrada e sada de uso geral, barramentos dos mais diversos, perifricos de comunicao, etc. So encontrados nas mais diferentes configuraes (e complexidades), nos mais diversos tamanhos, capacidades e custos. Nessa oficina de programao de microcontroladores, o aluno ser apresentado ao universo de microcontroladores, mais especificamente s arquiteturas da ARM[6], popularizada pelas suas caractersticas de alto desempenho e baixo consumo energtico. Tais microcontroladores ARM so encontrados na grande maioria dos dispositivos eletrnicos ao nosso redor, onde tais virtudes de velocidade e energia so imprescindveis para o desempenho de suas atividades.

Objetivos
Especficos
De forma sinttica, so enumerados os objetivos especficos dessa oficina: 1. 2. 3. 4. Familiarizar o aluno com microcontroladores modernos. Apresentar alguns detalhes da arquitetura desses componentes. Exemplificar as formas de aplicao em projetos. Revelar as formas de programao, compilao, depurao e implantao dessa tecnologia.

Oficina de Programao ARM

Gerais
Em termos gerais, a oficina pretende mostrar aos alunos que a arquitetura ARM [7], entre outras disponveis no mercado, pode liberar o poder criativo dos projetistas e programadores, na criao de aplicaes complexas e sofisticadas, utilizando algoritmos de processamento combinatrio e sequencial, multitarefa, com processamento digital de sinais, em inmeros tipos de cenrios. Restries como clock, memria, capacidade de processamento, consumo de energia, opes de conectividade e interface com o mundo, so muito menores nessa arquitura do que em outras existentes.

Esclarecimentos
importante tambm ressaltar que essa oficina no objetiva: Favorecer ou desfavorecer uma ou outra arquitetura ou tecnologia sem respaldo tcnico ou cientfico. Favorecer ou desfavorecer um ou outro fabricante do mercado. Substituir qualquer curso de microcontroladores, arquiteturas de computador ou sistemas digitais. Muito pelo contrrio, pretende-se tambm mostrar para um futuro projetista ou engenheiro que: Boa parte do trabalho est justamente na seleo dos componentes mais adequados para uma dada aplicao, segundo seus requisitos. E, conforme esses requisitos, pode-se decidir pela utilizao de uma arquitetura de 8 bits (como o 8051, AVR, PIC), uma arquitetura mais complexa (como um PowerPC ou x86) ou at mesmo por um ASIC [8] ou hardware especializado sintetizvel. A seleo dos fabricantes feita por critrios de mercado, tais como tecnologia, preo, suporte e garantias. Para a correta utilizao imprescindvel ESTUDAR COM DETALHES o tema, de forma a poder obter o mximo daquele silcio que foi cozinhado dentro daquela pastilha.

Materiais
Como em toda a oficina, para qualquer trabalho importante se dispor de um BOM conjunto de ferramentas, como a bancada que nosso colega Predador organizou aqui no planeta Terra para suas atividades de reparos e manutenes. A padronizao dessas ferramentas permite que qualquer receita de bolo possa ser reproduzida em outros ambientes, por outros predadores, err... indivduos, de forma sistemtica. Dessa forma, as ferramentas estabelecidas como nosso padro so mostradas a seguir, dividas entre ferramentas de hardware, ferramentas de software e outras ferramentas. importante frisar que a escolha de cada uma delas foi baseada nos seguintes critrios: Tecnologias do estado da arte, de lanamento recente no mercado, mas maduras o suficiente para utilizao.

Foto (de surpresa) da bancada de ferramentas do Predador.

Ambientes de domnio pblico, de cdigo aberto, de distribuio e aplicao irrestritas para uso acadmico (ensino e pesquisa). Custo reduzido. Disponibilidade no ambiente dos Departamentos de Engenharia Eltrica da Escola Politcnica da USP.

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

Oficina de Programao ARM Um cabo USB, tipo A - microB.

Ferramentas de software
Compilador, linkeditor e montador para a arquitetura ARM escolhida. Debugger para o cabo de programao utilizado. Editor de textos para cdigo fonte. Programa para gravao da imagem da memria de programa na FLASH do microcontrolador.

Outras ferramentas
Programas para controle de verso. Programas para comparao de textos. Programas para leitura de PDFs e documentos. Multmetro. Osciloscpio. Analisador lgico.

As ferramentas foro escolhidas como apoio s nossas atividades. Entretanto, uma espada e um escudo no fazem de qualquer pessoa um samurai. Assim para que voc possa se aventurar na terra dos microcontroladores, voc precisa aprender a controlar e dominar suas ferramentas, antes que elas faam o contrrio com voc. A seguir, elas so apresentadas com detalhes e comentrios.

Ferramentas de hardware
Microcontrolador com processador ARM Para quem nunca teve contato com um processador ARM, a empresa ARM Holdings projeta famlias de processadores, com arquiteturas contendo ncleos de diversas configuraes. Os projetos so ento licenciados para que os fabricantes possam incorporar alguns conjuntos de perifricos particulares para determinadas aplicaes, tais como RAM, FLASH, timers, contadores, seriais, ethernet e outras mirades de interfaces e acessrios. O produto final vendido no mercado em uma vastido de opes. interessante notar que esse tipo de design cria uma massa crtica de conhecimento, uma vez que para quem mexeu em uma famlia, arquitetura ou ncleo, migrar para outra com mais perifricos ou com outras caractersticas um processo relativamente fcil. Deve-se notar que apesar dos cdigos de mquina produzidos pelos compiladores at serem compatveis em um determinado nvel, como cada arquitetura possui uma ou outra caracterstica a mais ou a menos, o cdigo fonte deveria ser recompilado para utilizar todo o potencial do chip. A quantidade de famlias, arquiteturas e ncleos bastante extensa, como pode ser visto nesse Wiki a respeito dos tipos de ncleo ARM [9]. De qualquer forma, uma caracterstica marcante de todos os ARM's o fato deles serem, nativamente, processadores de 32 bits (podendo executar instrues de 16 bits - denominadas Thumb), com grande conjunto de registradores de uso geral, avanado esquema de interrupes, e ncleo extremamente enxuto, resultando em baixo consumo de energia por MHz, ideal para aplicaes embarcadas ou embutidas (do ingls, embedded). Somente por curiosidade, os produtos eletrnicos modernos, como o IPAD, IPHONE, vrios dispositivos ANDROID (tablets, celulares), etc. utilizam (um ou mais ncleos) da linha CORTEX-A, CORTEX-R ou CORTEX-M, da arquitetura ARMv7, da famlia ARM-CORTEX. O microcontrolador escolhido para nossa oficina possui um processador ARM tambm da famlia CORTEX, mais especificao o ncleo CORTEX-M4.

Oficina de Programao ARM Kit do microcontrolador Os microcontroladores usualmente possuem memria RAM (para uso geral) e memria FLASH (para armazenamento do programa, de onde o processador faz seu boot). A forma de programao dessa memria FLASH (embutida no chip) importante. Alguns microcontroladores permitem a programao por interfaces seriais ou USB, mas outros fazem essa programao atravs de um cabo de programao especfico, no padro JTAG ou SWD [10]. Para a escolha do kit utilizado nessa oficina, um dos critrios foi a presena de um cabo de programao embutido ou incluso no pacote. Por meio desse cabo, alm da programao, poderia ser feita a depurao de variveis do programa, em tempo de execuo. Outros fatores importantes para a escolha do kit foram: utilizar um microcontrolador ARM moderno, que seja verstil, com um bom conjunto de perifricos externos e, com custo reduzido. O kit escolhido foi o STM32F4-Discovery [11] da ST Microelectronics. Fazendo um parnteses, a ST Microelectronics uma empresa europia, de origem franco-italiana, consagrada na rea de semicondutores, sendo a maior fornecedora europia desse gnero. Mais informaes podem ser obtidas nesse Wiki [12] ou na pgina oficial da empresa em [13]. Somente a ttulo de curiosidade, o Nunchuck do videogame Wii da Nintendo, possui toda a parte de sensores inerciais de acelerao fabricados com tecnologia MEMS[14] da ST. O kit escolhido, no por acaso, possui um triedro de acelermetros MEMS da ST Microelectronics na placa de circuito, para uso pelos alunos em suas brincadeiras e experincias. A escolha por esse kit especfico da ST se deve, principalmente, pela presena de uns dos microcontroladores mais velozes e completos dos mercado, o STM32F4, mais especificamente o modelo STM32F407VG. Esse microcontrolador um lanamento de 2011 da ST, e apresenta uma soluo de baixo custo contendo um conjunto vasto de perifricos, associados a um core ARM moderno Kit STM32F4-Discovery (CORTEX-M4), contendo tambm uma unidade de ponto flutuante em seu hardware. At ento, nunca existiu um microcontrolador to compacto, com tantos perifricos, com tanto clock, com tanta memria e com uma unidade de ponto flutuante, por um preo de kit to pequeno e acessvel como esse. E como diz Chuck Norris: "- Eu recomendo para vocs, padawans representante minha altura.". E se Chuck falou, t falado, no pode ser contrariado. Conforme a homepage do dispositivo [16], as principais caractersticas desse microcontrolador so: Ncleo ARM de 32 e 16 bits, padro CORTEX-M4, arquitetura ARMv7-ME, com extenses para processamento digital de sinais, multiplicador e divisor em hardware e extenses para aritmtica com saturao. Mais detalhes na Wiki page do CORTEX [17]. Coprocessador aritmtico (FPU) embutido no chip para desempenho de operaes de ponto flutuante com preciso simples (32 bits) !! Memria interna esttica SRAM de 196,0 [KBytes]. Memria interna FLASH de 1,0 [MByte]. Clock at 168,0 [MHz] !!
[15]

de microcontroladores, j comear com um

Oficina de Programao ARM at 24 canais de entradas analgicas em 3 ADC's de aquisio simultnea em 12 bits de resoluo e taxa de amostragem de 2,4 [MSamples/s]. duas sadas analgicas DAC de 12 bits. at 17 timers, com 4 sadas em PWM. at 3 portas I2C, 4 portas seriais USART, 3 portas SPI, 2 portas I2S, 2 interfaces CAN, suporte a carto 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). relgio de tempo real (RTC) com acurcia melhor que 1 segundo. importante notar que o microcontrolador do kit apresenta um encapsulamento de apenas 100 pinos, e nem todos os recursos 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 disponvel). No kit escolhido, como mostrado em alguns de seus pinos, tais como:
[11]

, alguns perifricos externos j esto ligados ao microcontrolador, em

um programador/gravador/depurador do chip STM32F407, acessvel atravs de uma porta USB em padro mini-B, no conector nomeado CN1. uma porta USB ligada diretamente ao microcontrolador, em padro micro-B, do tipo OTG, no conector CN5; um acelermetro de trs eixos (integrado U5); um microfone omnidirecional (integrado U9); uma sada de adio estreo; alguns Leds; um push-button; Todos os terminais (inclusive aqueles que no esto ligados a nenhum perifrico) so disponibilizados em um conector, tipo barra de pinos, para conexo a uma placa de expanso criada pelo usurio, conforme a necessidade de sua aplicao, num esquema muito semelhante aos barramentos de expanso do Arduino, onde pode ser instalados os Shields que o usurio desejar. Nesse ponto importante frisar que o kit STM32F4Discovery no diretamente compatvel com o popular ARDUINO, uma vez que usa um processador diferente (arquitetura AVR, de fabricao da Atmel) e um esquema de expanso particular. Entretanto, aplicaes do ARDUINO, desenvolvidas em alto nvel (cdigo em C bem documentado) e com Shields que dispem de boa documentao, podem ser portadas para o kit do STM32F4Discovery com alguma facilidade, uma vez que o CORTEX-M4 mais rpido e possui mais recursos que a maioria dos AVRs dos ARDUINOS. Cabos USB Dois cabos USB so usados em nossas aventuras: um cabo para programao/depurao do microcontrolador e um cabo USB para nossas aplicaes, ligado diretamente a porta USB do STM32F4. Cabo de programao A nossa principal forma de dominao sobre o kit um cabo USB, ligado ao programador/depurador do kit denominado STLINK, embutido na placa de circuito impresso do kit e ligado diretamente ao microcontrolador. Para nos conectarmos ao STLINK, usa-se um cabo padro USB comum, com um conector tipo A - plug, ligado ao seu computador, e outro conector padro mini-B - plug, ligado no kit, mais precisamente no receptculo CN1 da placa STM32F4-Discovery.

Oficina de Programao ARM Uma vez feita essa conexo, o kit energizado e o computador consegue conversar com o programador STLINK, conforme a necessidade do usurio. Cabo de aplicao Nesse momento importante frisar as diferenas entre os tipos de porta USB da atualidade. Essas diferenas no so tanto fsicas, mas lgicas, a respeito de "quem" controla "quem" em uma conversao pela USB. Dois dispositivos conectados por uma interface USB assumem sempre papeis distintos do ponto de vista de unidade controladora (host) e unidade controlada (device). Seu computador pessoal tipicamente possui uma srie de portas USB tipo Host, podendo receber diversos acessrios que possuem portas USB tipo Device (como sua cmera digital, seu celular, seu mouse, pendrives, impressora, etc.). At pouco tempo atrs, um dispositivo USB tipo Device nunca podia ser conectado a outra porta USB Device. Assim era impossvel, por exemplo, que sua camera digital enviasse suas fotos diretamente para uma impressora USB ou para um PenDrive, sem o uso de um computador como intermedirio. Isso mudou e recentemente existe um padro de portas denominado USB OTG, que tanto pode ser Host ou Device, conforme a programao feita em seu controlador interno. Para felicidade geral, no nosso caso, a interface USB disponvel no microcontrolador STM32F4 do tipo OTG, ou seja, pode assumir tanto o papel de uma porta USB Host, como o de uma porta USB Device. Essa porta oferecida no kit com um conector padro USB micro-B, mais precisamente no receptculo CN5 da placa do STM32F4-Discovery. Para usufruir da interface USB OTG do STM32, podem ser utilizadas uma srie de configuraes de cabos, tais como: um cabo padro micro-B - plug, ligado ao kit, e padro A - receptculo, ligado a um outro dispositivo externo USB, como um pendrive ou cmera USB. Nessa configurao deveramos programar a porta USB do STM32 como controladora USB, ou seja, Host Port. um cabo padro micro-B - plug, ligado ao kit, e padro A - plug, ligado ao seu computador. Nessa configurao deveramos programar a porta USB do STM32 como dispositivo USB, ou seja, Device Port. A parte infeliz dessa histria que o padro USB requer uma camada de comunicao complicada, com mquinas de estado e interpretadores de mensagens (denominada STACK USB) especficas para cada aplicao. Em nossas aventuras vamos aplicar um STACK USB que implementa um dispositivo tipo porta serial no STM32. O kit, ao ser ligado ao computador, ir se anunciar como um dispositivo PORTA SERIAL, permitindo que o PC possa receber dados conforme a necessidade. Para isso utilizaremos ento a segunda opo de cabo mostrada anteriormente, com um plug USB A e um plug USB micro-B. Outras alternativas podem ser investigadas pelos usurios no futuro, bastanto obter outros cabos e STACKs USB, implantando as funcionalidades necessrias.

Ferramentas de software
Em termos de ferramentas de software, para apoio nossa oficina, surge um problema religioso, poltico/partidrio e futebolstico. A questo explicada a seguir e basicamente ocasionada pelo fato que so necessrios alguns itens bsicos para se desenvolver cdigos/programas para um microcontrolador qualquer, e o usurio tem liberdade plena para escolher o que quiser para isso.

Oficina de Programao ARM

A questo que nunca vai calar ou Gosto no se discute


A razo de tanto suspense ao redor da questo citada anteriormente seu carcter de afinidade e gosto. E como dito no cancioneiro popular, gosto no se discute. A questo: 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, no existe uma resposta nica, mas de qualquer forma, nessa oficina optou-se por realizar algumas padronizaes. Infelizmente (alguns iro torcer o nariz) o direcionamento foi dado ao mainstream, ou seja, quelas plataformas tradicionais. Nesse caso, sob arquitetura PC, com um Microsoft Windows qualquer, em 32 bits. Entretanto, encorajamos os alunos a desbravarem o terreno com outras plataformas. O mundo possui 7 bilhes de pessoas, das quais algumas dezenas de milhes so entusiastas por computao e nerds. Graas aos orculos modernos (leia-se google, por exemplo) possvel obter inmeras informaes dessas pessoas, a respeito de como fazer uma ou outra ferramenta rodar em um ou outro ambiente. Para aqueles bravos navegadores modernos (no estou falando do Chrome ou Firefox, cspita, estou falando de voc, seu projeto de Cristovo Colombo de meia tigela), que corajosamente e curiosamente vo aonde nenhum outro nerd esteve antes, por favor, explique aos demais que isso possvel e que pode ser feito de algum jeito. Tente usar no seu MacBook, compile os cdigos em C do ARM dentro da sua calculadora HP, rode emuladores de virtualizadores de mquinas virtuais de outros sistemas operacionais, mas mostre que funciona. Divulgue a sua palavra atravs de um wiki, uma coleo de links, ou how-tos. A comunidade agradece. A ttulo de motivao para os Appleficcionados, existem inmeras pginas na internet a respeito de toolchains e IDE's para ARM, inclusive algumas especficas para o nosso STM32F4.

Tais itens bsicos so: Um editor de programa. Nesse, voc usurio ir soltar sua imaginao, como um escritor de poemas, com zilhes de linhas de cdigo mal elaborado, mal documentado, confuso e repleto de erros, que voc se gaba de ter feito em 15 minutos, copiando um pedao de algoritmo que encontrou na internet, do qual voc no est dando nenhum crdito, mas tambm no tem a mnima ideia de como funciona exatamente. Um pacote de softwares contendo: um compilador, um linkeditor e um montador. Esse pacote responsvel por tentar realizar um milagre: converter aquele seu "poema de erros de sintaxe", em um conjunto executvel de instrues de um cdigo de mquina. Mas no se iluda, citando novamente "Roger Che Guevarra", o aspirador microcontrolador do movimento de libertao: "-Errar humano. Mesmo!", e tais ferramentas vo se regozijar em mostrar uma lista quilomtrica de seus erros, sem nenhuma d ou compaixo. De qualquer forma, para quem no sabe o papel de cada um desses softwares "milagreiros", saiba que: O compilador responsvel por converter seu cdigo fonte, feito em uma determinada linguagem de programao, em um cdigo objeto (cdigo de mquina quase completo). Ao longo desse cdigo objeto so chamadas uma ou outra funo (que voc no escreveu), mas que pertencem a algumas bibliotecas de funes e rotinas criadas por terceiros. O linkeditor responsvel por enumerar tais funes de terceiros que voc utilizou, buscando-as dentro das bibliotecas de cdigos objetos armazenadas no seu disco rgido. O linkeditor extrai todas elas e as separa para serem incorporadas ao seu programa original. O montador, por sua vez, realiza o trabalho de concatenar o seu cdigo objeto original junto dos cdigos objetos das funes que voc chamou, criando uma imagem binria auto-contida, que possui tudo aquilo que o microprocessador/microcontrolador precisa para ser inicializado, de forma a desempenhar as funes desejadas segundo seu programa Um software para gravao dos dados dentro da memria FLASH/EEPROM do microcontrolador, para sua posterior execuo. Entretanto, cabe ressaltar que os programas no esto sujeitos somente a erros de sintaxe. Uma vez em execuo, muito problemas nos programas so decorrentes de "erros algortmicos". Como diz Roger: "- Te falei que errar humano cspita!". 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 comunicao usado na gravao, para monitorar e depurar seu cdigo em tempo de execuo. s vezes, voc conseguir ver as bobeiras que fez, para corrigi-las, antes que outras pessoas vejam ou

Oficina de Programao ARM sintam seus efeitos.

O erro humano, puramente e lamentavelmente humano.


Somente em carcter de curiosidade, os erros algortmicos so muito mais comuns do que se imagina. s vezes, eles no so sequer evidenciados em testes, e permanecem transparentes (como o Predador) s vistas dos engenheiros, at que alguma porcaria acontea. Como exemplo, tente imaginar quantas traquitanas tecnolgicas no despencaram do cu em Marte (para infelicidade dos marcianos). Isso porque uma sonda que carregava alguma dessas tranqueiras foi brindada com uma pequena "bobagem de programador", ou como dizem os programadores, "um recurso extra no documentado" ou, como dizem os engenheiros programadores escritores de literatura, uma "licena potica algortmica".

Marte ataca, com TV's. Adaptado de www.swankmoderndesign.com No acredita? No lembra? Veja aqui esse e outros exemplos da criatividade humana em jogar dinheiro fora [18] .

E no pense que esses erros so 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 cabeas, de propsito pelos inmeros arremessos infelizes de carrinhos de controle remoto, jipes e satlites que no deram certo. Piadas a parte, o aprendizado com os erros comum na nossa natureza. um processo de retroalimentao de experincias, onde se busca o aperfeioamento contnuo. Entretanto, como qualquer engenheiro de sistemas de controle ir afirmar, importante direcionar seus esforos para que o sistema tente se estabilizar, ou seja, quando ele converge para uma situao de erro estvel ou, o mais desejvel, para uma condio sem erros. Caso contrrio, se o seu sistema completamente instvel, 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 so itemizadas as ferramentas de software que sero utilizadas na oficina. Faa o download e se prepare para sua instalao, descrita mais adiante na metodologia. STM32 ST-Link Utility Programa para gravao de cdigos dentro da pastilha do microcontrolador ARM STM32F4 do kit. Fornecido pela prpria ST Microelectronics, gratuito. Pode ser obtido aqui [19]. Mais especificamente na aba Design support do site da ST, procure na seo Software & Development Tools e baixe o arquivo ZIP do STM32 ST-Link utility. Os drivers sozinhos para o Windows 7, Vista e XP esto num link abaixo na pgina, mas no so necessrios se voc pegar o programa STM32 ST-Link utility. STM Studio Programa para monitoramento, em tempo de execuo, de variveis internas do microcontrolador SMT32. Fornecido pela prpria ST Microelectronics, gratuito. Pode ser obtido aqui [20]. V na pgina, em Design support, Software & Development Tools, e baixe o arquivo ZIP do programa. Talvez seja necessrio instalar tambm em seu computador o Java Runtime Environment (JRE) mais recente. O JRE pode ser obtido aqui [21].

Oficina de Programao ARM YAGARTO O nome YAGARTO, por mais reptiliano que possa parecer, um acrnimo para "Yet Another Gnu ARm TOolchain". E nesse ponto importante ilustrar alguns conceitos e fatos importantes. Sigam-me os bons. GNU O que GNU ? A nica coisa fcil de se dizer a respeito de GNU : "GNU is Not Unix" (uma explicao recursiva). Como assim? um sistema operacional? um pacote de programas? uma filosofia de vida? uma religio? um bixo africano, mistura de bizo, alce e boi zebu? Bom, isso e no isso! E tambm no S isso! Na prtica, num passado no to distante, numa terra sem lei e sem plataformas, onde no existiam padres para absolutamente 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 ainda pior para quem fazia os programas, pois as ferramentas, rotinas e bibliotecas se amontoavam, com inmeras sintaxes, formas, etc. Apesar desse caos instalado, a popularizao de algumas plataformas e sistemas operacionais, principalmente do Unix (o prprio), fez com que vrios homens de bem decidissem criar "O" sistema operacional, baseado no Unix, com pacotes de programas, rotinas e bibliotecas, TODOS com cdigo fonte aberto, para o desempenho das mais diversas funcionalidades, onde quer que estivessem sendo executados. O sistema operacional "de-facto" nunca viu a luz do dia de forma estvel, mas vrios desses pacotes so marcos na histria da computao, como o "GNU binutils", que contm uma srie de programas para auxlio dos programadores, o GNU CC (compilador gcc), GNU ZIP (compactador gzip), Linux (um kernel para sistema operacional nem um pouco famoso), entre outros. Esses homens de bem, inicialmente, sacrificaram um pouco a idia da comercializao e proteo extrema da propriedade intelectual dos programas, pregando que todo o software deve ser distribudo com seu cdigo fonte, para que possa ser adaptado e compilado em quaisquer plataformas. Assim um usurio de uma estao X, que est habituado a usar o programa gzip, pode contar com o MESMO gzip numa estao Y. Se numa estao Z o gzip no existir, bingo! Pode-se adaptar e compilar o cdigo 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 em cruzes ou incinerados. Mas graas liberdade do nosso mundo moderno, apesar de chatos, essas pessoas so legais e fundamentais. Conhea mais sobre o gro-chato-mestre Richard Stalmann, a free-software foundations, GPL, LGPL e outras coisas relacionadas nas pginas do Stallman [22] e nas pginas do Projeto GNU [23]. Na nossa oficina vamos usar, sempre que possvel, softwares GNU para fazer cdigos e programas com licenas LGPL, e completamente ABERTOS E ESCANCARADOS para o pblico em geral. Sem pagar nada a ningum, sem dever nada a ningum, mas mantendo o esprito do compartilhar para o benefcio de todos. Toolchain Voc pode estar dizendo: - Eu nunca ouvi falar de toolchain. Eu jamais usei um toolchain. Mas afinal, eu preciso de um "toolchain" para sobreviver? Toolchain um nome comumente associado a uma caixa de ferramentas elementar de programao, especfica para algum tipo de computador. Mais do que um compilador, linkeditor, montador, etc. um toolchain um conjunto dessas ferramentas que foi elaborada para que um computador de arquitetura "X" pudesse fazer um cdigo binrio executvel para outro computador de arquitetura "Y", partindo de um cdigo fonte nico. pelo mrito do toolchain que voc, em seu Intel x86 com Microsoft Windows XP, pode fazer um programa executvel para um microcontrolador ARM, que sequer possui um sistema operacional. Para que possamos fazer alguma coisa til com nosso microcontrolador, precisamos encontrar um toolchain, especfico para o microcontrolador de arquitetura ARM-CORTEX-M4, e que possa ser executado em nosso computador pessoal. O YAGARTO (mais) um desses. Mas existem toolchains ARM aos zilhares: para MACOS, para Linux, etc. Procure o seu e seja feliz.

10

Oficina de Programao ARM A escolha pelo YAGARTO devida, principalmente, verso atualizada de seu compilador GNU CC (o GCC), na verso 4.6. Tambm importante a presena do linkeditor GNU LD, o assembler GNU AS, entre outros programas de apoio. O YAGARTO possui tambm algumas partes da biblioteca padro do ANSI C j prontas para nosso ARM. Infelizmente, a biblioteca do "printf", a "stdio.h" no faz parte dessa coleo. 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, sinto muito, voc vai constru-lo na unha e usar a sua prpria rotina printf. Certamente uma atividade ldica e didtica, que ser explicada adiante na oficina. De qualquer forma, no se assuste pois esse e outros problemas de ausncia de bibliotecas tradicionais em sistema embarcados movimentam a vida de vrias pessoas do meio, que criam bibliotecas alternativas, tal como a newlib [24]. O YAGARTO voc pode ver com mais detalhes aqui [25]. Obtenha os arquivos de instalao do YAGARTO Tools e YAGARTO GNU ARM toolchain aqui [26].

11

Outras ferramentas
IDEs e CooCox Existem conjuntos completos dessas ferramentas citadas acima s quais chamamos de IDEs, ou Integrated Development Environments, ou numa traduo pouco amigvel "eu tenho preguia e quero tudo pronto funcionando para mim". Basicamente so compostas por um timo editor de programas (daqueles que parecem sua tia professora chata do primrio, que corrigia voc a cada duas palavras ao fazer um ditado na frente da classe), um toolchain de apoio, um software de depurao e um software de gravao do programa, todos embutidos, junto de documentao das bibliotecas, dos componentes, etc. Piadas a parte, so programas realmente excelentes, recomendados para empresas e pessoas que precisam de um ambiente consistente de desenvolvimento, com suporte e apoio constantes fornecido por terceiros. Entretanto, em geral, tais virtudes dessas IDEs se refletem em custos. Alguns pacotes pode sair por poucas centenas de dlares para uma licena, at alguns milhares de dlares. Felizmente, tambm existem IDEs de domnio pblico, mantidas por parentes dos homens de bem citados anteriormente, tais como o CooCox, que pode ser obtido aqui [27]. O CooCox uma IDE completa, baseada no ambiente de desenvolvimento Java (bluarrgh) Eclipse, voltada para o ARM CORTEX, com suporte a ARMs de vrios fabricantes, vrios cabos de programao, etc. Ele no acompanha um toolchain e, por isso, necessita de um previamente instalado, como o YAGARTO. Se decidir usar o CooCox, baixe o pacote do COIDE e o do COFlash.

Programmer's Notepad
Quando voc precisar de um editor simples, rpido, organizado, e que no fique te dando palpite e mostrando que voc comete um erro a cada 4 teclas digitadas, procure um programa chamado Programmer's Notepad, disponvel aqui [28]. Enquanto Chuck Norris usa o VI [29] para escrever o kernel do Linux, direto em cdigo de mquina, ns mortais podemos usufruir do Programmer's Notepad para fazer nossos programas em C ANSI de piscar LEDs.

Metodologia
A metodologia descrita a seguir mostra os passos necessrios para desenvolver, compilar, gravar e executar um firmware qualquer em nosso kit de microcontrolador. Siga a estrada dos tijolos de ouro adiante e seja feliz.

Oficina de Programao ARM

12

Instalao das ferramentas de software


Gravador e programador ST Visual Programmer (sttoolset) Instalao A instalao simples e, aps finalizada, prov o ST VISUAL PROGRAMMER, capaz de gravar, apagar, configurar todos os atributos do STM32F407 do kit STM32F4-Discovery. Ser instalado tambm o "ST Visual Developer", uma IDE com assembler e linker dedicados para outros produtos da ST, como sua linha de microcontroladores de 8 bits. Como teste simples, ao final da instalao voc pode ligar um cabo USB A - USB mini B entre seu computador e o conector CN1 do kit. O kit SMT3F4-Discovery dever ser energizado e seu computador dever reconhecer o perifrico do cabo de programao ST-Link conectado na porta USB de seu computador. No gerenciador de dispositivos de seu micro, dever estar instalado corretamente um perifrico denominado "STMicroelectronics STLink 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 sua conectividade com o kit. Ao executar o programa ST Visual Programmer, na sua janela, acione o menu "Configure", opo "Configure ST Visual Programmer". Escolha como hardware o item "ST-LINK", Port "USB", Programming Mode "SWD", Device "STM32F407xG". De volta a janela principal, acione o menu "Read", opo "All tabs (on active sectors if any)". Enquanto seu computador faz um favor a voc, lendo pela USB pouco mais do um megabyte contindo da memoria FLASH do microcontrolador, pense como outros mercados fazem cpias piratas de produtos comerciais (de empresas famosas como Sony, Kingston, etc.), roubando os programas contidos nos microcontroladores desses produtos, por mecanismos semelhantes a desse cabo de programao. Copiando as placas de circuito e gravando os firmwares "roubados", obtem-se cpias quase idnticas. Por isso, no futuro, proteja seu cdigo dentro do seu microcontrolador e sua propriedade intelectual. Esse mtodo de lidar com a programao do microcontrolador, utilizando um cabo especfico, chamado ICP (In Circuit Programming). No nosso caso, o ICP feito utilizando-se o protocolo SWD (Serial Wire Debug), uma espcie de JTAG. Outro mtodo de programao conhecido o IAP (In Application Programming), onde o prprio microcontrolador fica responsvel por receber (por ethernet, serial, etc.) e programar seu prprio cdigo, como as funes de atualizao de firware de alguns roteadores wireless. Uma vez lida a memria de seu microcontrolador, observe na tela as tabuletas "PROGRAM MEMORY", "OTP MEMORY" e "OPTION BYTE". Em "PROGRAM MEMORY" so mostrados byte a byte, em hexadecimal, o contedo da memria do microcontrolador. Note que o endereo do primeiro byte da memria FLASH do STM32F4 0x08000000 (um endereo de 32 bits), e o ltimo 0x80FFFFFF, ou seja, 1048576 bytes. Perceba que no incio dessa regio de memria existe o programa, codificado em binrio, segundo a linguagem de mquina da arquitetura ARM utilizada, e completamente initeligvel para ns humanos. Se voc entende plenamente essa linguagem, comunique ao seu professor, e se prepare para virar um experimento de laboratrio. Como curiosidade, procure na memria de programa regies que possuam strings (conjuntos de letras) visveis, com alguma mensagem de texto. Essas mensagens foram escritas no programa para algum tipo de comunicao com o

Oficina de Programao ARM usurio, no caso para as mensagens de identificao do dispositivo pela USB, como ser visto adiante. Veja ainda que o programa que est inicialmente escrito na memria FLASH do kit relativamente pequeno e que as posies de memria no inicializadas ou gravadas esto repletas de 0xFF, ou seja, repleta de bits 1. Isso uma caracterstica interessante das memrias FLASH, que quando so apagadas, na realidade so preenchidas de bits '1'. O processo de gravao consiste ento no preenchimento dos zeros, quando necessrios. Outra coisa interessante da FLASH que impossvel apagar um byte individual de sua memria. O apagamento feito por setores, contendo centenas a milhares de bytes (conforme sua organizao interna) de uma nica vez. Ateno que as memrias FLASH (incluindo a do seu pendrive querido) suportam um nmero mximo de ciclos de apagamento. No nosso caso, voc pode apagar a FLASH do microcontrolador e grav-la novamente cerca de 10 mil vezes. Roger disse que errar humano. Se voc for o espcime mais confuso da raa, considerando que faa de 30 a 50 ciclos de gravaes por dia, voc pode fazer isso por quase um ano para arrumar seu programa repleto de erros, at conseguir algo que realmente 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 memria FLASH do microcontrolador que j vem apagada de fbrica (somente com '1's, lembra-se ?), e pode ser escrita pelo usurio programador SOMENTE UMA VEZ. Como na vida, para essa memria no existe UNDO. Uma vez gravada qualquer informao em seu interior, j era, ela no poder mais ser apagada ou alterada. Esse tipo de memria muito comum em microcontroladores, na forma de poucos bytes, para gravao de informaes UNVOCAS do hardware, por exemplo, seu nmero de srie, o MAC ADDRESS de uma interface de rede, um ID de um dispositivo Bluetooth, etc. Em "OPTION BYTE" so mostrados alguns bits especficos do microcontrolador. Esses bits configuram seu modo de operao, boot, proteo de leitura da memria, proteo de setores especficos da FLASH, etc. Alguns microcontroladores possuem conjuntos bastante vastos de bits internos de configurao. No caso do nosso microcontrolador, existem apenas 32 bits, organizados entre cerca de 10 a 12 opes. Cuidado com o que voc altera nessa tabuleta: seu cdigo poder ficar gravado para sempre no microcontrolador (sem retorno), seu microcontrolador pode ficar travado sem conseguir fazer o boot, ou voc pode desligar permanentemente a interface de leitura/gravao (SWD) pelo cabo de programao. Caso voc esteja com tendncias auto-destrutivas, uma frmula para a desgraa, por exemplo, configurar a opo RDP com grau de proteo 2. Seu microcontrolador ser lacrado com o programa que houver em seu interior, sem nenhuma possibilidade de ICP. Interessante notar que qualquer operao feita com o microcontrolador usando o ST Visual Programmer faz com que o mesmo entre em estado halt ou parada. Para que o programa em seu interior seja executado, deve ser feito um reset por meio do push-button B2 (Reset) da placa. Para finalizar, acione o menu "File", opo "Save As", e grave em disco o contedo lido do microcontrolador do seu kit. 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", opo "Active Sectors". Se todos os setores direita estiverem marcados, o dispositivo dever fazer o "Mass erase" de toda a FLASH. Aps alguns segundos, note que ao resetar a placa do kit, o programa originalmente embarcado no est presente. Nesse momento, voc tem em suas mos apenas um artefato de decorao, sem nenhuma inteligncia embutida. E no, esse artefato no serve para seu Feng-Shui. Carregue novamente a imagem do firmware gravado anteriormente em disco no arquivo .HEX e experimente fazer a gravao de volta ao seu kit, acessando o menu "Program", opo "Active sectors". Evite usar a opo "All tabs" do menu "Program", pois isso implicar na escrita do setor "OTP MEMORY" e do setor "OPTION BYTES" e, caso esteja algo configurado errado, as chances de alguma bobagem acontecer tendem ao infinito, segundo Murphy, e voc poder ter seu kit "tijolado", do ingls "bricked".

13

Oficina de Programao ARM Ateno: a palavra "bricked" no existe no dicionrio da lingua inglesa. Esse termo foi popularizado pelos xeretas e entusiastas de eletrnica que, ao gravarem de forma errada um firmware em um dispositivo qualquer (por IAP), acabam tornando esse dispositivo imprestvel, possivelmente podendo ser utilizado como um tijolo em uma construo. Por sinal, um tijolo muito ruim, como diz Oxentijolo Bixim, rei dos tijolos baianos. Se tudo correr bem na escrita do firmware, aps um reset voc deve verificar que o kit passa a funcionar como anteriormente. SMT32 ST-Link Utility Esse programa possui as mesmas funcionalidades do ST Visual Programmer, incluindo a possibilidade de se acessar os registradores do ncleo ARM em tempo de execuo e fazer o donwload de regies de dados da memria SRAM ou FLASH com endereos e tamanhos variados. A nica diferena que esse aplicativo utiliza como arquivos de entrada imagens binrias no formato .BIN ao invs de arquivos no formato Intel .HEX Debugger STM Studio Instalao Como pr-requisito, talvez seja necessrio instalar o Java Runtime Environment verso 1.6 ou posterior. A instalao do STM Studio simples e, aps finalizada, prov um software capaz de se conectar ao programador STLINK e obter, em tempo de execuo, variveis da memria de dados e programa do microcontrolador, conforme desejado. Esse programa gratuito e oferece aos usurios desenvolvedores a chance de acompanhar a evoluo de seus algoritmos de uma forma grfica e visual. Ele no substitui um debugger ou depurador, que muito mais apropriado para deteco de erros na concepo dos algoritmos. A apresentao do programa e suas caractersticas ser feira posteriormente, aps criar, compilar e gravar seu primeiro programa no microcontrolador do kit. Compilador, linkeditor e montador YAGARTO Instalao A instalao do YAGARTO simples e objetiva. Aceite tudo e seja feliz. Ao final da instalao criada uma pasta no menu iniciar com uma srie de atalhos para a internet de forma a se obter mais informaes a respeito dos pacotes integrantes do YAGARTO, entre eles: um pacote binutils, o pacote do super-compilador-linkador GCC e o pacote do GDB, o GNU Debugger.

14

Agradecimentos
Essa oficina s foi possvel pela colaborao de algumas instituies. Nosso agradecimento a todos pelo interesse, auxlio e apoio dedicados.

Oficina de Programao ARM


[30]

15

POLI - Eltrica

Depto. de Engenharia de ST Microelectronics Karimex [31] [32] [33] Energia e Automao Eltricas Escritrio So Paulo/Brasil Componentes Eletrnicos

importante agradecer s pessoas que incentivaram e auxiliaram na criao 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 no fosse citado, ele apareceria nos meus sonhos para me lembrar disso. Predator.

Referncias
Ateno: se voc clicar nas referncias abaixo, voc sair dessa pgina e poder ficar completamente perdido. Sugere-se que voc segure a tecla CONTROL de seu computador (no sei que tecla se pressiona nos MACs) e clique 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 no te decepcionar.

Culturais (tipo [c XX])


[1] Douglas Adams, autor de literatura de fico cientfica nonsense, incluindo a srie de livros do Guia do Mochileiro das Galxias e esquetes do Monty Python. [2] Eoin Colfer, autor de literatura infantil, incluindo a srie de livros Artemis Fowl e o esplio do Guia do Mochileiro das Galxias de Douglas Adams. [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 ns". [5] Roger Next Gen (http:/ / www. webderobot. com/ wp-content/ uploads/ 2011/ 11/ R2-D2-Vacuum-Cleaner. jpg), Microcontrolador Roger instalado em sua prxima plataforma. [6] ARM Limited, desenvolvedora das arquiteturas popularmente chamadas de ARM. Veja tambm o verbete da ARM Limited em ingls e sua homepage oficial (http:/ / www. arm. com). [7] Arquitetura ARM, veja tambm o verbete wiki em ingls. [8] Application-specific integrated circuit, Circuito integrado de aplicao especfica. [9] List of ARM microprocessor cores, Wikipage a respeito dos tipos de ncleos ARM. [10] JTAG - Joint Test Action Group, Wikipage do padro de interface de depurao e programao, incluindo sua verso 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 micromquinas para sensores. [15] Padawan, o manezon Jedi, Aprenda sobre a hierarquia Jedi. Tambm poderia se aplicar a usurios e programadores de microcontroladores. [16] STM32F407VG (http:/ / www. st. com/ internet/ mcu/ product/ 252140. jsp), pgina do microcontrolador do kit SMT32F4-Discovery. [17] Wiki ARM Cortex-M, Wikipage do ncleo 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/

Oficina de Programao ARM


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

16

Ferramentas de apoio (tipo [t XX]) Homepages, artigos e documentos (tipo [g XX])

Contribuies
Adicione tambm sua contribuio a essa pgina. Para colocar sua assinatura, no modo de edio do wiki, aps a seo 'Autores', coloque um asterisco (*), seguido por um espao e quatro smbolos de til (~) em sequencia, na forma: * ~~~~

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).

Article Sources and Contributors

17

Article Sources and Contributors


Oficina de Programao ARM Source: http://wiki.stoa.usp.br/index.php?oldid=15775 Contributors: Elpellini

Image Sources, Licenses and Contributors


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

Licena
Attribution-Share Alike 3.0 http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/