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
Linha 163: Linha 163:
  
 
{{collapse bottom}}
 
{{collapse bottom}}
 
<!--
 
  
 
= Homework =
 
= Homework =
  
{{collapse top| bg=lightyellow | expandir=true | Homework 01: UART and Input/Output Buffers}}
+
{{collapse top| bg=lightyellow | expandir=true | Homework 01: Mandrake Voltage Detector - 31/10/2016}}
For this homework, each student must:
 
#Execute [[ESTE: UART - Interrupts and Circular Buffer | Lab 05: UART - Interrupts and Circular Buffer]].
 
#Implement an UART Loopback Application with the following characteristics:
 
##Use the Round-Robin With Interrupts architecture (suggestion: model it using a state-machine);
 
##Use separate input and output buffers with configurable length;
 
##Modify the application loop to use a delay to simulate data processing for each received byte (see loop pseudo-code bellow);
 
#Considering the application as a queue system, where bytes arrive through the serial and leave through the output buffer, analyze this communication problem using the queueing theory utilization theorem:
 
##Define the worst-case arrival rate (A, in bytes/second, remember that an 8N1 serial will send 1 start bit, 8 data bits, and 1 stop bit);
 
##Define the worst-case departure rate (D, in bytes/second, assume it is, in theory, the inverse of the processing time);
 
##Compute the utilization of the queue (U=A/D, meaning that U is the amount of bytes going to the queue every second);
 
##Build a graph where the x axis is the processing time (P={1,4,8}, ms) and the y axis is the minimum buffer size for a 1-second data transfer busrt;
 
##Plot in this graph curves for different UART bitrates (B={19200,57600,115200}, bps).
 
#Finally, run the nine configurations of the experiment (PxB) in your board.
 
##Compare the experimental results to the analytical model;
 
##Plot the same graph for the experimental results;
 
##Discuss and justify the differences and/or similarities of the analytical and experimental results.
 
  
*Use [http://docente.ifsc.edu.br/arliones.hoeller/ste/milli_counter.tgz this timer implementation] to build the processing delay;
+
The gerenal design of this project was carried out with the students during class.
  
Pseudo-code for the test application:
+
To complete the assignment, each student will use an Arduino UNO platform and deliver:
<syntaxhighlight lang=c>
+
*UML model of the application;
void loop() {
+
*Arduino implementatino of the application;
  char x = read_from_input_buffer();
+
*C++/GCC implementation of classes for AVR's:
  delay(TIME);
+
**GPIO;
  write_to_output_buffer(x);
+
**UART (with interrupts and input/output buffers);
}
+
**ADC (with interrupts and circular buffer).
</syntaxhighlight>
+
*C++/GCC implementation of voltage detector application as described in class.
  
Students must hand-in the source code used in the experiment and a short report (2 pages max.) consisting of:
+
{{collapse bottom}}
#Introduction (describe the problem being studied)
 
#Analytical model (equations and graph)
 
#Experimental Setup (Material and Methods)
 
#Results (the other graph)
 
#Discussion
 
  
[http://docente.ifsc.edu.br/arliones.hoeller/templates/lab_report-short.zip This template] can be used to build the report.
+
{{collapse top| bg=lightyellow | expandir=true | Homework 02: Static Program Analysis - 13/11/2016}}
  
 +
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 bottom}}
  
{{collapse top| bg=lightyellow | expandir=true | Homework 02: Analog and Digital Interchanges}}
+
{{collapse top| bg=lightyellow | expandir=true | Homework 03: Real-Time Operating System - 05/12/2016}}
  
For this homework, each student must:
+
In groups, each using different boards:
#Execute [[ESTE: Analog-to-Digital Converter (ADC) and Sensor Reading | Lab 06: Analog-to-Digital Converters]].
+
*Group 1: Gustavo, Iago, Fernando, Stephany - Intel Edison
#Execute [[ESTE: Analog Temperature Sensor 2 (NTC - Negative Temperature Coeficient) | Lab 07: NTC - Negative Temperature Coeficient]].
+
*Group 2: Mathias, Ronaldo, Marcus - BeagleBone Black
#Implement and calibrate a digital thermometer using the NTC 10KOhm Thermistor using an application with the following characteristics:
+
*Group 3: Roicenir, João - Xilinx MicroZed
##Use the Round-Robin With Interrupts architecture (suggestion: model it using a state-machine);
+
*Group 4: Giulio, Walter - Intel Galileo Gen 2
##Use an ADC buffer to store ADC conversions;
+
*Group 5: Guilherme, Vinicius - RaspberryPi 3
##Implement the Steinhart-Hart model for the Thermistor reading and calibrate it;
 
##Implement the Beta model for the Thermistor reading and calibrate it;
 
#Compare the precision of both models and write a report containing:
 
##Introduction (describe the problem being studied)
 
##Analytical models (equations and graphs)
 
