Mudanças entre as edições de "STE-EngTel (página)"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Limpou toda a página)
Etiqueta: anulando
 
(8 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
= Sistemas Embarcados =
 
  
*'''Professor:''' [[Roberto de Matos]]
 
*'''Encontros:''' segundas e sextas às 13:30 no Laboratório de Programação.
 
 
*[[STE-EngTel_(Plano_de_Ensino)| Plano de Ensino]].
 
 
 
 
<!--
 
=Lab Experiments=
 
 
*[[Cronograma de atividades (STE-EngTel) | Cronograma]].
 
* [http://docente.ifsc.edu.br/arliones.hoeller/ste/ Repositório de arquivos].
 
 
=Grades=
 
 
{| class="wikitable"
 
!scope="col"| Student
 
!scope="col"| HW1
 
!scope="col"| HW2
 
!scope="col"| HW3
 
!scope="col"| HW4
 
!scope="col"| Final
 
|-
 
|}
 
 
=Lab Experiments=
 
 
The experiments in this course are based on the project [[Embedded Systems Experiments for the Telecommunication Engineering Undergraduate Program]].
 
See this page for the [[Embedded_Systems_Experiments_for_the_Telecommunication_Engineering_Undergraduate_Program#Used_Equipment | Experimental Setup]].
 
We will use the [https://www.arduino.cc/en/Main/ArduinoBoardUno Arduino Uno] board as hardware platform, and will be developing software in C/C++ using the GNU compiler with the avrlibc.
 
We have plenty of Arduinos for use in the classroom, but if you can afford, you are encouraged to buy one for yourself to work on the extra-class assignments. They are available for less than R$50. [http://lista.mercadolivre.com.br/arduino-uno-r3 check MercadoLivre].
 
 
Arduino's microcontroller is Atmel's ATMega328P. Download its manual [http://www.atmel.com/images/atmel-8271-8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328-328p_datasheet_complete.pdf here].
 
 
Adafruit Protoshield Datasheet [https://cdn-learn.adafruit.com/downloads/pdf/adafruit-proto-shield-arduino.pdf]
 
 
= Syllabus =
 
 
{{collapse top| bg=lightyellow | expandir=true | Unit 01 - Get In: Hands on Microcontroller Software}}
 
 
== Unit 01 - Get In: Hands on Microcontroller Software ==
 
 
=== Introduction to Embedded Systems ===
 
*Read chapters 1 and 7 of [http://leeseshia.org/ Lee and Seshia, Introduction to Embedded Systems]
 
 
=== Embedded Systems Development: Design Principles ===
 
*[http://www.lisha.ufsc.br/teaching/esl/esd.pdf Embedded Systems Development: Design Principles]
 
 
=== General Porpuse Input Output and External Interrupts ===
 
*[http://www.lisha.ufsc.br/teaching/esl/io.pdf I/O Basics]
 
*[[ESTE: General Purpose Input and Output (GPIO) | Lab 01: GPIO - Hello LED]]
 
*[[ESTE: GPIO and External Interrupts - part 1 | Lab 02: GPIO Interrupts]]
 
*[[ESTE: GPIO and External Interrupts - part 2 | Lab 03: More GPIO Interrupts]]
 
 
=== Serial Communication ===
 
*Read chapter 10 of [http://leeseshia.org/ Lee and Seshia, Introduction to Embedded Systems]
 
*[[ESTE: UART - Serial Communication | Lab 04: UART - Serial Communication]]
 
 
=== Input/Output Buffers ===
 
*Read chapter 5 of [http://www.marilynwolf.us/CaC3e/ Wolf, Computers as Components]
 
*[[ESTE: UART - Interrupts and Circular Buffer | Lab 05: UART - Interrupts and Circular Buffer]]
 
 
=== Analog-to-Digital Conversion ===
 
*Read chapter 7 (sections 1 and 2) of [http://leeseshia.org/ Lee and Seshia, Introduction to Embedded Systems]
 
*[[ESTE: Analog-to-Digital Converter (ADC) and Sensor Reading | Lab 06: Analog-to-Digital Converters]]
 
*[[ESTE: Analog Temperature Sensor 2 (NTC - Negative Temperature Coeficient) | Lab 07: NTC - Negative Temperature Coeficient]]
 
 
=== Digital-to-Analog Conversion ===
 
*Read chapter 7 (section 3) of [http://leeseshia.org/ Lee and Seshia, Introduction to Embedded Systems]
 
*[[ESTE: Pulse Width Modulation (PWM) | Lab 08: Pulse Width Modulation (PWM)]];
 
 
{{collapse bottom}}
 
{{collapse top| bg=lightyellow | expandir=true | Unit 02 - Get Right: Introduction to Real-Time Systems}}
 
 
== Unit 02 - Get Right: Introduction to Real-Time Systems ==
 
 
=== Multitasking ===
 
*Read chapter 11 of [http://leeseshia.org/ Lee and Seshia, Introduction to Embedded Systems]
 
*Read chapter 6 (sections 1-4) of [http://www.marilynwolf.us/CaC3e/ Wolf, Computers as Components]
 
*Read about [http://www.freertos.org/ FreeRTOS]
 
 
=== Real-Time Scheduling ===
 
*Read chapter 12 of [http://leeseshia.org/ Lee and Seshia, Introduction to Embedded Systems]
 
*Read chapter 6 (sections 5-12) of [http://www.marilynwolf.us/CaC3e/ Wolf, Computers as Components]
 
*Lab 08: Real-Time Operationg System
 
 
{{collapse bottom}}
 
{{collapse top| bg=lightyellow | expandir=true | Unit 03 - Get Out: Networked Embedded Systems}}
 
 
== Unit 03 - Get Out: Networked Embedded Systems ==
 
 
=== Embedded Networks and Multiprocessors ===
 
*Read chapter 8 of [http://www.marilynwolf.us/CaC3e/ Wolf, Computers as Components]
 
 
=== Embedded Networks Seminar ===
 
*Will be covered by seminars. See Homework 04.
 
 
{{collapse bottom}}
 
{{collapse top| bg=lightyellow | expandir=true | Unit 04 - Get Done: Embedded System Design}}
 
 
== Unit 04 - Get Done: Embedded System Design ==
 
 
*[https://rocketboards.org/foswiki/view/Documentation/NiosIILinuxUserManual Running Linux on NIOSII]
 
 
{{collapse bottom}}
 
 
= Homework =
 
 
{{collapse top| bg=lightyellow | expandir=true | Homework 01: Mandrake Voltage Detector}}
 
 
The gerenal design of this project was carried out with the students during class.
 
 
To complete the assignment, each student will use an Arduino UNO platform and deliver:
 
*UML model of the application;
 
*Arduino implementatino of the application;
 
*C++/GCC implementation of classes for AVR's:
 
**GPIO;
 
**UART (with interrupts and input/output buffers);
 
**ADC (with interrupts and circular buffer).
 
*C++/GCC implementation of voltage detector application as described in class.
 
 
{{collapse bottom}}
 
 
{{collapse top| bg=lightyellow | expandir=true | Homework 02: Static Program Analysis}}
 
 
In this experiment, in doubles, students will perform an static analysis to specify time and power consumption profile of the Mandrake VD application (homework 1).
 
 
To complete the assignment, each student must:
 
*Instrument an Arduino UNO with an Osciloscope to measure, via a shunt resistor, current and voltage inputs for the board during program execution;
 
*Identify application's basic blocks;
 
*Measure average power (P=V.i) and execution time of each basic block;
 
*Write report describing the methodology and presenting the measurement results.
 
 
{{collapse bottom}}
 
 
{{collapse top| bg=lightyellow | expandir=true | Homework 03: Real-Time Operating System}}
 
 
In groups, each using different boards:
 
*Group 1: Gustavo, Iago, Fernando, Stephany - Intel Edison
 
*Group 2: Mathias, Ronaldo, Marcus - BeagleBone Black
 
*Group 3: Roicenir, João - Xilinx MicroZed
 
*Group 4: Giulio, Walter - Intel Galileo Gen 2
 
*Group 5: Guilherme, Vinicius - RaspberryPi 3
 
 
Each group must, initialy, generate a Yocto Linux Image with the following characteristics:
 
*Generate compact image (core-image-minimal);
 
*Generate toolchain (meta-toolchain);
 
*Use preempt-rt kernel type;
 
*Document additional Yocto layers and configurations used.
 
*'''Suggestion:''' Yocto 2.2 (morty) has just been released and there seems to be a few issues with it. Use Yocto 2.1 (krogoth) instead.
 
 
A few references to help you to get through:
 
*General doc: http://www.yoctoproject.org/docs/2.1/mega-manual/mega-manual.html
 
*Kernel types (for preempt-rt): http://www.yoctoproject.org/docs/2.1/mega-manual/mega-manual.html#kernel-types
 
*Atom (Intel Edison): http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-edison/about/
 
*BeagleBone: https://www.yoctoproject.org/downloads/bsps/krogoth21/beaglebone
 
*Xilinx Zynq (MicroZed): http://www.wiki.xilinx.com/Yocto
 
*Quark (Intel Galileo): https://www.yoctoproject.org/downloads/bsps/krogoth21/intel-core2-32-0
 
*RaspberryPi: http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/about/
 
 
{{collapse bottom}}
 
 
{{collapse top| bg=lightyellow | expandir=true | Homework 04: Embedded RT Linux Application}}
 
 
Deliver a report and source code of your RT application running on Linux with preempt_rt.
 
 
The application can be either any application defined by your team (in agreement with the lecturer), or a evaluation of Linux performance in your board.
 
 
If you choose to evaluate Linux performance, you can use the CyclicTest tool in both preempt_rt and ordinary Linux kernels and report a comparison. There is a paper bellow showing an example of performance comparisson among RT and non-RT versions of Linux, using the CyclicTest tool.
 
 
Documents:
 
*Real-Time Linux wiki: https://wiki.linuxfoundation.org/realtime/start
 
*How to Simple RT Linux Application: https://wiki.linuxfoundation.org/realtime/documentation/howto/howto_rt_application_base
 
*CyclicTest: https://rt.wiki.kernel.org/index.php/Cyclictest
 
*Paper from Prof. Brandenburg: https://people.mpi-sws.org/~bbb/papers/pdf/ospert13.pdf
 
 
{{collapse bottom}}
 
 
--!>
 

Edição atual tal como às 22h50min de 3 de março de 2020