|
|
(17 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"| Final
| |
| |-
| |
| | 131000929-5 || 7 || 10 || 6 || 7 || 7
| |
| |-
| |
| | 131000232-0 || 5 || 9 || 9 || 8 || 7
| |
| |-
| |
| | 122001432-0 || 7 || 6 || 9 || 8 || 7
| |
| |-
| |
| | 131000846-9 || 9 || 10 || 6 || 8 || 9
| |
| |-
| |
| | 131004419-8 || 4 || 9 || 6 || 7 || 6
| |
| |-
| |
| | 131001281-4 || 5 || 0 || 6 || 4 || 4
| |
| |-
| |
| | 121001105-0 || 9 || 10 || 8 || 7 || 8
| |
| |-
| |
| | 122006899-3 || 10 || 10 || 8 || 8 || 9
| |
| |-
| |
| | 131001070-6 || 5 || 4 || 7 || 5 || 6
| |
| |-
| |
| | 131001038-2 || 6 || 10 || 10 || 10 || 9
| |
| |-
| |
| | 131000257-6 || 7 || 10 || 6 || 7 || 7
| |
| |-
| |
| | 131000149-9 || 6 || 6 || 8 || 6 || 6
| |
| |-
| |
| | 131000228-2 || 5 || 8 || 9 || 8 || 7
| |
| |}
| |
|
| |
| =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].
| |
|
| |
|
| |
| = 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 - 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.
| |
|
| |
| {{collapse bottom}}
| |
|
| |
| {{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 top| bg=lightyellow | expandir=true | 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:
| |
| *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 - 18/12/2016}}
| |
|
| |
| 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}}
| |