Saltar para:
Logótipo
Você está em: Início > L.EIC018

Laboratório de Computadores

Código: L.EIC018     Sigla: LC

Áreas Científicas
Classificação Área Científica
OFICIAL Engenharia Informática e Computação

Ocorrência: 2024/2025 - 2S Ícone do Moodle

Ativa? Sim
Unidade Responsável: Departamento de Engenharia Informática
Curso/CE Responsável: Licenciatura em Engenharia Informática e Computação

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
L.EIC 494 Plano Oficial 2 - 6 52 162

Docência - Responsabilidades

Docente Responsabilidade
Francisco António Ferraz Martins de Almeida Maia Regente
Mais informaçõesA ficha foi alterada no dia 2025-02-05.

Campos alterados: Componentes de Avaliação e Ocupação, Melhoria de classificação, Bibliografia Complementar, Obtenção de frequência, Fórmula de cálculo da classificação final, Obtenção de frequência, Melhoria de classificação, Fórmula de cálculo da classificação final, Componentes de Avaliação e Ocupação, Bibliografia Complementar, Bibliografia Complementar, Componentes de Avaliação e Ocupação, Fórmula de cálculo da classificação final, Obtenção de frequência

Língua de trabalho

Português - Suitable for English-speaking students

Objetivos

1- Enquadramento

 Os dispositivos periféricos são uma parte fundamental dum computador, sem a qual a utilidade ou a facilidade de uso dos computadores seriam significativamente inferiores. A importância destes dispositivos em sistemas baseados em computadores tem crescido desde os primórdios dos computadores (cerca de 1950) e continua com a difusão cada vez maior de sistemas embebidos. Contudo, a programação dos dispositivos periféricos usando a sua interface programática, i.e. a interface de "hardware", requer conhecimentos e técnicas específicas.

2- Objetivos Específicos

Os objetivos da unidade curricular são dotar os estudantes com conhecimentos essenciais para serem capazes de:

    • usar a interface de "hardware" de periféricos comuns;
    • desenvolver "software" de baixo nível, p.ex. "device drivers", e de "software" embebido;
    • usar a linguagem de programação C de modo estruturado;
    • desenvolver programas codificados em C e em “assembly”
    •  fazer “debugging” de forma sistemática (com base no método experimental científico)
    • utilizarem várias ferramentas de desenvolvimento de software (compiladores e compiladores cruzados, “assemblers”, “linkers”, "build automation tools", sistemas de controlo de versões)

3- Distribuição Percentual

Científica: 30%
Tecnológica: 70%

Resultados de aprendizagem e competências

Todos os estudantes que terminarem a unidade curricular com sucesso deverão compreender os principais modelos de acesso a dispositivos periféricos e ser capazes de os aplicar em programas de alto nível relativamente complexos.

 

Modo de trabalho

Presencial

Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)

Considera-se como essencial para alcançar os objetivos acima enunciados, a aprovação a unidades curriculares (UC) cujo conteúdo é o das UCs:

    • Programação
    • Arquiteturas de Computadores
    • Sistemas Operativos

Programa

Periféricos de entrada/saída e seus modos de funcionamento. Mapeamento direto no espaço de endereçamento de memória.  Acesso a periféricos no modo "polled" e por interrupção. Interrupções nos processadores IA-32 e ARM e respetivos controladores de interrupções do PC, escrita de rotinas de interrupção. 

Periféricos típicos de um PC e de plataformas embebidas.

Programação na linguagem C: principais diferenças em relação à linguagem C++, métodos para estruturação do código. Organização da memória dum processo. Funções: mecanismo de chamada, passagem de parâmetros, armazenamento local e retorno de valores. Programação baseada em eventos. Máquinas de estados.

Criação e utilização de bibliotecas. Ligação estática de código objecto.  Programação combinada em C e "assembly". Técnicas sistemáticas para “debugging” baseadas no método científico experimental.

Criação e utilização de bibliotecas. Ligação estática de código objeto.

Utilização de ferramentas de desenvolvimento de software: cc, make, ar, diff, patch, Git, doxygen.

Bibliografia Obrigatória

Elecia White; Making Embedded Systems: Design Patterns for Great Software, O'Reilly Media, Inc., 2011. ISBN: 9781449302146

Bibliografia Complementar

Derek Molloy; Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux, Wiley, 2016. ISBN: 9781119188687
Arpaci-Dusseau , Remzi H.; Operating systems : three easy pieces (Capítulos 1, 2, 35 e 36)

Observações Bibliográficas

 


Em situações excecionais (por exemplo, alunos Erasmus inscritos na unidade curricular), as aulas poderão ser lecionadas em Inglês.

Métodos de ensino e atividades de aprendizagem

"Aprender fazendo". Nas primeiras 10 das aulas laboratoriais os estudantes realizam em grupos de 2 estudantes  pequenos trabalhos práticos sobre periféricos comuns do PC ou em plataformas computacionais para sistemas embebidos e aplicando técnicas de programação específicas. Nas restantes aulas laboratoriais será realizado um projeto proposto pelos estudantes que deverá integrar a maioria dos periféricos e técnicas estudadas.

Nas aulas teóricas faz-se a exposição dos conceitos, tendo sempre em vista a sua aplicação prática, e discute-se os pormenores necessários à realização dos trabalhos práticos e do projeto.

Software

Minix 3
VirtualBox
Doxygen
CLANG compiler and assembler
Git sistema de controlo de versões

Palavras Chave

Ciências Físicas > Ciência de computadores > Arquitectura de computadores
Ciências Físicas > Ciência de computadores > Programação

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

Designação Peso (%)
Teste 40,00
Trabalho laboratorial 60,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Estudo autónomo 30,00
Frequência das aulas 52,00
Trabalho laboratorial 80,00
Total: 162,00

Obtenção de frequência

Para a obtenção de frequência os estudantes deverão não exceder o limite de faltas (25% das aulas previstas).


Fórmula de cálculo da classificação final

Nota final = 0,4*T + 0,6*Proj

onde:

T = (T1+T2)/2

T1, T2 - classificação do primeiro e do segundo teste respectivamente

Proj - classificação do projeto

Embora o projeto seja realizado em grupos de 4 estudantes, excecionalmente de 3 estudantes, membros do mesmo grupo podem ter classificações diferentes dependendo da sua contribuição.

Para obter aprovação é necessário obter no mínimo 8.0 valores à componente T (média dos testes). 

Provas e trabalhos especiais

Não há.

Avaliação especial (TE, DA, ...)

A avaliação dos estudantes inscritos em regimes especiais, TE, DA, ..., é idêntica à dos estudantes inscritos em regime normal.

Melhoria de classificação

A classificação dos testes pode ser melhorada (para cumprir requisitos de aprovação ou melhorar a nota) por realização duma prova única semelhante durante o período de recurso dos exames. Para aceder a esta prova é necessário ter frequência.

Observações

Em situações excecionais (por exemplo, alunos Erasmus inscritos na unidade curricular), as aulas poderão ser lecionadas em Inglês.

Recomendar Página Voltar ao Topo
Copyright 1996-2025 © Faculdade de Engenharia da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2025-06-16 às 09:47:42 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias