|
|
(29 revisões intermediárias por 3 usuários não estão sendo mostradas) |
Linha 1: |
Linha 1: |
| = Embedded Systems =
| |
|
| |
|
| *'''Professor:''' [[Arliones Hoeller]]
| |
| *'''Meetings:''' Tuesdays, 13:30 and Fridays 15:40 at Programming Lab.
| |
| *'''[https://groups.google.com/forum/?hl=pt-BR#!forum/ste29008 Mailing list]'''
| |
|
| |
| *[[STE-EngTel_(Plano_de_Ensino)| Course Plan (Portuguese only)]]
| |
| *[[Cronograma de atividades (STE-EngTel) | Class Schedule (Portuguese only)]]
| |
|
| |
| * [http://docente.ifsc.edu.br/arliones.hoeller/ste/ Course File Repository]
| |
|
| |
| =Grades=
| |
| <!--
| |
| {| class="wikitable"
| |
| !scope="col"| Student
| |
| !scope="col"| HW1
| |
| !scope="col"| HW2
| |
| !scope="col"| HW3
| |
| !scope="col"| HW4
| |
| !scope="col"| Project
| |
| !scope="col"| Final
| |
| |-
| |
| | 121000556-5 || A || A || X || A || A || A
| |
| |-
| |
| | 121003145-0 || A || B || X || A || B || A
| |
| |-
| |
| | 121001865-9 || B || B || X || A || A || A
| |
| |-
| |
| | 121000653-7 || B || C || X || A || A || A
| |
| |-
| |
| | 121003004-7 || A || B || X || A || B || A
| |
| |-
| |
| | 122002047-8 || A || B || X || A || A || A
| |
| |}
| |
| -->
| |
|
| |
| <!--
| |
|
| |
| {| class="wikitable"
| |
| !scope="col"| Student
| |
| !scope="col"| Lab Reports
| |
| !scope="col"| Vision
| |
| !scope="col"| Specs
| |
| !scope="col"| Impl
| |
| !scope="col"| Intr
| |
| !scope="col"| Final
| |
| |-
| |
| | 121000556-5 || || || || || ||
| |
| |-
| |
| | 121003145-0 || || || || || ||
| |
| |-
| |
| | 121001865-9 || || || || || ||
| |
| |-
| |
| | 121000653-7 || || || || || ||
| |
| |-
| |
| | 121003004-7 || || || || || ||
| |
| |-
| |
| | 122002047-8 || || || || || ||
| |
| |}
| |
|
| |
| * Evaluation Checkpoints:
| |
| ** Lab Reports: set of reports of lab experiments.
| |
| ** Vision: Build initial version of report containing the [https://en.wikipedia.org/wiki/Vision_document Product Vision Document].
| |
| ** Specs: Extend the report by adding system specification, analysis, and test plan.
| |
| ** Impl: Extend the report describing system implementation and the test results of the tests of initial modules (according to the test plan).
| |
| ** Intr: Finalize the report by adding the results of the integration of the modules and related tests.
| |
| -->
| |
|
| |
| =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].
| |
|
| |
|
| |
| == Primary Evaluation ==
| |
|
| |
| {| class="wikitable"
| |
| !scope="col"| Homework
| |
| !scope="col"| Deadline
| |
| |-
| |
| | Homework 1-3 || May 13th, 2016
| |
| |-
| |
| | Homework 4-5 || June 10th, 2016
| |
| |-
| |
| | Final Project Design || June 28th, 2016
| |
| |-
| |
| | Final Project Implementation || July 22nd, 2016
| |
| |}
| |
|
| |
| == Homework ==
| |
|
| |
| {| class="wikitable"
| |
| !scope="col"| Homework
| |
| !scope="col"| Links
| |
| !scope="col"| Deadline
| |
| |-
| |
| | 1. Led Blinking || [[ESTE: General Purpose Input and Output (GPIO)]] || April 15th, 2016
| |
| |-
| |
| | 2. Light Keyboard || [[ESTE: GPIO and External Interrupts - part 1]], [[ESTE: GPIO and External Interrupts - part 2]] || April 15th, 2016
| |
| |-
| |
| | 3. Light Keyboard the Hard Way || [[ESTE: Light Keyboard from Scrach using GNU GCC and Binutils]] || April 29th, 2016
| |
| |-
| |
| | 4. ADC and Sensors || [[ESTE: Analog-to-Digital Converter (ADC) and Sensor Reading]], [[ESTE: Analog Temperature Sensor 2 (NTC - Negative Temperature Coeficient)]] || June 3rd, 2016
| |
| |-
| |
| | 5. Timer and PWM || [[ESTE: Pulse Width Modulation (PWM)]] || June 17th, 2016
| |
| |}
| |
|
| |
| = 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: UART and Input/Output Buffers}}
| |
| 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;
| |
|
| |
| Pseudo-code for the test application:
| |
| <syntaxhighlight lang=c>
| |
| void loop() {
| |
| char x = read_from_input_buffer();
| |
| delay(TIME);
| |
| write_to_output_buffer(x);
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| Students must hand-in the source code used in the experiment and a short report (2 pages max.) consisting of:
| |
| #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 bottom}}
| |
|
| |
| {{collapse top| bg=lightyellow | expandir=true | Homework 02: Analog and Digital Interchanges}}
| |
|
| |
| For this homework, each student must:
| |
| #Execute [[ESTE: Analog-to-Digital Converter (ADC) and Sensor Reading | Lab 06: Analog-to-Digital Converters]].
| |
| #Execute [[ESTE: Analog Temperature Sensor 2 (NTC - Negative Temperature Coeficient) | Lab 07: NTC - Negative Temperature Coeficient]].
| |
| #Implement and calibrate a digital thermometer using the NTC 10KOhm Thermistor using an application with the following characteristics:
| |
| ##Use the Round-Robin With Interrupts architecture (suggestion: model it using a state-machine);
| |
| ##Use an ADC buffer to store ADC conversions;
| |
| ##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.
| |
|
| |
| {{collapse bottom}}
| |
|
| |
| {{collapse top| bg=lightyellow | expandir=true | Homework 03: Real-Time Operating System}}
| |
|
| |
| {{collapse bottom}}
| |
|
| |
| {{collapse top| bg=lightyellow | expandir=true | Homework 04: Embedded Networks}}
| |
|
| |
| *In groups of two, students must choose one of the papers bellow and present a seminar during class. Students must:
| |
| **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}}
| |
| -->
| |