##Experimental Setup (Material and Methods)
 
##Results (experimental graphs)
 
##Discussion
 
  
[http://docente.ifsc.edu.br/arliones.hoeller/templates/lab_report-short.zip This template] can be used to build the report.
+
Each group must, initialy, generate a Yocto Linux Image with the following characteristics:
 
+
*Generate compact image (core-image-minimal);
{{collapse bottom}}
+
*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.
  
{{collapse top| bg=lightyellow | expandir=true | Homework 03: Real-Time Operating System}}
+
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 bottom}}
  
{{collapse top| bg=lightyellow | expandir=true | Homework 04: Embedded Networks}}
+
{{collapse top| bg=lightyellow | expandir=true | Homework 04: Embedded RT Linux Application - 18/12/2016}}
  
*In groups of two, students must choose one of the papers bellow and present a seminar during class. Students must:
+
Deliver a report and application source code of your RT application running on Linux.
**Hand-in to the Professor an one-page abstract of the paper (72 hours before presentation)
 
**Publish for the audience a set of slides (24h before presentation)
 
**Present a talk on the paper that must last between 25 and 30 minutes
 
  
*Papers:
 
**Group 1: Thiago Werner e Elton Broering
 
***Khanafer, M.; Guennoun, M.; Mouftah, H.T., "[http://dx.doi.org/10.1109/SURV.2013.112613.00094 A Survey of Beacon-Enabled IEEE 802.15.4 MAC Protocols in Wireless Sensor Networks]", in Communications Surveys & Tutorials, IEEE , vol.16, no.2, pp.856-876, Second Quarter 2014.
 
**Group 2: Jean Sant'Ana e Danilo Bedaque
 
***Galli, S.; Scaglione, A.; Zhifang Wang, "[http://dx.doi.org/10.1109/JPROC.2011.2109670 For the Grid and Through the Grid: The Role of Power Line Communications in the Smart Grid]", in Proceedings of the IEEE , vol.99, no.6, pp.998-1027, June 2011.
 
**Group 3: Thiago Bonotto e Tiago Teixeira
 
***Khazali, I.; Boulais, M.; Cole, P., "[http://dx.doi.org/10.1109/DASC.2009.5347574 AFDX software network stack implementation — Practical lessons learned]", in Digital Avionics Systems Conference, 2009. DASC '09. IEEE/AIAA 28th , vol., no., pp.1.B.5-1-1.B.5-10, 23-29 Oct. 2009.
 
***Kemayo, G.; Benammar, N.; Ridouard, F.; Bauer, H.; Richard, P., "[http://dx.doi.org/10.1109/ETFA.2015.7301463 Improving AFDX end-to-end delays analysis]", in Emerging Technologies & Factory Automation (ETFA), 2015 IEEE 20th Conference on , vol., no., pp.1-8, 8-11 Sept. 2015.
 
  
 
{{collapse bottom}}
 
{{collapse bottom}}
-->
 

Edição das 08h05min de 23 de novembro de 2016

Embedded Systems

Grades

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 Experimental Setup. We will use the 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. check MercadoLivre.

Arduino's microcontroller is Atmel's ATMega328P. Download its manual here.


Homework

Homework Links Deadline
1. Mandrake VD Deliver source code and UML model of GCC+Arduino voltage detector built during classes. 31/10/2016
2. Static Program Analysis Deliver a report on Mandrake VD containing execution time and power consumption analysis. 13/11/2016
3. Embedded Yocto RT-Linux Deliver a report describing the generation process of a Yocto Linux image with real-time support for your project board. Include application definition (project 4). 05/12/2016
4. RT Application Deliver a report and application source code of your RT application running on Linux. 18/12/2016

Syllabus

Unit 01 - Get In: Hands on Microcontroller Software

Unit 01 - Get In: Hands on Microcontroller Software

Introduction to Embedded Systems

Embedded Systems Development: Design Principles

General Porpuse Input Output and External Interrupts

Serial Communication

Input/Output Buffers

Analog-to-Digital Conversion

Digital-to-Analog Conversion

Unit 02 - Get Right: Introduction to Real-Time Systems

Unit 02 - Get Right: Introduction to Real-Time Systems

Multitasking

Real-Time Scheduling

Unit 03 - Get Out: Networked Embedded Systems

Unit 03 - Get Out: Networked Embedded Systems

Embedded Networks and Multiprocessors

Embedded Networks Seminar

  • Will be covered by seminars. See Homework 04.
Unit 04 - Get Done: Embedded System Design

Unit 04 - Get Done: Embedded System Design

Homework

Homework 01: Mandrake Voltage Detector - 31/10/2016

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.
Homework 02: Static Program Analysis - 13/11/2016

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.
Homework 03: Real-Time Operating System - 05/12/2016

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:

Homework 04: Embedded RT Linux Application - 18/12/2016

Deliver a report and application source code of your RT application running on Linux.