[Site Oficial]
[Objetivo]
[Local e Período Letivo]
[Ementa]
[Ementa Detalhada]
[Planejamento]
[Calendário de Atividades]
[Auxiliares Didáticos]
[Critério de Avaliação]
[Notas e Frequência]
[Manuais]
[Folhas Técnicas]
[Referências Úteis]
[Moodle]
Objetivo
A disciplina EA871, de 4 créditos, foi idealizada como complemento à
disciplina teórica EA869, Introdução a Sistemas de Computação. Esta
disciplina de laboratório tem como objetivo consolidar conceitos
básicos associados à organização/arquitetura de microcontroladores
através de uma série de atividades de introdução a um ambiente de
desenvolvimento integrado de software de um sistema embarcado
e programação dos diversos módulos de periférico
disponíveis nos microcontroladores da série
Kinetis L da NXP (Freescale).
Local e Período Letivo
- Local: As aulas síncronas serão dadas na sala virtual. Para entrar na sala,
- acesse o sistema pela conta federada (CAFe) com seu login e senha utilizados para acesso aos sistemas
da unicamp (mesmo da DAC) e
- antes de entrar na sala ative microfone e câmera.
Durante a aula
- mantenha a câmera desligada e o microfone desativado (mute),
- para se manifestar ou solicitar a palavra, utilize os emojis (ao lado do seu nome), e
- procure usar preferencialmente chat para comentários ou "pensamentos em voz alta".
- Período Letivo: 16/setembro/2020 a 19/janeiro/2021
Qualquer ambiente digital com o servidor X e um aplicativo que suporta acessos por protocolo ssh viabilizam acessos remotos, em 24 horas, às bancadas LE30-x, onde x=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 e 12 do LE30 via as máquinas de acesso externo le27-y.grad.fee.unicamp.br, onde y=11, 12, 13, 14, 15, 16, 17, 18, 19, 20. Por exemplo, pode-se logar na máquina le27-11.grad.fee.unicamp.br via ssh e acessar o terminal da bancada LE30-6 via rdesktop. Embora uma mesma máquina le27-y consiga "suportar" duas ou talvez três conexões simultâneas, recomendamos que façam o logon e verifiquem se outros usuários já estejam usando a máquina, com o comando who. Se existir mais de um usuário (além dele) logado na máquina, faça logon em outra. As reservas podem ser feitas via este link. Cabe observar que não é possível desmarcar reservas, nem na totalidade nem em parte. Procurem fazer reservas somente nos horários em que efetivamente vão usar as bancadas.
Como teremos somente um usuário comum em todas as bancadas (C:\Users\ea871), seguem-se algumas regras básicas para uso compartilhado:
- trabalhar somente com sua sub-pasta C:\Users\ea871\RA. Não deixem os arquivos espalhados em outras pastas, principalmente na Área de Trabalho;
- ao abrir CodeWarrior certificar se está entrando mesmo na sua área de trabalho (workspace);
- fazer sempre uma cópia do conteúdo importante da sua sub-pasta para evitar perda de dados;
- usar uma bancada somente após a reserva. O agendamento é por um período de até 4 horas diárias (4 por bancada, 2 por 2 bancadas ou 1 por 4 bancadas). Respeite o horário agendado. Se há alguma reserva depois do seu horário, salve o seu projeto antes do término do seu horário e passe para uma outra máquina disponível ou converse com o seu colega sobre uma possível troca;
- somente sair de uma sessão no fim do uso. Nunca desligue o computador.
Haverá a manuntenção periódica das máquinas que será avisada previamente. Arquivos podem ser removidos. Ajude-nos a manter as bancadas operantes em 24 horas. Quando identificarem algum problema nas bancadas, enviem por favor uma mensagem com uma descrição detalhada do problema para ting@dca.fee.unicamp.br e para os monitores, ou postem a descrição no tópico "Problemas com infra-estrutura" do Fórum de Discussões do Moodle.
Programação em linguagem assembly. Instruções de
máquina. Diretivas do montador. Depuradores. Interfaces de
entrada/saída. Programação de interface serial. Comunicação entre
computadores. Programação de interface paralela. Interrupções.
Ementa Detalhada
São programadas 14 atividades práticas com a finalidade de praticar os
conceitos relacionados com a arquitetura, linguagem de programação de
máquina, linguagem de programação de alto nível (C), memória,
periféricos de entrada e saída, comunicações paralelas e seriais, mecanismos de interrupção e temporizadores. Os alunos devem ser capacitados a desenvolver um projeto de software de baixa
complexidade reusando o hardware disponível.
Dinâmica do Curso
O tema deste semestre é um relógio digital com cronômetro e termômetro com interface serial. A técnica adotada nesta disciplina é o paradigma de desenvolvimento modular. Dividimos o projeto em 8 módulos (led RGB, botoeiras, LCD, relógio, cronômetro, termômetro, comunicação serial, utilidades) que serão integrados nos dois últimos experimentos. Todas as atividades são individuais e devem ser entregues, de acordo com a orientação dada em cada roteiro, via Moodle. Dependendo das dificuldades identificadas, refeituras podem ser requisitadas.
Como acreditamos que muitas vezes erros na codifição se devem à falta do entendimento da lógica que está por trás da sintaxe de uma linguagem, no nosso caso C, e/ou da arquitetura da máquina, no nosso caso ARM, em que estamos implementando os códigos, são disponíveis uma série de vídeos-aula acompanhados de questões de estudo dirigido acessíveis via Moodle. Tentativas de solução das questões do estudo dirigido antes de iniciar as atividades de programação atribuídas e submissão (no Moodle) de versões-rascunho do projeto atribuído para cada aula ANTES DA AULA são altamente recomendadas. Estas tentativas serão contabilizadas na avaliação do desempenho, mesmo que não sejam corretas, porque elas tem como objetivo despertar dúvidas e nos ajudar a mapear suas dificuldades.
Assim, podemos aproveitar as aulas na sala virtual para discutirmos dúvidas, tornando-as mais dinâmicas. A presença e a participação nestas aulas são importantes. Depois das aulas síncronas vocês terão a oportunidade de refazer não só as questões como também submeter as projetos solicitados até três dias após a aula (próxim segunda).
Calendário de Atividades
- |
Exp. |
Aulas síncronas - Turma S(Sextas, 14:00 - 16:00h)/T(Sextas, 16:00 - 18:00h) |
Videos-aula |
Roteiro |
Materiais Complementares |
Introdução à placa FRDM-KL25 e ao shield EA871 |
1 |
18/09 |
acessos remotos e sistema embarcado
Aplicativos de testes dos periféricos: teste_ledRGB.hex; teste_kit.hex; TestEA871R.hex; teste_sensor.hex; teste_terminal.hex; teste_led_multicores.hex
|
roteiro 1
|
Ambiente de Desenvolvimento - Hardware
Nova versão do esquemático do shield FEEC
Esquemáticos dos circuitos de acesso remoto: Botoeiras e controle da fonte de calor e led RGB
|
Ferramentas de Desenvolvimento de Software: CodeWarrior |
2 |
25/09 |
IDE CodeWarrior
Projeto apresentado no vídeo iniciar.zip
|
roteiro 2 |
Ambiente de Desenvolvimento - Software
Tabela de teclas de atalho no CodeWarrior IDE
|
Linguagem de Montagem (Assembly ARM/Thumb/Thumb 2) |
3 |
02/10 |
Assembly
Projetos apresentados no vídeo: asm_ula.zip; asm_inline.zip; asm_FRDMKL25Z.zip
|
roteiro 3
|
Linguagem de Montagem
Thumb 16-bit Instruction Set Quick Reference Card
ARM GCC Inline Assembler Cookbook
Saleae Analisador Lógico
|
Primeiro Aplicativo (SIM, PORT, GPIO: led RGB) |
4 |
09/10 |
Primeiro aplicativo
Projetos apresentados no vídeo: hello_data_type.zip; hello_bit_op.zip; hello_type_conversion.zip; hello_FRDMKL25Z.zip
|
roteiro 4 |
Bitwise Operators in C and C++: A Tutorial
Linguagem C: Operações sobre os Dados
Linguagem C: Representação de Dados
|
Primeira Biblioteca (Doxygen) |
5 |
16/10 |
Primeira biblioteca
Projetos apresentados no vídeo: bib_programmed_type.zip; bib_macros.zip; bib_FRDMKL25Z.zip; GPIO_ledRGB.zip
|
roteiro 5 Projeto citado no roteiro:
mod_FRDMKL25Z.zip
|
Entrevista com um arquiteto de sistema Tiago Cajaíba, IRT
|
Push buttons (Captura de eventos externos por Polling) |
6 |
23/10 |
Polling
Projetos apresentados no vídeo: polling.zip
|
roteiro 6 |
|
Push buttons (Captura de eventos externos por Interrupções) |
7 |
30/10 |
Interrupções
Projetos apresentados no vídeo:
interrupt.zip
|
roteiro 7 |
Exceções
|
Interface Paralela (GPIO: LCD) |
8 |
06/11 |
LCD
Projetos apresentados no vídeo:
lcd_strings.zip
lcd_program.zip
lcd_bitmap.zip
|
roteiro 8 |
LCD Tutorial for Interfacing with Microcontrollers
|
Relógio digital (MCG, LPO, SysTick, PIT, LPTRM, RTC) |
9 |
13/11 |
Temporizadores
Projetos apresentados no vídeo:
timer_time_str.zip
timer_systick_pit_lptmr.zip
timer_rtc.zip
|
roteiro 9 (controle_relogio_digital.zip) |
Convert HH:MM:SS to seconds;
LCD Custom Character Generator
|
Modulação por Largura de Pulso (TPM PWM)
| 13 |
20/11 |
PWM
Projetos apresentados no vídeo:
timer_numb_str.zip
timer_pwm.zip
|
roteiro 10 |
Pulse Width Modulation
Pulse Width Modulation usando um oscilador 555
|
Cronômetro (TPM Input Capture e Output Compare)
| 10 |
27/11 |
Captura de Entrada/Saída por Comparação
Projetos apresentados no vídeo:
timer_tictoc.zip
|
roteiro 11
|
|
Termômetro (ADC)
| 11 |
04/12 |
Conversor ADC
Projetos apresentados no vídeo:
adc_SC1ATrigger.zip
adc_sensors.zip
adc_klqrug.zip
|
roteiro 12 |
Understanding SAR ADCs: Their Architecture and Comparison with Other ADCs
ADC Input Noise: The Good, The Bad, and The Ugly. Is No Noise Good Noise?
|
Interface Serial Assíncrona (UART: Terminal) |
12 |
11/12 |
UART
Projetos apresentados no vídeo:
serial_uart.zip
serial_uart_interrupt.zip
serial_cbuffer.zip
|
roteiro 13
|
Serial Communication
Serial Terminal Basics
Estrutura de Dados
Implementing Circular/Ring Buffer in Embedded C
|
Integração
| 14 |
18/12 |
Projeto final: Relógio digital com cronômetro, termômetro e comunicação serial com um Terminal.
|
roteiro 14; interface; uma codificação de máquina de estados em C:
maquina_de_estados.zip
|
|
15 |
08/01/2021 |
|
Prazo de apresentação oral do projeto |
- |
15/01/2021
|
- |
Auxiliares Didáticos
Este semestre contaremos com o apoio didático de dois assistentes:
Eles ajudarão no suporte à infra-estrutura, ficando a Bárbara responsável pela intermediação dos problemas relacionados com a infra-estrutura e o Lucas, pela disponibilidade do material didático nas máquinas, no site e no Moodle. Lucas acompanhará as aulas da turma S e a Bárbara, da turma T, para ficarem sincronizados com o conteúdo da semana. Eles farão atendimentos em horários pré-programados (4 horas por semana) nas salas virtuais com uma bancada do LE30-x reservada. Eventualmente, os monitores poderão atender dúvidas em outros momentos por outras mídias de comunicação, a combinar entre as partes. Não deixem de usar o Fórum de Discussões (Moodle) como mais uma alternativa de tirar dúvidas.
Critério de Avaliação
M = 0.05E + 0.65R + 0.3I ,
onde E é a média dos 13 estudos dirigigos, R é a média das notas dos 13 relatórios (1 a 14) dos 13 experimentos realizados individualmente, e I é o projeto final de integração dos módulos. Os relatórios devem ser postados
no Moodle no prazo programado. Além do relatório, será agendado um horário para apresentação individual do projeto final de integração que entrará no cômputo da nota I.
É imprescindível a entrega de todos os estudos dirigidos e relatórios. Estudos dirigidos e relatórios entregues fora do prazo terão suas notas zeradas no cômputo da média, além de poder comprometer a realização dos experimentos que se seguem.
Serão aprovados os alunos que satisfizerem as três condições:
-
M > = 5.0 .
- as notas finais dos estudos dirigidos e relatórios superiores a 3.0 (após eventuais refeituras).
- participação em atividades superior ou igual a 60%.
A média final, Mfinal, destes alunos é igual a M.
Exame Final
Não haverá exame final.
Notas e Frequência
Folhas Técnicas
Referências Úteis
-
Dicas de Instalação de CodeWarrior, Antonio Augusto Fasolo Quevedo: não é necessário instalar plugin Terminal nem o driver
para o shielder FRDMKL25Z
-
Tutorial: The Role of JTAG in system debug & test throughout the embedded system development lifecycle, Lyle Pittroff
-
Por que a arquitetura ARM Cortex M0+ consome menos energia que o Cortex M0?, Thiago Lima
- ARM Cortex -M Programming Guide to Memory Barrier Instructions
-
Nested Vectored Interrupt Controller of AEM Cortex-M3, Chang-yeon Jo
-
Oscillators: How to generate a precise clock source, Ashish Kumar and Pushek Madaan
- ARM Keil MDK 5.10 Toolkit
-
ARMSIM#: A Simulator for the ARM Architecture
-
Profile Guided Selection of ARM ad Thumb Instructions, Arvind Krishnaswamy e Rajiv Gupta
-
ARM Cortex-M0+ Core, Mark Dunnett
-
Introduction to ARM thumb, Joe Lemieux
-
MCG Module, Freescale
- CodeWarrior Linker Command File (LCF) for Kinetis
- ARM GCC Inline Assembler Cookbook
- Analog-to-digital Converter
- Conversores A/D e D/A
- How Initialization Functions Are Handled?
- Autodependencies with GNU make, Scott McPeak
- How is a binary executable organized? Let's explore it!, Julia Evans
- The ELF Object File Format: Introduction and by Dissecation, Eric Youngdale
- Executable and Linkable Format (ELF)
- Using the Backdoor Access Capability to Unsecure HCS12 MCU, Rogelio Reyna García
-
IEEE754 Converter
- Código ASCII
- Informações sobre codificação de caracteres UNICODE
- LCD Tutorial for Interfacing with Microcontrollers
- Serial Communication. Sparkfun
- Circular Buffer
- Algorithm in Programming
- Extended Asm - Assembler Instructions with C Expression Operands
-
C-Quick Guide
- C A Linguagem de Programacao, Padrao ANSI
Brian W. Kernighan e Dennis M. Ritchie
Editora Campus
ISBN: 8570015860
- Freescale CodeWarriorU. Learn Programming with C
- C Programming Storage Class
- C Programming Operators
- Bitwise Operators in C and C++: A Tutorial
- C Strings (Arrays vs. Pointers)
- C Programming/Procedures and functions
- C-Type Casting
- C Programming break and continue Statement
- C Programming switch Statement
- C Dynamic Memory Allocation: malloc(), free() & realloc()
- C Processor Directives
- C Programming Tutorial: Loops
- Setting Up Include Paths and Macros for C/C++ Indexer
- MCU on Eclipse
Sugestões:
ting at dca dot fee dot unicamp dot br
Última modificação: Sex Set 4 12:57:44 -03 2020
"Esta página, assim como todas as páginas sob esta
mesma árvore, não é uma publicação oficial da UNICAMP, seu conteúdo
não foi examinado e/ou editado por esta instituição. A
responsabilidade por seu conteúdo é exclusivamente do
autor."
"This page, as well as all pages
under this same tree, is not an official publication from UNICAMP;
its content has not been verified and/or edited by this
institution. The author is solely responsible by its
contents."