Objetivos / Competências
Pretende-se que os alunos adquiram os conceitos fundamentais relativos:
-à organização e estrutura interna de um computador;
-à constituição interna de um processador;
-ao interface do processador com os restantes componentes de um computador;
-à representação interna de dados num computador;
-à metodologia de programação em linguagem Assembly;
-à adptação dos sistemas embebidos no mundo da Internet das Coisas (IoT);
-ao desenho e programação de sistemas embebidos;
Para exemplificação dos conceitos fundamentais são analisados sistemas computacionais baseados no CPU 8086 (16bits), assim como em Arduino.
Conteúdos programáticos resumidos
Representação dos dados:Tipo de dados: Propriedades - domínio, precisão e operações,Codificação e representação interna dos dados: Código binário natural; Sinal e valor absoluto; Complemento para 1; Complemento para 2; Código ASCII; Alternativas na representação de valores lógicos.Transbordo, Aumento de precisão.
Organização dum computador por níveis virtuais de utilização:Aplicação, linguagens de alto nível, assembly, sistema operativo e código máquina. Mecanismos de conversão entre níveis de utilização - compilação e interpretação.
Organização funcional de um computador:Unidade Central de Processamento (CPU), memória e unidades de I/O, Bus de dados, bus de endereços e bus de controlo - capacidade de endereçamento.
Análise do conjunto de instruções do CPU;Operações com dados;Controlo de execução;Mecanismos de interrupção do Arduino;Aprender conceitos principais sobre sistemas embebidos e sua arquitetura; Programação e controlo de unidades de I/O em sistemas embebidos;
Metodologias de ensino e critérios de avaliação
As aulas teóricas serão orientadas para a exposição de conteúdos e complementadas, sempre que possível, com problemas de natureza prática que promovam e suscitem a discussão colectiva. Nas aulas práticas serão realizadas fichas de trabalho (orientadas para o estudo de casos) em ambiente de laboratório, que visam consolidar os conceitos ministrados na teórica. Serão, ainda, realizados trabalhos práticos a desenvolver relacionados com Arduino. Nas aulas práticas serão utilizados ambientes de desenvolvimento adequados à programação em linguagem Assembly assim como o IDE de desenvolvimento do Arduino.
A classificação final é obtida pela média ponderada da avaliação teórica e avaliação prática. A avaliação teórica tem por base a realização de um teste escrito que contribui com 60% (12/20) para a classificação final.A avaliação prática consiste na realização de trabalhos práticos e mini-teste e contribui com 40% (8/20) para a class.final.
Bibliografia resumida
-The 8086 Book; Russel Rector, Gorge Alexy; Osborne/Mc-Graw Hill.
-The Intel microprocessors 8086/8088, 80286, 80386 and 80486 - Architecture, Programming and -Interfacing; Barry B. Brey; Prentice Hall.
-The 8086/8088 Family - Design, Programming and Interfacing; John Uffenbeck; Prentice Hall
-The Art of Assembly Language Programming; Randall Hyde.
-The 80x86 IBM PC and Compatible Computers (Volume I & II) Assembly Language, Design and Interfacing; Muhammad Ali Mazidi; Prentice-Hall
-Computer Architecture and Design; A.J. van de Goor; Addison-Wesley
-Computer Organization and Architecture; William Stallings; Prentice Hall
-Structured Computer Organization; Andrew S. Tanenbaum; Prentice Hall – International Editions
- Introduction to Embedded Systems by Shibu, 2009
- Building Internet of Things with the Arduino, by Doukas, Charalampos CreateSpace Independent Publishing Platform, 2012
- Programming Arduino: getting started with sketches by Monk, Simon, New York, NY, USA::McGraw-Hill,2012