Equipes de Laboratório
Curso:__________________________________________
Nome: ______________________________ e-mail: Curso:
Nome: ______________________________ e-mail: Curso:
Nome: ______________________________ e-mail: Curso:
esta equipe está ciente das considerações apresentadas no site do professor (menu Considerações)
Laboratório de Sistemas Embarcados– versão 2014-2 Lab 0
Familiarização com o Ambiente de Desenvolvimento 1) Explanação do Professor sobre as aulas de laboratório
2) Formação de equipes
3) Cada equipe seleciona o ambiente de desenvolvimento que prefere usar: a. LPC1343 + IAR
b. LPC1343 + CodeRed c. LPC1768 + IAR
4) Conexão do kit conforme instruções de uso (transparências + regras na próxima página)
5) Uso do código exemplo visando familiarização com ambiente de desenvolvimento
6) Ao final deste experimento os membros da equipe devem saber:
a. conhecer a documentação disponível do hardware e do software em uso b. montar um projeto composto por diversos arquivos fonte (.c .h e .s) c. compilar e corrigir erros de compilação
d. configurar o linker
e. uso do debugger com simulador e com placa i. configuração da conexão
ii. descarregar o código
iii. execução controlada (passo-a-passo, breakpoint, ...) iv. execução do código C e do disassembly
v. inspeção de variáveis e memória
vi. inspeção e edição de registradores da CPU e de periféricos vii. pilha, terminal de I/O, ...
Procedimento de Uso dos Kits no Laboratório
1) Os kits LPC1343 Xpresso tem seus componentes expostos para que os usuários tenham acesso ao circuito. Desta forma devem ser manuseados com cuidado para evitar danos:
a. Não toque nos terminais, segure a placa pelas suas bordas b. Armazena sempre dentro do plástico anti-estático
c. Não coloque a placa sobre (ou próxima) a objetos metálicos e/ou condutores (moedas, canetas, clips, ...) para evitar curto circuitos d. utilize conectores apropriados para ter acesso aos sinais da placa
(é obrigação dos alunos trazer estes terminais para o laboratório assim como outros componentes eventualmente necessários)
2) Mantenha a sua banca limpa, guarde mochilas e materiais-não-em-uso ao invés de deixá-los sobre a bancada. Se a sua bancada estava desorganizada quando você chegou, bata uma foto e envie-a para o professor que irá encaminhá-la adequadamente. Mesmo neste caso, você deve deixar a bancada limpa e organizada ao final do experimento. Interrompa o experimento 5 min. antes do final da aula para ter tempo de organizar. Não atrase sua saída do lab para evitar transtornos às próximas aulas.
3) Utilize os cabos corretos e conectores corretos no kit: cabo USB prateado deve ser conectado ao JTAG (J-Link ou LPC-LINK), cabo USB preto deve ser conectado à alimentação (conector ao lado do bloco de terminais verde). Leia o manual da placa base antes de usar ! Se a sua turma de laboratório for a última do dia, guarde o kit de maneira organizada na caixa de papelão: cabos USB no fundo, plástico bolha, placa dentro do plástico anti-estático.
4) NUNCA SEPARE A PLACA MICROPROCESSADA DA PLACA BASE, para evitar danos aos conectores.
5) Verifique a configuração dos jumpers (contra a documentação do manual) para evitar gastar tempo de depuração. Use a configuração default e só faça alterações se for necessário.
Lab 1 - Assembly Cortex Programação Assembly:
Escreva em assembly uma função que implementa um filtro FIR (finite impulse response).
Esta função será chamada a partir de um programa em C.
Cada equipe deve desenvolver seus próprios casos de teste para esta função. A apresentação consiste em entregar ao professor um arquivo com o código assembly da rotina FIR (nomeie este arquivo como sNN_gMM.s – onde NN é o código da turma s11, s12, ... e MM é o número do grupo).
O código entregue será testado a partir de um programa de teste que filtra sinais senoidais digitalizados.
A assinatura da função é:
int fir(int s_in[], int size_i, int coef[], int size_coef, int out[]);
int s_in[] – vetor de amostras do sinal de entrada int size_i – número de amostras no vetor s_in int coef[] – vetor de coeficientes do filtro fir int size_coef – número de coeficientes do filtro int out[] – vetor com os resultados
- a função chamadora é responsável por reservar espaço de memória para o vetor out[]. O número de elementos deste vetor deve ser igual do vetor s_in. - a função fir retorna o número de elementos no vetor de resultados, tipicamente este valor é size_i – (size_coef – 1).
- os quatro primeiros parâmetros da função fir devem ser passados pelos registradores R0, R1, R2 e R3 (respectivamente). O parâmetro out é passado pela pilha. A função chamadora, escrita em C, encarrega-se desta alocação. Ver ATPCS.
- nos compiladores ARM um inteiro ocupa 4 bytes (32 bits), portanto, posições consecutivas no vetor estão em endereços distantes de 4.
- considere que os valores de entrada são representações em ponto fixo com valor adequado para não gerar overflow na saída.
Metodologia Sugerida:
- estudo/revisão dos conceitos sobre sinais amostrados no tempo - diagrama em blocos de um filtro FIR e equações pertinentes - planejamento das estruturas de dados a serem utilizadas - definição do algoritmo a ser utilizado pela função fir (*) - alocação de variáveis a registradores e posições de memória - implementação da função fir em assembly
- planejamento da(s) rotinas de teste - implementação em C das rotinas de teste - teste e depuração da função fir
- apresentação ao professor dos resultados
(*) – o algoritmo deve ser apresentado utilizando a notação de Diagramas de Atividades de UML 2.x. Ver na próxima página alguns dos símbolos gráficos disponíveis.
x=0; j = j+1; j = j-1; ativa saída Y1 j == 3 [V] [F] f1 ação ou processamento ou chamada de rotina início do fluxo
teste: Verdadeiro ou Falso
seleção: colocar os valores possíveis nas diversas saídas
LAB 2
Periféricos Integrados
Objeto
Código em C/C++ de comunicação pela porta serial do LPC1343.
Objetivos de Aprendizado
- Programação de periféricos integrados: UART. Portanto, o código de acesso a UART e rotinas de tratamento de interrupção devem ser desenvolvidos pela equipe. Não usar funções de bibliotecaou código pronto.
- Utilização de bibliotecas de funções de acesso a periféricos: biblioteca do display OLED - Entender o funcionamento das interrupções e das funções CMSIS associadas
Descrição
Desenvolver os seguintes arquivos:
- uart.c e uart.h que implementam o driver de comunicação serial - main.c que implementa o programa de comunicação com PC.
O driver UART deve ter funções de inicialização/configuração da UART e respectivas interrupções, transmissão serial, recepção serial e status da comunicação.
O arquivo com o programa de comunicação deve ter um buffer circular para recepção de caracteres pela UART e outro buffer circular para envio de caracteres pela serial. A recepção e transmissão de caracteres deve obrigatoriamente funcionar por
interrupção.
Os arquivos uart.c e uart.h não podem fazer nenhum #include de nenhum outro arquivo, nem mesmo do arquivo com os endereços dos registradores da UART. A totalidade destes arquivos deve ser desenvolvida pela equipe.
O arquivo main.c pode fazer includes, mas fora isto, todo o código em main.c deve ser desenvolvido pela equipe.
Requisitos
- taxa de comunicação: 115kbps
- formato dos caracteres: 8N1 ( 8 bits/char, sem paridade, 1 stop bit) - buffer circular de recepção: 32 bytes
- buffer circular de transmissão: 64 bytes
- interrupção de recepção: no 8º caracter recebido e por time-out de caracter (tempo de aprox. 4 caracteres)
- interrupção de transmissão: as causas da interrupção de transmissão devem ser selecionadas pela equipe
- apresentar no display OLED os caracteres recebidos (função terminal).
- os caracteres transmitidos devem ser os caracteres recebidos convertidos (maiúsculas viram minúsculas e vice-versa).
Demonstração
O professor utilizará um programa de terminal serial denominado TeraTerm rodando num PC para transferir caracteres e arquivos e verificar a resposta.
Metodologia
- estudo/revisão dos conceitos sobre comunicação serial - estudo da UART
- estudo do mecanismo de interrupção no Cortex-M - estudo das bibliotecas para acesso ao display OLED - planejamento das estruturas de dados a serem utilizadas - definição das funções que compõem o driver UART
- definição dos algoritmos (do driver e do programa de comunicação) - implementação
- planejamento de testes - teste e depuração
Laboratório 3:
Dois documentos devem ser entregues impressos na data especificada no site. A nota de APS é a nota destes documentos.
Documento 1: “Documento de Especificação e Estudo da Plataforma” Documento 2: “Documento de Projeto”
(ver em nas próximas páginas o detalhamento do conteúdo destes documentos). Objetivo:
O objetivo é implementar um sistema de controle de um elevador.
A parte mecânica do simulador será simulada. Utilizar o simulador desenvolvido no projeto SimSE (ver link SimSE no site).
A interligação física entre o simulador (software rodando no PC) e a placa Cortex se dá via porta serial, no caso, um COM virtual sobre USB. Utilizar o mesmo set-up do experimento 2.
O simulador reage a comandos enviados pela porta serial e informa o status do elevador também pela porta serial. A documentação desta comunicação está com o arquivo do simulador.
O controle do elevador deve ser um programa concorrente utilizando o CMSIS-RTOS. Pelo menos 3 tarefas devem ser implementadas e deve-se fazer uso do driver de comunicação serial desenvolvido no experimento 2, esse driver deve funcionar por interrupção tanto na transmissão como na recepção de bytes. O código deste driver deve ser totalmente desenvolvido pela equipe e não pode incluir código de terceiros.
O objetivo do controlador é enviar os comandos adequados para que o elevador atenda de forma eficiente aos pedidos de serviço do usuário, ou seja, as solicitações realizadas ao pressionar os botões.
O documento de projeto deve incluir um diagrama que apresente a estrutura da solução planejada. Este diagrama deve seguir a notação apresentada pelo professor em aula. Deve apresentar também diagramas de estado e diagramas de sequência.
Apresente no documento de projeto o planejamento do uso das memórias (Flash e RAM) disponíveis. Lembre-se que o LPC1343 possui um quantidade limitada de memória e seu uso deve ser muito bem planejado.
A especificação do elevador deve incluir requisitos de segurança e requisitos de desempenho.
Documento de Especificação e Estudo da Plataforma Parte I – Especificação do Produto
1) Introdução
breve descrição do produto a ser desenvolvido e seu contexto de uso Produto = controlador de elevador
2) Objeto
um parágrafo que resume a função do produto (para que ele serve) 3) Domínio do Problema
Descrever a(s) área(s) de conhecimento relacionadas ao projeto em questão. Que características são importantes. Vocabulário (jargão) e conceitos da área.
4) Contexto
apresentar um diagrama em blocos (sem detalhar o interior do produto) mostrando quem (pessoas/equipamentos) interagem com este produto. Descrever textualmente o
diagrama em blocos. 5) Interfaces
Descrever aspectos físicos (elétricos, mecânicos, ...) de cada interface, bem como aspectos lógicos (interpretação dos sinais, protocolos de comunicação).
6) Especificação funcional
aqui “função” significa: para que o equipamento serve, o que ele é capaz de fazer. Apresentar uma relação de requisitos do produto. Cada requisito deve ser específico a uma funcionalidade. Incluir os requisitos referentes a interface homem-máquina, i.e. o sistema de menus.
A especificação funcional deve ser a parte mais extensa deste documento (tipicamente 30% e deve, entre outros, detalhar as regras de operação)
7) Especificação não-funcional
neste projeto, limitar a especificação não-funcional apenas aos aspectos de desempenho
Parte II – Estudo da Plataforma
Para cada um dos periféricos relevantes do processador/placa base neste projeto apresentar:
- descrição do funcionamento
- planejamento de configuração (que modo de operação usar, qual a ordem de acesso aos registradores durante a inicialização, ...)
obs: sugere-se que cada parte deste documento (Parte I e Parte II) tenha de 8 a 15 páginas impressas.
Documento de Projeto 1) Arquitetura Funcional do Sistema
Neste contexto = sistema se refere ao produto em desenvolvimento
Apresentar um diagrama em blocos funcional. Cada bloco é uma função do sistema sem importar por hora se é HW ou SW.
2) Arquitetura Física do Sistema
Identificação das partes que compõem o sistema e seus relacionamentos. Vamos chamar estas partes de componentes do sistema: envolvendo componentes de HW e
componentes de SW.
cada bloco representa uma implementação em HW ou em SW. E.g. periféricos, tarefas, ISR, ...
3) Projeto dos componentes
Planejar a implementação de cada componente, fazer referências ao estudo da plataforma (documento anterior).