O documento descreve o microcontrolador ATmega8 da Atmel. Apresenta suas principais características como memória, periféricos, osciladores, modos de baixo consumo, interrupções e registradores de configuração. Também explica o funcionamento do processador e ferramentas para desenvolvimento de projetos com o ATmega8.
O documento fornece informações técnicas sobre processadores Intel de 5a geração em diante, incluindo especificações como clock, cache e arquitetura. As tabelas são organizadas por fabricante, tipo de processador, conector e encapsulamento para facilitar consulta.
1) O documento apresenta informações sobre microcontroladores PIC, incluindo estrutura interna, memórias, registradores, conjunto de instruções e osciladores.
2) São descritos os principais componentes do PIC16F628 como memórias de programa e dados, registradores especiais, pilha e vetores de interrupção.
3) O documento explica conceitos como arquitetura Harvard, ciclos de máquina e funcionamento básico dos osciladores internos e externos do PIC16F628.
O documento discute o processo de criação de hardware com microcontroladores STM32, abordando os principais componentes necessários como o processador, fontes de alimentação, relógios, debug e layout do PCB. É apresentado um exemplo de projeto com um controlador STM32F030K6Tx e detalhes sobre sua implementação.
Este documento descreve as principais características e evoluções do microprocessador Pentium da Intel, incluindo Pentium MMX, Pentium Pro, Pentium II e falsificação de processadores. O texto discute a arquitetura superescalar do Pentium, sua organização interna com pipelines e caches, e como o MMX opera em multimídia.
O Pentium Pro foi o primeiro processador da Intel a usar uma arquitetura híbrida RISC/CISC. Possuía uma organização interna com módulos para decodificação, despacho e execução de instruções RISC de tamanho fixo geradas a partir de instruções CISC variáveis. Sua arquitetura superescalar permitia executar múltiplas instruções por ciclo de clock.
O documento resume a estrutura básica dos micros do padrão PC, incluindo o processador, memória, chipsets, barramentos, clock e dispositivos de entrada e saída. O processador contém unidades de controle e lógica/aritmética. A memória inclui RAM volátil e ROM de apenas leitura. Firmwares como BIOS e POST auxiliam no boot.
O documento discute a evolução dos processadores, desde as primeiras gerações até os processadores atuais. Apresenta as principais características de cada geração de processadores da Intel e AMD, incluindo barramento, frequência, encapsulamento e arquitetura de núcleos únicos ou múltiplos. Também aborda conceitos como overclock, Hyper-Threading e as mudanças nos sockets ao longo do tempo.
[2/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...Marcelo Barros de Almeida
Sistemas embarcados começam a ser muito explorados em aplicações biomédicas e tendem a se expandir cada vez mais. Podemos citar, por exemplo, sistemas de controle de próteses de membros artificiais, controles de cadeiras de rodas inteligentes, tecnologias assistivas baseadas em exoesqueletos etc. Assim, o uso de dispositivos embarcados para coleta, tratamento e processamento de sinais em tempo real tem recebido cada vez mais atenção de empresas e laboratórios de pesquisa em todo mundo. Neste workshop focaremos nossa atenção nos dispositivos fabricados pela empresa ARM Holdings plc, em especial na linha de controladores Cortex M4 e M7. Além dos dispositivos, a ARM também disponibiliza um grande conjunto de funções para processamento de sinais, especificamente desenvolvida para uso otimizado do processador Cortex. Funções matemáticas básicas, transformadas, filtros digitais, funções estatísticas e de interpolação são parte desse conjunto conhecido como CMSIS-DSP (Cortex Microcontroller Software Interface Standard - Digital Signal Processing). Nesse workshop, será apresentado o CMSIS-DSP através de exemplos aplicados ao processamento de sinais biomédicos, evidenciado a sua forma de uso e vantagens. Os participantes deverão implementar pequenos sistemas de processamento em tempo real em kits contendo os controladores Cortex M.
O documento fornece informações técnicas sobre processadores Intel de 5a geração em diante, incluindo especificações como clock, cache e arquitetura. As tabelas são organizadas por fabricante, tipo de processador, conector e encapsulamento para facilitar consulta.
1) O documento apresenta informações sobre microcontroladores PIC, incluindo estrutura interna, memórias, registradores, conjunto de instruções e osciladores.
2) São descritos os principais componentes do PIC16F628 como memórias de programa e dados, registradores especiais, pilha e vetores de interrupção.
3) O documento explica conceitos como arquitetura Harvard, ciclos de máquina e funcionamento básico dos osciladores internos e externos do PIC16F628.
O documento discute o processo de criação de hardware com microcontroladores STM32, abordando os principais componentes necessários como o processador, fontes de alimentação, relógios, debug e layout do PCB. É apresentado um exemplo de projeto com um controlador STM32F030K6Tx e detalhes sobre sua implementação.
Este documento descreve as principais características e evoluções do microprocessador Pentium da Intel, incluindo Pentium MMX, Pentium Pro, Pentium II e falsificação de processadores. O texto discute a arquitetura superescalar do Pentium, sua organização interna com pipelines e caches, e como o MMX opera em multimídia.
O Pentium Pro foi o primeiro processador da Intel a usar uma arquitetura híbrida RISC/CISC. Possuía uma organização interna com módulos para decodificação, despacho e execução de instruções RISC de tamanho fixo geradas a partir de instruções CISC variáveis. Sua arquitetura superescalar permitia executar múltiplas instruções por ciclo de clock.
O documento resume a estrutura básica dos micros do padrão PC, incluindo o processador, memória, chipsets, barramentos, clock e dispositivos de entrada e saída. O processador contém unidades de controle e lógica/aritmética. A memória inclui RAM volátil e ROM de apenas leitura. Firmwares como BIOS e POST auxiliam no boot.
O documento discute a evolução dos processadores, desde as primeiras gerações até os processadores atuais. Apresenta as principais características de cada geração de processadores da Intel e AMD, incluindo barramento, frequência, encapsulamento e arquitetura de núcleos únicos ou múltiplos. Também aborda conceitos como overclock, Hyper-Threading e as mudanças nos sockets ao longo do tempo.
[2/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...Marcelo Barros de Almeida
Sistemas embarcados começam a ser muito explorados em aplicações biomédicas e tendem a se expandir cada vez mais. Podemos citar, por exemplo, sistemas de controle de próteses de membros artificiais, controles de cadeiras de rodas inteligentes, tecnologias assistivas baseadas em exoesqueletos etc. Assim, o uso de dispositivos embarcados para coleta, tratamento e processamento de sinais em tempo real tem recebido cada vez mais atenção de empresas e laboratórios de pesquisa em todo mundo. Neste workshop focaremos nossa atenção nos dispositivos fabricados pela empresa ARM Holdings plc, em especial na linha de controladores Cortex M4 e M7. Além dos dispositivos, a ARM também disponibiliza um grande conjunto de funções para processamento de sinais, especificamente desenvolvida para uso otimizado do processador Cortex. Funções matemáticas básicas, transformadas, filtros digitais, funções estatísticas e de interpolação são parte desse conjunto conhecido como CMSIS-DSP (Cortex Microcontroller Software Interface Standard - Digital Signal Processing). Nesse workshop, será apresentado o CMSIS-DSP através de exemplos aplicados ao processamento de sinais biomédicos, evidenciado a sua forma de uso e vantagens. Os participantes deverão implementar pequenos sistemas de processamento em tempo real em kits contendo os controladores Cortex M.
O documento descreve as diferenças entre microprocessadores e microcontroladores. Microprocessadores são usados em sistemas de propósito geral enquanto microcontroladores integram CPU, memória e I/O em um único chip para aplicações específicas com restrições de custo, potência e espaço. O documento também explica conceitos básicos de arquitetura de microcomputadores como barramento, instruções e ciclos de máquina.
O documento fornece tabelas com códigos de erro comuns e suas possíveis causas, além de descrever LEDs e seus significados. A segunda tabela lista códigos de erro de BIOS populares e o que eles significam em diferentes fabricantes.
Este documento apresenta os objetivos e conteúdo de um curso de montagem e manutenção de computadores no Senac. O curso ensinará noções básicas de eletrônica e hardware, montagem e desmontagem de computadores, instalação de sistemas operacionais e softwares. As avaliações incluirão testes teóricos e práticos para aprovação no curso.
1) Manual técnico para placa-mãe PW-945GCL contendo especificações, layout e descrição dos conectores. 2) Inclui informações sobre conectores SATA, USB, áudio, CMOS e outras especificações técnicas. 3) Fornece instruções para configuração do painel frontal e uso dos diferentes conectores.
O documento fornece informações sobre arquiteturas de computadores, o microcontrolador MSP430 da Texas Instruments e seus recursos. Em particular, descreve: 1) as arquiteturas von Neumann e Harvard; 2) a escolha da TI de uma arquitetura modificada von Neumann para o MSP430; e 3) os recursos de clock e modos de baixo consumo do MSP430.
O documento discute interrupções e timers no ARM Cortex-M4. Ele explica como configurar um timer para gerar interrupções a cada meio período de um sinal de 10Hz, fazendo com que um LED pisque. Também mostra como gerar uma exceção ao acessar um periférico antes de ativar seu relógio.
O documento resume as principais informações sobre eletrônica embarcada. Apresenta a formação acadêmica e experiência profissional de Marcelo Barros, engenheiro eletrônico especializado na área. Fornece conselhos sobre escolha de carreira e orientações sobre sistemas embarcados, desde hardware, software e sistemas operacionais.
O documento fornece uma introdução sobre microprocessadores, descrevendo suas principais funções e componentes. Em 3 frases:
1) Um microprocessador é responsável por executar instruções armazenadas na memória para realizar operações como cálculos e entrada/saída de dados.
2) Ele possui barramentos para transferir dados e endereços, além de sinais de controle para ler, gravar, interromper e resetar o processamento.
3) As características como número de bits, velocidade do relógio e capacidade de endereç
Este documento apresenta os detalhes de uma disciplina de programação de sistemas embarcados, incluindo informações sobre local e horário das aulas, datas importantes, referências bibliográficas, tópicos abordados como linguagem C, hardware utilizado e ambiente de programação, e conceitos como diretivas de compilação e uso de arquivos .c e .h.
O documento fornece instruções para exercícios envolvendo botões e LEDs no MSP430. Os exercícios incluem: 1) acender LED quando botão é pressionado; 2) controlar 2 LEDs com 2 botões; 3) acender LED temporariamente ao pressionar botão. O documento também explica a configuração básica de pinos de entrada, saída e interrupção no MSP430.
Blackfin é uma família de microprocessadores embarcados de alto desempenho da Analog Devices projetados para aplicações de áudio e vídeo. Os processadores Blackfin suportam sistemas operacionais em tempo real e possuem funcionalidades internas de DSP.
Belém 91-3299-0800 / contato@totalseg.com.br
Manaus 92-3622-8080 / contato.am@totalseg.com.br
www.totalseg.com.br
O Prisma é o primeiro REP a contar com o Web Server embarcado, um aplicativo incluso no equipamento que dispensa instalação de CDs e softwares para configuração. Além da porta USB do fiscal, possui 2ª USB para importação e exportação de dados facilitando a coleta dos registros de ponto que pode ser feita através de um pendrive. O cadastro e a configuração podem ser feitas através de um teclado ABNT conectado diretamente ao relógio. Com sistema de pré-impressão, sensor de papel e impressão de até 8500 tickets por bobina, a emissão do comprovante é rápida e econômica. Atendendo a todas as normas da Portaria 1510 e com 7 modelos já homologados pelo MTE, o Prisma chega ao mercado de controle de ponto como a evolução definitiva em REP.
O documento descreve a estrutura e aplicações dos microcontroladores PIC, com foco no PIC16F84. Ele explica que os microcontroladores PIC possuem memória de programa, memória de dados, ULA e portas I/O, e que o PIC16F84 tem 13 portas I/O, memória FLASH de 1k e RAM de 90 bytes. Por fim, discute aspectos como osciladores, organização de memória e timers.
O PSoC é um microcontrolador da Cypress Microsystems que combina um núcleo de 8 bits com bancos de memória analógicos e digitais. Possui arquitetura Harvard e CISC e clock de até 24MHz. Contém módulos pré-programados como PWM, temporizadores, comunicação serial e filtros. É programável em Assembly, C ou Embedded C e fornece ferramentas gratuitas para desenvolvimento.
A aula 01 discute a estrutura dos micros do padrão PC, incluindo os componentes principais como o processador, memória, chipsets e barramentos. O documento também explica conceitos-chave como clock, reset e interrupções.
O documento discute interrupções e DMA em sistemas computacionais. Aborda conceitos como exceções, interrupções, processamento de interrupções e como diferentes arquiteturas de processadores, como MIPS, Intel e controladores de interrupção lidam com eventos assíncronos.
O documento apresenta uma tabela com códigos de erros comuns e descrições dos LEDs de uma placa-mãe para auxiliar na identificação de problemas. A tabela de códigos de erro lista possíveis causas para diferentes códigos, como problemas de memória, processador ou placa-mãe. A descrição dos LEDs explica o significado dos sinais de cada LED em relação ao funcionamento da placa.
O documento discute a introdução à disciplina de microprocessadores. Apresenta o objetivo geral de deixar os alunos aptos a trabalhar com microcontroladores como o 8051 e PIC, descrevendo sua arquitetura básica, funcionamento e diferenças entre microprocessadores e microcontroladores.
A arquitetura ARM é usada principalmente em sistemas embarcados devido seu baixo consumo de energia e desempenho. Sua versatilidade permite uso em diversos dispositivos como celulares e computadores. O documento descreve a história e características do ARM, incluindo registradores, modos de operação, periféricos e conjuntos de instruções.
Este documento fornece informações sobre hardware de computadores, incluindo componentes internos como placa-mãe, memória RAM, processador e barramentos. Também discute periféricos, interfaces de entrada e saída e formatos de memória. O documento visa ensinar estudantes sobre os fundamentos do hardware de computadores.
O documento discute a CPU, barramentos e clock interno de um computador. Descreve as definições e constituição interna da CPU e como se liga aos outros componentes através de barramentos. Explica os diferentes tipos de barramentos e como funcionam para transmitir dados entre dispositivos.
O documento descreve as diferenças entre microprocessadores e microcontroladores. Microprocessadores são usados em sistemas de propósito geral enquanto microcontroladores integram CPU, memória e I/O em um único chip para aplicações específicas com restrições de custo, potência e espaço. O documento também explica conceitos básicos de arquitetura de microcomputadores como barramento, instruções e ciclos de máquina.
O documento fornece tabelas com códigos de erro comuns e suas possíveis causas, além de descrever LEDs e seus significados. A segunda tabela lista códigos de erro de BIOS populares e o que eles significam em diferentes fabricantes.
Este documento apresenta os objetivos e conteúdo de um curso de montagem e manutenção de computadores no Senac. O curso ensinará noções básicas de eletrônica e hardware, montagem e desmontagem de computadores, instalação de sistemas operacionais e softwares. As avaliações incluirão testes teóricos e práticos para aprovação no curso.
1) Manual técnico para placa-mãe PW-945GCL contendo especificações, layout e descrição dos conectores. 2) Inclui informações sobre conectores SATA, USB, áudio, CMOS e outras especificações técnicas. 3) Fornece instruções para configuração do painel frontal e uso dos diferentes conectores.
O documento fornece informações sobre arquiteturas de computadores, o microcontrolador MSP430 da Texas Instruments e seus recursos. Em particular, descreve: 1) as arquiteturas von Neumann e Harvard; 2) a escolha da TI de uma arquitetura modificada von Neumann para o MSP430; e 3) os recursos de clock e modos de baixo consumo do MSP430.
O documento discute interrupções e timers no ARM Cortex-M4. Ele explica como configurar um timer para gerar interrupções a cada meio período de um sinal de 10Hz, fazendo com que um LED pisque. Também mostra como gerar uma exceção ao acessar um periférico antes de ativar seu relógio.
O documento resume as principais informações sobre eletrônica embarcada. Apresenta a formação acadêmica e experiência profissional de Marcelo Barros, engenheiro eletrônico especializado na área. Fornece conselhos sobre escolha de carreira e orientações sobre sistemas embarcados, desde hardware, software e sistemas operacionais.
O documento fornece uma introdução sobre microprocessadores, descrevendo suas principais funções e componentes. Em 3 frases:
1) Um microprocessador é responsável por executar instruções armazenadas na memória para realizar operações como cálculos e entrada/saída de dados.
2) Ele possui barramentos para transferir dados e endereços, além de sinais de controle para ler, gravar, interromper e resetar o processamento.
3) As características como número de bits, velocidade do relógio e capacidade de endereç
Este documento apresenta os detalhes de uma disciplina de programação de sistemas embarcados, incluindo informações sobre local e horário das aulas, datas importantes, referências bibliográficas, tópicos abordados como linguagem C, hardware utilizado e ambiente de programação, e conceitos como diretivas de compilação e uso de arquivos .c e .h.
O documento fornece instruções para exercícios envolvendo botões e LEDs no MSP430. Os exercícios incluem: 1) acender LED quando botão é pressionado; 2) controlar 2 LEDs com 2 botões; 3) acender LED temporariamente ao pressionar botão. O documento também explica a configuração básica de pinos de entrada, saída e interrupção no MSP430.
Blackfin é uma família de microprocessadores embarcados de alto desempenho da Analog Devices projetados para aplicações de áudio e vídeo. Os processadores Blackfin suportam sistemas operacionais em tempo real e possuem funcionalidades internas de DSP.
Belém 91-3299-0800 / contato@totalseg.com.br
Manaus 92-3622-8080 / contato.am@totalseg.com.br
www.totalseg.com.br
O Prisma é o primeiro REP a contar com o Web Server embarcado, um aplicativo incluso no equipamento que dispensa instalação de CDs e softwares para configuração. Além da porta USB do fiscal, possui 2ª USB para importação e exportação de dados facilitando a coleta dos registros de ponto que pode ser feita através de um pendrive. O cadastro e a configuração podem ser feitas através de um teclado ABNT conectado diretamente ao relógio. Com sistema de pré-impressão, sensor de papel e impressão de até 8500 tickets por bobina, a emissão do comprovante é rápida e econômica. Atendendo a todas as normas da Portaria 1510 e com 7 modelos já homologados pelo MTE, o Prisma chega ao mercado de controle de ponto como a evolução definitiva em REP.
O documento descreve a estrutura e aplicações dos microcontroladores PIC, com foco no PIC16F84. Ele explica que os microcontroladores PIC possuem memória de programa, memória de dados, ULA e portas I/O, e que o PIC16F84 tem 13 portas I/O, memória FLASH de 1k e RAM de 90 bytes. Por fim, discute aspectos como osciladores, organização de memória e timers.
O PSoC é um microcontrolador da Cypress Microsystems que combina um núcleo de 8 bits com bancos de memória analógicos e digitais. Possui arquitetura Harvard e CISC e clock de até 24MHz. Contém módulos pré-programados como PWM, temporizadores, comunicação serial e filtros. É programável em Assembly, C ou Embedded C e fornece ferramentas gratuitas para desenvolvimento.
A aula 01 discute a estrutura dos micros do padrão PC, incluindo os componentes principais como o processador, memória, chipsets e barramentos. O documento também explica conceitos-chave como clock, reset e interrupções.
O documento discute interrupções e DMA em sistemas computacionais. Aborda conceitos como exceções, interrupções, processamento de interrupções e como diferentes arquiteturas de processadores, como MIPS, Intel e controladores de interrupção lidam com eventos assíncronos.
O documento apresenta uma tabela com códigos de erros comuns e descrições dos LEDs de uma placa-mãe para auxiliar na identificação de problemas. A tabela de códigos de erro lista possíveis causas para diferentes códigos, como problemas de memória, processador ou placa-mãe. A descrição dos LEDs explica o significado dos sinais de cada LED em relação ao funcionamento da placa.
O documento discute a introdução à disciplina de microprocessadores. Apresenta o objetivo geral de deixar os alunos aptos a trabalhar com microcontroladores como o 8051 e PIC, descrevendo sua arquitetura básica, funcionamento e diferenças entre microprocessadores e microcontroladores.
A arquitetura ARM é usada principalmente em sistemas embarcados devido seu baixo consumo de energia e desempenho. Sua versatilidade permite uso em diversos dispositivos como celulares e computadores. O documento descreve a história e características do ARM, incluindo registradores, modos de operação, periféricos e conjuntos de instruções.
Este documento fornece informações sobre hardware de computadores, incluindo componentes internos como placa-mãe, memória RAM, processador e barramentos. Também discute periféricos, interfaces de entrada e saída e formatos de memória. O documento visa ensinar estudantes sobre os fundamentos do hardware de computadores.
O documento discute a CPU, barramentos e clock interno de um computador. Descreve as definições e constituição interna da CPU e como se liga aos outros componentes através de barramentos. Explica os diferentes tipos de barramentos e como funcionam para transmitir dados entre dispositivos.
Os processadores CISC (Complex Instruction Set Computer) executam centenas de instruções complexas de forma versátil, necessitando descodificação para aplicação. Exemplos são os Intel 386 e 486. CISCs têm vantagem de reduzir código executável ao possuir instruções comuns, mas desvantagem de não poder alterar instruções compostas. RISCs (Reduced Instruction Set Computer) têm conjunto reduzido de instruções simples e formatos regulares, operando em registradores e memória de forma simples.
Os processadores CISC (Complex Instruction Set Computer) executam centenas de instruções complexas de forma versátil, necessitando descodificação por microcódigo. Exemplos são os Intel 386 e 486. Os processadores RISC (Reduced Instruction Set Computer) têm um conjunto reduzido de instruções simples e operam em registradores, sem necessidade de descodificação. A escolha entre processadores CISC e RISC depende do equilíbrio entre performance e versatilidade.
O documento descreve conceitos básicos de hardware e software, incluindo as principais partes de um sistema computacional e suas funções. Detalha os componentes de hardware como a CPU, memória e dispositivos de entrada e saída, bem como conceitos de software como sistemas operativos e aplicativos. Também resume os principais tipos de motherboards e suas características.
O documento discute conceitos básicos de montagem e manutenção de computadores, incluindo componentes como placas-mãe, processadores, memórias, fontes de energia, placas de vídeo e discos rígidos. Também apresenta exemplos de configurações de computadores e revisa os principais tópicos aprendidos.
O documento descreve as famílias de processadores Intel 8008 e 8080. Detalha as especificações técnicas como número de transistores, largura de barramento de dados, instruções suportadas, aplicações e diagrama de blocos. Também fornece referências sobre a história e especificações desses processadores pioneiros.
O documento apresenta uma introdução sobre hardware de computadores, abordando conceitos básicos como linguagem binária, microprocessadores, placas-mãe e memórias. O autor, Walter Cunha, fornece detalhes técnicos sobre esses tópicos para fins de concursos de informática.
Apostila para aprender sobre CPUs e tudo maisGilberto Mota
O documento descreve os principais componentes da Unidade de Processamento Central (CPU): a unidade de controle, a unidade lógica e aritmética e os registradores. A CPU executa instruções em um ciclo de busca-execução, controlado pela unidade de controle.
Este documento descreve uma experiência com microcontroladores PIC. Ele fornece uma introdução à família PIC, sua arquitetura RISC e características. Também discute a família PIC16F84A, incluindo sua memória, registradores e periféricos. O objetivo da experiência é gerar uma onda quadrada usando um PIC.
Apostila de montagem e manutenção de computadores emi mario gurgelPablo Mariano
O documento discute os principais componentes de um computador, incluindo a placa-mãe, processador, memória RAM, slots, barramentos como PCI, USB e Firewire. Explica os tipos de placas-mãe, processadores, memórias e suas funções no computador.
Este documento descreve e compara diversos microprocessadores e microcontroladores que podem ser usados como On Board Computer (OBC) em sistemas espaciais. São apresentadas suas arquiteturas, características técnicas e desempenho, com ênfase em aspectos como tolerância a radiação, temperatura de operação e herança de voo comprovada.
O documento discute microcontroladores PIC e programação em linguagem C. Apresenta tópicos como estrutura interna dos microcontroladores PIC, declaração de variáveis, operadores, configuração de periféricos como ADCs e PWM, uso de interrupções e memória EEPROM. Inclui também exemplos de código C para controlar dispositivos com PIC.
O documento discute microcontroladores PIC e programação em linguagem C. Apresenta tópicos como estrutura interna dos microcontroladores PIC, declaração de variáveis, operadores, entrada e saída digital, conversor AD, interrupções e uso da memória EEPROM.
1. Descreve os principais componentes de uma placa-mãe, incluindo processadores, barramentos, memória e chipsets.
2. Explica as diferenças entre os padrões de barramento ISA, EISA, VESA Local Bus e PCI.
3. Resume os tipos de memória RAM, cache e CMOS encontrados em placas-mães.
1. O documento descreve os principais componentes de um computador, incluindo a placa-mãe, processador, memória e barramentos. 2. Detalha os diferentes padrões de barramentos usados em placas-mães ao longo do tempo, como ISA, EISA, VESA Local Bus e PCI. 3. Explica como os processadores evoluíram de CISC para RISC e como o desempenho aumentou com cada geração.
O documento descreve microcontroladores PIC, especificamente:
1) Apresenta os microcontroladores PIC da Microchip, destacando seus modelos como PIC16F628A, PIC16F877A, PIC18F4550 e dsPIC30F4013.
2) Explica que o PIC18F4550 possui 32KB de memória flash, 35 pinos de E/S e protocolos como USB, UART, SPI e I2C.
O documento fornece um resumo da história da computação e dos principais componentes de hardware de um computador, incluindo a evolução das tecnologias, partes internas como processador, memória e placa-mãe, além de periféricos como fonte de alimentação e discos rígidos.
ClojureScript allows developers to use the Clojure programming language to build applications that compile to JavaScript. This enables Clojure code to run in environments where JavaScript is supported, like web browsers and mobile apps. ClojureScript leverages the Google Closure compiler and library to provide whole program optimization of Clojure code compiling to JavaScript.
Why you should be excited about ClojureScriptelliando dias
ClojureScript allows Clojure code to compile to JavaScript. Created by Rich Hickey and friends, it provides optimizations for performance while maintaining readability and abstraction. As a Lisp for JavaScript, ClojureScript controls complexity on the web and benefits from JavaScript's status as a compilation target for many languages.
Functional Programming with Immutable Data Structureselliando dias
1. The document discusses the advantages of functional programming with immutable data structures for multi-threaded environments. It argues that shared mutable data and variables are fundamentally flawed concepts that can lead to bugs, while immutable data avoids these issues.
2. It presents Clojure as a functional programming language that uses immutable persistent data structures and software transactional memory to allow for safe, lock-free concurrency. This approach allows readers and writers to operate concurrently without blocking each other.
3. The document makes the case that Lisp parentheses in function calls uniquely define the tree structure of computations and enable powerful macro systems, homoiconicity, and structural editing of code.
O documento lista e descreve as principais partes de um contêiner de carga seco, incluindo o painel frontal, laterais, traseira, teto, piso e estrutura inferior. Muitos componentes como painéis laterais, travessas do teto e fundo são numerados de acordo com sua localização. As portas traseiras contêm quadros, painéis, dobradiças e barras de fechamento.
O documento discute a história da geometria projetiva, desde Euclides até seu uso em computação gráfica. Aborda figuras-chave como Pascal, que foi pioneiro na área, e como a perspectiva foi aplicada nas artes ao longo dos séculos.
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
This document discusses the benefits of polyglot and poly-paradigm programming approaches for building more agile applications. It describes how using multiple languages and programming paradigms can optimize both performance and developer productivity. Specifically, it suggests that statically-typed compiled languages be used for core application components while dynamically-typed scripting languages connect and customize these components. This approach allows optimizing areas that require speed/efficiency separately from those requiring flexibility. The document also advocates aspects and functional programming to address cross-cutting concerns and concurrency challenges that arise in modern applications.
This document discusses JavaScript libraries and frameworks. It provides an overview of some popular options like jQuery, Prototype, Dojo, MooTools, and YUI. It explains why developers use libraries, such as for faster development, cross-browser compatibility, and animation capabilities. The document also discusses how libraries resemble CSS and use selector syntax. Basic examples are provided to demonstrate common tasks like hover effects and row striping. Factors for choosing a library are outlined like maturity, documentation, community, and licensing. The document concludes by explaining how to obtain library code from project websites or Google's AJAX Libraries API.
How to Make an Eight Bit Computer and Save the World!elliando dias
This document summarizes a talk given to introduce an open source 8-bit computer project called the Humane Reader. The talk outlines the goals of providing a cheap e-book reader and computing platform using open source tools. It describes the hardware design which uses an AVR microcontroller and interfaces like video output, SD card, and USB. The talk also covers using open source tools for development and sourcing low-cost fabrication and assembly. The overall goals are to create an inexpensive device that can provide educational resources in developing areas.
Ragel is a parser generator that compiles to various host languages including Ruby. It is useful for parsing protocols and data formats and provides faster parsing than regular expressions or full LALR parsers. Several Ruby projects like Mongrel and Hpricot use Ragel for tasks like HTTP request parsing and HTML parsing. When using Ragel with Ruby, it can be compiled to Ruby code directly, which is slow, or a C extension can be written for better performance. The C extension extracts the parsed data from Ragel and makes it available to Ruby.
A Practical Guide to Connecting Hardware to the Webelliando dias
This document provides an overview of connecting hardware devices to the web using the Arduino platform. It discusses trends in electronics and computing that make this easier, describes the Arduino hardware and software, and covers various connection methods including directly to a computer, via wireless modems, Ethernet shields, and services like Pachube that allow sharing sensor data over the internet. The document aims to demonstrate how Arduinos can communicate with other devices and be used to build interactive systems.
O documento introduz o Arduino, uma plataforma de desenvolvimento open-source. Discute as características e componentes do Arduino, incluindo microcontroladores, software e exemplos de código. Também fornece instruções básicas sobre como programar o Arduino usando linguagem C.
O documento apresenta um mini-curso introdutório sobre Arduino, abordando o que é a plataforma Arduino, como é estruturado seu hardware, como programá-lo, exemplos básicos de código e aplicações possíveis como controle residencial e robótica.
The document discusses various functions for working with datasets in the Incanter library for Clojure. It describes how to create, read, save, select rows and columns from, and sort datasets. Functions are presented for building datasets from sequences, reading datasets from files and URLs, saving datasets to files and databases, selecting single or multiple columns, and filtering rows based on conditions. The document also provides an overview of the Incanter library and its various namespaces for statistics, charts, and other functionality.
Rango is a lightweight Ruby web framework built on Rack that aims to be more robust than Sinatra but smaller than Rails or Merb. It is inspired by Django and Merb, uses Ruby 1.9, and supports features like code reloading, Bundler, routing, rendering, and HTTP error handling. The documentation provides examples and details on using Rango.
Fab.in.a.box - Fab Academy: Machine Designelliando dias
This document describes the design of a multifab machine called MTM. It includes descriptions of the XY stage and Z axis drive mechanisms, as well as the tool heads and network used to control the machine. Key aspects of the design addressed include the stepper motor selection, drive electronics, motion control firmware, and use of a virtual machine environment and circular buffer to enable distributed control of the machine. Strengths of the design include low inertia enabling high acceleration, while weaknesses include low basic resolution and stiffness unsuitable for heavy milling.
The Digital Revolution: Machines that makeselliando dias
The document discusses the results of a study on the effects of a new drug on memory and cognitive function in older adults. The double-blind study involved giving either the new drug or a placebo to 100 volunteers aged 65-80 over a 6 month period. Testing showed those receiving the drug experienced statistically significant improvements in short-term memory retention and processing speed compared to the placebo group.
The document discusses using Clojure for Hadoop programming. Clojure is a dynamic functional programming language that runs on the Java Virtual Machine. The document provides an overview of Clojure and how its features like immutability and concurrency make it well-suited for Hadoop. It then shows examples of implementing Hadoop MapReduce jobs using Clojure by defining mapper and reducer functions.
This document provides an overview of Hadoop, including:
1) Hadoop solves the problems of analyzing massively large datasets by distributing data storage and analysis across multiple machines to tolerate node failure.
2) Hadoop uses HDFS for distributed data storage, which shards massive files across data nodes with replication for fault tolerance, and MapReduce for distributed data analysis by sending code to the data.
3) The document demonstrates MapReduce concepts like map, reduce, and their composition with an example job.
Hadoop and Hive Development at Facebookelliando dias
Facebook generates large amounts of user data daily from activities like status updates, photo uploads, and shared content. This data is stored in Hadoop using Hive for analytics. Some key facts:
- Facebook adds 4TB of new compressed data daily to its Hadoop cluster.
- The cluster has 4800 cores and 5.5PB of storage across 12TB nodes.
- Hive is used for over 7500 jobs daily and by around 200 engineers/analysts monthly.
- Performance improvements to Hive include lazy deserialization, map-side aggregation, and joins.
Multi-core Parallelization in Clojure - a Case Studyelliando dias
The document describes a case study on using Clojure for multi-core parallelization of the K-means clustering algorithm. It provides background on parallel programming concepts, an introduction to Clojure, and details on how the authors implemented a parallel K-means algorithm in Clojure using agents and software transactional memory. They present results showing speedups from parallelization and accuracy comparable to R's implementation on both synthetic and real-world datasets.
Multi-core Parallelization in Clojure - a Case Study
Desenvolvimento com o ATmega8
1. Projeto de Sistemas Embarcados Microcontrolados
Departamento de Engenharia Elétrica
Universidade de Brasília
Desenvolvimento com o ATmega8
Prof. Geovany A. Borges
gaborges@ene.unb.br
2. Linha AVR de microcontroladores ATMEL
Microcontroladores RISC de 8 bits, arquitetura
Harvard
Alto desempenho:
Relógio: DC a até 20MHz (atualmente)
Uma instrução por ciclo de relógio (1 MIPS por MHz),
exceto salto, retorno de interrupção,...
32 registros de propósito geral: R0 a R31
130 instruções assembly
Baixo custo
Baixo consumo
Dispositivos de 1,8V a 5V
Até seis modos de operação em baixo consumo
2
3. Linha AVR de microcontroladores ATMEL
Arquitetura escalável: reusabilidade de código
mesmo para dispositivos mais avançados
Desenvolvimento no sistema:
In-System Programming (ISP)
On-Chip Debugging (OCD)
Proteção de código e dados
Famílias:
ATTiny: pouca memória flash (max. 2KB)
ATMega: mais memória flash (max. 256KB)
AVR32: microcontrolador/DSP de 32 bits (roda Linux!)
3
4. Linha AVR de microcontroladores ATMEL
Suporte:
Notas de aplicação (http://www.atmel.com)
Comunidade AVRFreaks (http://www.avrfreaks.net/)
Ferramentas de código livre:
AVR-GCC toolchain
avrlib (http://members.home.nl/jmnieuwkamp1/AVRlib/)
FreeRTOS (http://www.freertos.org/)
4
5. Microcontrolador ATmega8
Características:
Memória:
8 KB de memória Flash ISP (10.000 ciclos de
escrita/apagamento)
512 B de EEPROM (100.000 ciclos de escrita/apagamento)
1 KB de RAM interna
Oscilador RC Interno
Várias fontes de interrupção externas e internas
Cinco modos de baixo consumo
Cinco fontes de relógio do sistema
4,5 a 5V de operação, até 16MHz de relógio
5
7. Microcontrolador ATmega8
Características:
Periféricos:
Dois contadores/temporizadores de 8 bits
Um contador/temporizador de 16 bits
RTC com oscilador próprio
Geração por hardware de até três canais PWM
Conversor A/D de 6 canais: 10-bits (4 canais) e 8-bits (2
canais)
Two-wire Serial Interface (TWI)
Interface serial USART
Interface serial SPI
Cão-de-guarda com oscilador próprio
Comparador analógico interno
7
8. Material de desenvolvimento
Circuito de referência e gravadora BSD:
Para inserção em protoboard com desenvolvimento em
microcomputador PC com Windows98/2000/XP
Gravadora
BSD
Circuito de
Fonte
referência
8
9. Material de desenvolvimento
Manual do dispositivo e notas técnicas
Distribuição WinAVR
Toolchain avr-gcc (GCC significa GNU Compiler Collection):
Compiladores C/C++
Montador assembly (assembler)
Depurador
Linker
Binutils
Ambiente de desenvolvimento: Programmer’s Notepad
Gerenciadores da gravadora: avrdude e avrdude-gui
Documentação
9
10. Material de desenvolvimento
Nota técnica
“Desenvolvimento com microcontroladores Atmel AVR”
CD de iniciação ao AVR:
preparado com ferramentas de hardware/software,
documentação e exemplos de programas.
Acessar o site:
http://www.ene.unb.br/~gaborges/recursos/embarcados/index.htm
10
11. Material de desenvolvimento
Iniciação rápida:
Instalar o WinAVR (Ferramentas - softwareWinAVR). Se
houver uma versão anterior, desinstale-a.
Construir a gravadora BSD (Ferramentas - hardwareBSD
prog simples).
Configurar na BIOS do microcomputador a porta paralela
em modo Standard (SPP).
Construir o circuito de referência (Ferramentas -
hardwareCircuito de referência ATMega8)
Usar o Programmer’s Notepad para desenvolver o
projeto
Se necessário, usar avrdude.exe (WinAVRbin) para
alterar a configuração do microcontrolador
Usar avrdude-gui.exe (WinAVRbin) para programar o
microcontrolador
11
14. Detalhamento da CPU
Core da CPU
Registro de Status
I : Habilitação global de interrupções
T : Bit auxiliar para instruções BLD (Bit LoaD) e BST (Bit STore)
H : Half Carry (usado em operações com codificação decimal)
S : Sinal, S = N ⊕ V
V : Overflow em complemento de 2
N : Indica resultado negativo
Z : Indica Zero
C : Vai um
14
15. Detalhamento da CPU
Core da CPU
Pilha
Formato decrescente:
instrução PUSH decrementa em 1 a pilha
instrução POP incrementa em 1 a pilha
Instruções RET e RETI decrementam em 2 a pilha
Registros apontadores da pilha:
SPH:SPL deve ser iniciado na RAM acima do endereço 0x060
15
16. Detalhamento da CPU
Memória volátil de dados (registros+E/S+RAM)
Periféricos +
Registros de acesso
à EEPROM
16
17. Detalhamento da CPU
Memória de programa (FLASH)
8KB organizados em 4K x 16 bits
divididos em duas seções (instruções
são de 16 ou 32 bits)
10000 ciclos de escrita/apagamento
garantidos
Acessível por instruções LPM/SPM (SPM
é restrito)
Memória não volátil de dados
(EEPROM)
512B organizados em 512 x 8 bits
Acesso individual
Registros específicos de acesso
Pode usar instruções SPM
Escrita em 8,5 ms
para programar a seção
de aplicação, possibilitando boot remoto.
17
19. Detalhamento da CPU
Relógio do sistema
Oscilador a cristal de Quartzo/ressonador cerâmico
Faixa: alguns KHz - 16MHz
Conexão externa:
Precisão: muito boa, mas depende
do cristal e dos capacitores externos
Oscilador a circuito RC externo
Faixa: alguns KHz - 12MHz
Conexão externa:
Freqüência: 1/(3RC)
Precisão: depende em grande parte
da precisão do componentes externos
19
20. Detalhamento da CPU
Relógio do sistema
Oscilador a circuito RC interno calibrado
Freqüências: 1, 2, 4 e 8 MHz
Conexão externa: nenhuma
Precisão: ±3% do valor nominal a 25 oC
ajuste fino pelo registro OSCAL
Oscilador a cristal de Quartzo de baixa freqüência
Faixa: nominal para 32.768 Hz
Conexão externa: similar ao cristal externo
Precisão: depende em grande parte da precisão do
componentes externos
Capacitores externos desnecessários se CKOPT = 0
20
21. Detalhamento da CPU
Relógio do sistema
Relógio externo
Faixa: DC a 16 MHz
Conexão externa:
Variação de 2% na freqüência entre dois
ciclos consecutivos podem levar a
comportamento imprevisível
21
22. Detalhamento da CPU
Relógio do sistema
Configuração pelo Fuse Low Byte, acessível apenas pela
gravadora.
22
23. Detalhamento da CPU
Relógio do sistema
Observações:
Para todas as fontes de relógio, existe um tempo mínimo
entre o RESET e o início de operação da CPU (alguns ms)
ATmega8 vem de fábrica configurado para relógio RC interno
calibrado a 1MHz
No modo com cristal de quartzo, a faixa de variação de
XTAL2 pode ser configurada conforme CKOPT:
CKOPT = 0: XTAL2 vai de 0 a VDD , aumentando a imunidade a
ruído externo e permitindo ser usada como fonte de relógio
para outros dispositivos. Entretanto, implica em aumento de
consumo.
CKOPT = 1: XTAL2 varia dentro de uma faixa estreita, reduzindo
a imunidade a ruído externo mas também reduzindo o
consumo.
23
24. Detalhamento da CPU
Gerenciamento de energia
Ativados quando a instrução SLEEP é executada
Configuração pelo registro MCU Control Register (MCUCR)
SE : Habilita modos de economia de energia
SM2..0 : Seleção do modo, de acordo com a tabela abaixo:
24
25. Detalhamento da CPU
Gerenciamento de energia
Modos de economia de energia:
25
26. Detalhamento da CPU
Cão-de-guarda
Se ativo, reinicia a CPU se seu contador interno estourar.
A instrução WDR reinicia o contador.
Estrutura interna:
1MHz
Instrução WDR 16,3ms a 2,2s
Do registro
WDTCR
26
29. Detalhamento da CPU
Interrupções
Priorização: prioridade maior quanto menor for o
número do vetor de interrupção.
Cada locação do vetor deve conter uma instrução RJMP
para a função de gerenciamento.
Para uma interrupção ser gerada e atendida pela CPU,
deve-se ter as três condições abaixo:
A ocorrência do evento que gatilha a interrupção,
colocando o bit local do registro de flags do periférico em
1 (se houver registro de flags)
O bit de habilitação local da interrupção deve estar em 1
O bit de I (SREG) de habilitação global deve estar em 1
29
30. Detalhamento da CPU
Interrupções
Habilitação global de interrupções
Instrução SEI : seta o bit de I de SREG
Instrução CLI : reseta o bit de I de SREG
Comportamento do bit de SREG quando do atendimento
a uma interrupção:
I é automaticamente colocado em 0 quando se inicia o
atendimento a uma interrupção.
I é colocado em 1 quando se encerra o atendimento com a
instrução RETI.
Para permitir que uma interrupção seja atendida durante o
atendimento de uma outra interrupção, o bit I pode ser
setado no início da rotina que será interrompida.
Tempo de resposta para atendimento: 4 ciclos de relógio
(modo normal) a 8 ciclos (modo SLEEP).
30
31. Detalhamento da CPU
Interrupções
Locação na FLASH dos vetores de interrupção e RESET
Vetor 1 Vetores 2 - 19
31
32. Detalhamento da CPU
Registros de configuração
Acessíveis apenas pela gravadora
Lock Bit Byte: registro que limita acesso externo e
interno à memória FLASH e à EEPROM.
Signature Bytes: três bytes que identificam o fabricante,
dispositivo e tamanho da memória FLASH
Calibration Byte: contém 4 bytes de calibração do
circuito oscilador RC interno, correspondentes às
freqüências nominais de 1, 2, 4 e 8MHz. O valor de
calibração para 1MHz é carregado automaticamente no
registro OSCCAL logo após RESET. Para as outras
freqüências, OSCCAL deve ser alterado pelo programa.
32
33. Detalhamento da CPU
Registros de configuração
Fuse High Byte (default 11011001): controle sobre
(bit 7) RSTDISBL: Ativação do RESET externo
(bit 6) WDTON: Cão-de-guarda
(bit 5) SPIEN: Programação em modo serial (o mesmo da
gravadora BSD)
(bit 4) CKOPT: Opções dos circuitos osciladores para
relógio do sistema
(bit 3) EESAVE: Memória EEPROM preservada durante
operação de apagamento na programação.
(bit 2..1) BOOTSZ1..0: Tamanho da seção de boot da Flash
(bit 0) BOOTRST: (1) Vetor de Reset na Flash ou (0) para
BLS.
33
34. Detalhamento da CPU
Registros de configuração
Fuse Low Byte: controle sobre pinos de E/S, duração da
inicialização e relógios do sistema.
34
36. Desenvolvimento de software
Componentes de um projeto de software em C:
Arquivos fonte (.c/.cpp)
Arquivos cabeçalho
Arquivo makefile
Projetos com um único arquivo fonte:
Indicados para pequenos programas
Requerem clareza na escrita e comentários sobre as
funções
Projetos com vários arquivos fonte:
Geralmente refletem uma construção modular e mais
elegante da resolução do problema
Cada arquivo fonte deve ter um arquivo cabeçalho
correspondente (boa prática), em que são definidas as
funções acessíveis por outros módulos
36
41. Desenvolvimento de software
Procedimentos para programação modular em C
Identificação dos módulos de um projeto
Cada módulo deve ser auto-suficiente
Definição das funcionalidades e dependências
Definição de rotinas de inicialização, interface, internas e
de encerramento dos módulos
Cada módulo possui um arquivo fonte e um arquivo
cabeçalho
Implementar módulos reutilizáveis
Realizar documentação, ao menos no código durante sua
concepção
41
42. Desenvolvimento de software
Exemplo:
Sistema de aquisição de dados de sensor de temperatura
com visualização em display LCD alfanumérico e
comunicação RS232 com microcomputador. No
microcomputador, um software residente solicita de
forma assíncrona a última medição de temperatura.
42
43. Desenvolvimento de software
Exemplo:
Realização física:
Sensor de Conversor
ATmega8
Temperatura TTL-RS232C
Display LCD
Identificação dos módulos:
Módulo principal
Módulo sensor
Módulo lcd
Módulo serial
43
44. Desenvolvimento de software
Exemplo:
Módulo principal:
Arquivos: main.c
Funcionalidades:
Inicialização do sistema
Laço infinito em que realiza comunicação serial
Interrupção periódica (T = 5ms)
Dependências: sensor, lcd e serial
44
48. Desenvolvimento de software
Exemplo:
Módulo serial:
Implementação
void serial_init(int baudrate)
Chamadas externas:
Funcionalidades locais: Inicialização da USART
Taxa dada por baudrate
8 bits, sem paridade, 1 stop
void serial_dispatch(double Temp)
Chamadas externas:
Funcionalidades locais: status = serial_receive(&d,1);
se status = 0, retornar
se d = ‘T’, executar serial_send_double(Temp)
char serial_receive(char *c, timeout_ms){...}
Chamadas externas:
Funcionalidades locais: se não chegar nada pela USART em timeout_ms, retorna 0
se chegar algo, escrever em *c e retorna 1
48
49. Desenvolvimento de software
Toolchain avr-gcc: GCC significa
avr-gcc/avr-g++: compiladores C/C++
avr-as: assembler
avr-gdb: depurador
avr-ld: linker
binutils: utilitários que manipulam arquivos binários
avr-adr2line: dado um endereço e um executável, usa
informação de depuração para determinar qual
linha/arquivo fonte se encontra o código que gerou as
instruções do executável;
avr-ar: manipulador de arquivos, que altera, retira e coloca
partes de código objeto;
avr-nm: lista símbolos contidos em um arquivo objeto;
avr-objcopy: copia partes de um arquivo objeto em outro;
avr-objdump: mostra informações sobre um ou mais
arquivos objeto;
49
50. Desenvolvimento de software
avr-ranlib: gera um índice do conteúdo de um arquivo
objeto e armazena o índice nele mesmo. Isto orna mais
rápida a tarefa do linker;
avr-readelf: mostra informações de um arquivo .elf
(executable and linking format);
avr-size: mostra o tamanho das seções e o tamanho total
do código binário contido em um arquivo objeto;
avr-strings: para um arquivo de entrada, imprime toda
seqüência de caracteres de comprimento maior ou igual a
4;
avr-strip: recria um arquivo objeto sem os símbolos;
make: automação do processo de compilação
Informações na internet:
http://www.gnu.org/manual/manual.html
50
51. Desenvolvimento de software
Procedimentos de construção da imagem
Construção em linha de comando
Formado da chamada de avr-gcc:
avr-gcc [options] file
opções normalmente usadas:
Opções do compilador:
-c Compilar apenas, gerando arquivo objeto alocável
-o main.o Define o nome do arquivo final da compilação.
-lm Quando usado como linker, inclui biblioteca libm.a (matemática). Qualquer
biblioteca compilada se apresenta sob a forma limnome.a, e sua inclusão no
projeto é feita com –lnome. –Ldir especifica diretório onde as bibliotecas devem
ser buscadas
-On Otimização, em que n=0,1,2,3 ou s é o nível. -00 é sem otimização. -01 é
otimização com melhor compromisso entre velocidade e tamanho de código.
–O2 implica em maior otimização de velocidade sem aumentar muito o
tamanho. –O3 é otimização com uso de funções inline. –Os implica em
otimização de tamanho de código.
-Wa,options Passa as opções options para o assembler (avr-as).
-g Inclui símbolos de depuração no código, deixando-o muito maior, mas
permitindo depuração.
51
52. Desenvolvimento de software
Procedimentos de construção da imagem
Construção em linha de comando
Formado da chamada de avr-gcc:
avr-gcc [options] file
opções normalmente usadas:
Opções específicas para processadores AVR, obtidas por avr-gcc –-target-help:
-mint8 Assume o tipo int de 8 bits
-mmcu=atmega8 Processador ATmega8.
-minit-stack=nnnn O endereço nnnn é assumido como topo da pilha inicial
Maiores detalhes, consultar a documentação do WinAVR:
WinAVR/doc/avr-libc/avr-libc-user-manual/index.html
52
53. Desenvolvimento de software
Procedimentos de construção da imagem
Construção em linha de comando
Versão do compilador:
avr-gcc --version
Compilação
avr-gcc -c -mmcu=atmega8 -I. -O0 –
funsigned-char -funsigned-bitfields -fpack-
struct -fshort-enums -Wall -Wstrict-
prototypes -Wa,-adhlns=main.lst -std=gnu99
main.c -o main.o
O arquivo main.lst contém a listagem em assembly
Linker: obtenção do arquivo main.elf (executable and
linking format)
Geração do arquivo imagem: main.hex (intel hex)
53
54. Desenvolvimento de software
Automação dos procedimentos
Com o aumento de complexidade dos projetos, o
procedimento de compilação precisa ser automatizado.
Em muitos casos, obter um outro formato de imagem
pode implicar em muitas mudanças no processo de
construção.
Utilitátio make.exe: é um utilitário de automação do
processo de compilação. Para tanto, ele faz uso de um
arquivo auxiliar (makefile), único para cada projeto, que
especifica todo o processo de construção.
54
55. Desenvolvimento de software
Automação dos procedimentos
Arquivo makefile de demonstração:
Consultar makefile.pdf para sua listagem.
Variáveis:
MCU: define o microcontrolador (atmega8)
FORMAT: define o formato da imagem final (ihex)
TARGET: define o nome da imagem (main)
OPT: define o nível de otimização (0, 1, 2, 3 ou s)
SRC: deve conter a listagem de todos os arquivos fonte
CFLAGS: Flags do compilador avr-gcc.
AFLAGS: Flags do assembler avr-as.
LDFLAGS: Flags do linker avr-ld
e várias outras...
55
56. Desenvolvimento de software
Automação dos procedimentos
Arquivo makefile de demonstração:
Forma de chamada:
make rule
em que rule é a regra usada. Para construir um projeto por
completo, deve-se digitar make all.
Formato de uma regra:
target ... : prerequisites ...
command
...
em que target é o nome da regra (alvo da execução dos
comandos), que nem sempre são arquivos. Se não é um
arquivo, chama-se de PHONY target. prerequisites são
as regras ou arquivos que devem estar disponíveis para a
execução da regra. Se for uma regra, elas será executada
antes da atual. Se for um arquivo, make procura pela regra
capaz de criá-lo. Se não existir, procura por um arquivo no
diretório. command são os comandos executados por aquela
regra.
56
57. Desenvolvimento de software
Automação dos procedimentos
Arquivo makefile de demonstração:
Exemplos de regras
Sem comandos (exemplo de PHONY target):
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep
$(TARGET).lss $(TARGET).sym sizeafter finished end
Compilar apenas arquivos .c:
%.o : %.c
@echo
@echo $(MSG_COMPILING) $<
$(CC) -c $(ALL_CFLAGS) $< -o $@
Símbolos especiais: nem sempre alvos e pré-requisitos são
fixos, sendo necessário usar as instâncias das regras.
$< : primeiro pré-requisito da regra
$@ : alvo da regra
$(VARIABLE) : conteúdo da variável VARIABLE.
57
58. Desenvolvimento de software
Automação dos procedimentos
Arquivo makefile de demonstração:
Principais arquivos resultantes de make all:
main.lss: arquivo de listagem assembly, com detalhes de
conversão de código. Se a opção –g estiver ativa em CFLAGS,
então se terá também o código C correspondente.
main.sym: listagem de todos os símbolos do alvo main.elf
main.o: arquivo objeto resultado da compilação de main.c
main.eep: arquivo ihex a ser gravado na EEPROM
main.elf: arquivo binário ELF
main.d: arquivo de dependências
Limpeza do projeto: make clean
58
59. Desenvolvimento de software
Seções de memória
Durante todo o processo de construção, o código,
variáveis e constantes são alocadas em segmentos
denominados de seções.
Seções comuns no AVR:
.text: seção com trechos de programa
.data: seção com constantes, usadas por variáveis
inicializadas no código.
.bss: seção com variáveis globais ou variáveis estáticas, que
não possuem valor inicial nos programa. As variáveis da
seção .bss recebem 0 durante o processo de inicialização
da imagem.
.noinit: o mesmo que .bss, mas as variáveis não serão
afetadas durante a inicialização.
.eeprom: seção com variáveis para a EEPROM
59
61. Desenvolvimento de software
Seções de memória
Mapeamento na memória [Li & Yao, 2003]
O linker faz o mapeamento guiado
por um arquivo script.
61
62. Desenvolvimento de software
Seções de memória
Conteúdo de um arquivo script do linker
Definição de seções: SECTIONS{...}
Definição do mapeamento de memória: MEMORY{...}
No caso do toolchain avr-gcc, os arquivos script se
encontram em WinAVRavrlibldscripts
Para o ATmega8 (arquitetura avr4, mmcu=atmega8), o
arquivo default chama-se avr4.x:
Início da FLASH
Início da SDRAM
Observa-se que o tamanho das memória RAM não
corresponde ao que se tem com o ATmega8: Cuidado!
62
64. Desenvolvimento de software
Dissecando um projeto:
Compilando: make all
Otimização: -O0 (nenhuma)
Tamanho das seções: make sizeafter
Tamanho do programa na FLASH: .text + .data
Espaço usado pelas variáveis na RAM: .data + .bss
64
66. Desenvolvimento de software
Dissecando um projeto:
Arquivo main.lss:
Seção .text – vetores de interrupção
__ctors_end
__bad_interrupt
66
67. Desenvolvimento de software
Dissecando um projeto:
Arquivo main.lss:
Seção .text – seção de reset
SREG = 0
SP = 0x045F, topo da RAM
Seção .text – copia valores constantes de variáveis inicializadas
X-Register = 0x0060 (RAM)
Z-Register = 0x00BA (FLASH,
após final do programa)
Procedimento de cópia
67
68. Desenvolvimento de software
Dissecando um projeto:
Arquivo main.lss:
Seção .text – inicializa com 0 as variáveis não inicializadas
explicitamente no programa fonte (seção .bss)
X-Register = 0x008E
(início da .bss na RAM)
Procedimento escrita de 0
nas variáveis não iniciali-
zadas (np caso x)
Seção .text – rotina default de tratamento de interrupções
Vetor de RESET, ou seja
RESET por software.
68
69. Desenvolvimento de software
Dissecando um projeto:
Arquivo main.lss:
Seção .text – função main()
SP = 0x045D, -2 do topo da RAM
Chamada de inicializacao()
Laço principal
69
70. Desenvolvimento de software
Dissecando um projeto:
Arquivo main.lss:
Seção .text – função inicializacao()
Salva Y-Register na pilha
Y-Register = endereço do topo da pilha
DDRB (mapeado em RAM) = 0x20
Restaura Y-Register da pilha
Aparentemene não há motivo para salvar Y-Register na pilha!
70
71. Desenvolvimento de software
Dissecando um projeto:
Arquivo main.lss: recompilado com otimização –O2
Tamanho antes: 234 bytes (.text + .data + .bss)
Tamanho depois: 166 bytes (.text + .data + .bss)
Única (e enorme) diferença:
Arquivo main.lss: recompilado com otimização –Os
Mesmo resultado que compilação –O2
71
72. Desenvolvimento de software
Depuração de software
Problemas da depuração de software em desenvolvimento
cruzado:
Observação tempo-real de eventos
Sincronismo
Passo-a-passo
72
73. Desenvolvimento de software
Depuração de software
Abordagens por hardware:
Usando emuladores de hardware
Emuladores com processador
Emuladores sem processador
73
74. Desenvolvimento de software
Depuração de software
Abordagens por hardware:
Usando depuradores no chip (e.g., JTAG)
Baixo custo
74
75. Desenvolvimento de software
Depuração de software
Abordagens por hardware:
Usando depuradores no chip (e.g., JTAG)
Depurador JTAG da ATMEL (acima ATmega16):
Ferramentas GNU:
GDB + AVARICE
Funcionalidades: Run Mode, Stopped Mode, Breakpoints, Passo-a-
passo, visualização de registros
75
76. Desenvolvimento de software
Depuração de software
Abordagens por software:
Depuradores (e.g., GDB)
Simuladores (e.g., AVRStudio)
Sinalização de eventos (Run mode apenas):
LEDs
Portas de E/S + Osciloscópio
Buzzer
printf direcionado para porta serial ou display LCD
76
78. Desenvolvimento de software
Depuração de software
Exemplo de sinalização de eventos: USE_DEBUG=1, OPT=s
Coloca 0x0011 na pilha
Onde está o if ???
Chamada a printf
Coloca 0x0015 na pilha
Chamada a printf
Tamanho do código: 2720 bytes
78
79. Desenvolvimento de software
Depuração de software
Exemplo de sinalização de eventos: USE_DEBUG=0, OPT=s
Onde está o printf ???
Onde está o printf ???
Onde está o printf ???
Onde estão as chamadas a
funcao_a e funcao_b
79
80. Desenvolvimento de software
Depuração de software
Limitações no uso de printf para depuração:
Tempo de execução longo
No avr-libc, printf não é compilado como uma função re-
entrante!
80
82. Desenvolvimento de software
Depuração de software
Exemplo de sinalização de eventos: USE_DEBUG=1, OPT=s
DEBUG_POINT(0,1,1);
DEBUG_POINT(1,0,1);
DEBUG_POINT(0,1,0);
.
.
. Tamanho do código: 108 bytes
82
83. Desenvolvimento de software
Especificidades da linguagem C – GNU
Tipos de variáveis e tamanho (arquitetura AVR)
[unsigned] char : 8 bits
[unsigned] int : 16 bits
[unsigned] long int : 32 bits
[unsigned] long long : 64 bits
Ponteiros: 16 bits
float, double: 32 bits
83
84. Desenvolvimento de software
Especificidades da linguagem C – GNU
Variáveis voláteis
Aplicado em situações em que o conteúdo de uma variável
pode ser alterada sem que o compilador perceba que a
alteração é possível.
Casos em que se necessita declarar uma variável como
volátil:
Registros de periféricos mapeados em memória
Variáveis globais utilizadas em interrupções
Variáveis globais utilizadas em sistemas multitarefas
Efeito: variáveis voláteis não são otimizadas (mesmo com -
O3)
Exemplos de declarações:
volatile char c;
volatile float x = M_PI;
84
87. Desenvolvimento de software
Especificidades da linguagem C – GNU
Funções re-entrantes (-D_REENTRANT)
Alguns sites reportam que as funções da biblioteca libc não
são re-entrantes. Portanto, deve-se evitar usá-las
simultaneamente em interrupções e no nível principal. Isto
somente pode ser feito se for garantida atomicidade na sua
execução.
Aparentemente, não suportada para a arquitetura AVR
87
88. AVR-LIBC
Tipos inteiros para variáveis (stdint.h)
Com sinal:
int8_t: inteiro 8 bits
int16_t: inteiro 16 bits
int32_t: inteiro 32 bits
int64_t: inteiro 64 bits
Sem sinal:
uint8_t: inteiro 8 bits sem sinal
uint16_t: inteiro 16 bits sem sinal
uint32_t: inteiro 32 bits sem sinal
uint64_t: inteiro 64 bits sem sinal
88
89. AVR-LIBC
Laços de espera (avr/delay.h)
Funções baseadas no número de ciclos de instrução
count: contagem de 4 ciclos de relógio
Contagem máxima determinada pelo tipo de count
89
90. AVR-LIBC
Gerenciamento de energia (avr/sleep.h)
Funções baseadas na instrução SLEEP
Definições para ATMEGA8 (em avr/sleep.h)
90
97. AVR-LIBC
Registros de E/S (io.h)
Todos os registros são definidos pelo nome em io.h
Manipulação de registros:
outb(PORTB, inb(PORTB) & 0xFE);
ou
PORTB &= 0xFE;
Manipulação de bits:
97
99. AVR-LIBC
Interrupções e sinais (avr/interrupt.h e avr/signal.h )
Definição de rotinas de gerenciamento usando as macros
INTERRUPT() e SIGNAL().
Exemplos
SIGNAL (SIG_OUTPUT_COMPARE1A)
INTERRUPT(SIG_ADC)
Diferença entre INTERRUPT e SIGNAL:
INTERRUPT: a rotina inicia com uma instrução SEI
SIGNAL: a rotina inicia com todas as interrupções desabilitadas
(situação default do microcontrolador)
99
100. AVR-LIBC
Interrupções e sinais (avr/interrupt.h e avr/signal.h )
Identificadores de fonte de interrupção para ATmega8
1 __vector_default 11 SIG_SPI
2 SIG_INTERRUPT0 12 SIG_UART0_RECV
3 SIG_INTERRUPT1 13 SIG_UART0_DATA
4 SIG_OUTPUT_COMPARE2 14 SIG_UART0_TRANS
5 SIG_OVERFLOW2 15 SIG_ADC
6 SIG_INPUT_CAPTURE1 16 SIG_EEPROM_READY
7 SIG_OUTPUT_COMPARE1A 17 SIG_COMPARATOR
8 SIG_OUTPUT_COMPARE1B 18 SIG_2WIRE_SERIAL
9 SIG_OVERFLOW1 19 SIG_SPM_READY
10 SIG_OVERFLOW0
Consultar tabela da página 44 do manual do ATmega8
100
101. AVR-LIBC
Outras facilidades
Suporte a Bootloader
CRC
Geração de bit de paridade
Manipulação de blocos de memória da FLASH
Cão-de-guarda
Operações matemáticas em ponto flutuante
Geração de números aleatórios
Manipulação de strings
Teste de caracteres
101
102. Referências
[Li & Yao, 2003] LI, Q.; YAO, C. Real-Time Concepts for Embedded
Systems. CMPBooks, 2003.
102