Enginyeria de programari per a sistemes embeguts (S1) +
Tema 1: Introducció als sistemes embeguts (1h)
Conceptes bàsics dels sistemes embeguts. Característiques diferencials
Tipus de sistemes embeguts
Aplicacions dels sistemes embeguts
Seguretat dels sistemes embeguts
Tema 2: Llenguatges de programació per a sistemes embeguts (1h)
Llenguatges de baix nivell per a sistemes embeguts. Assemblador
Llenguatges d'alt nivell per a sistemes embeguts. C i eines de compilació.
Llenguatges de scripting útils
Interfície entre diferents llenguatges de programació
Tema 3: Arquitectures SW/HW per a sistemes embeguts (1h)
CPUs
Memòries
Hosted/Hostless
Flaix/Flashless
SDK i API de clients
EVKs
Tema 4: Desenvolupament de programari per a sistemes embeguts (1h)
Cicle de vida del desenvolupament de programari per a sistemes embeguts
Metodologies agiles de desenvolupament de programari per a sistemes embeguts
Eines de desenvolupament de programari per a sistemes embeguts
Tema 5: Descripció de característiques desitjables del flux de desenvolupament (2h)
Reduccion del Time-to-market
Definició de requisits
o Funcionals
o Temporals
o Cost
o Etc.
Arquitectura de Sistema
Co-disseny HW/SW
o Plataformes de proves HW/SW
Simulacions
Emuladors
FPGAs
o Definició d'interfícies HW/SW
o HW drivers
o Procés de `bringup
Test Driven Development (TDD)
Control de versions (SCM)
Gestió de tasques i errors en projectes (Agile + Jira)
Tests de Sistema
Sistemes d'Integració Contínua
Test benches
Documentació
Tema 6: Disseny de programari per a sistemes embeguts (3h)
SW product line: HW and SW configurations
Arquitectura SW de capes, components i interfícies
o Disseny per al re-use
o Capes d'abstracció, HAL, OSAL.
o Codi independent d'aplicació
o Codi dependent d'aplicació
o Components de tercers i qüestions legals
Disseny per a compatibilitat cap endarrere
Disseny escalable
Ús extensiu de tecnicas de programacion defensiva (assert)
o Revisió mèdica de hard/soft deadlines
o Xec o de problemes amb la memòria (overwrites, stack overflows, etc)
Sistemes operatius de temps real (RTOS)
o Configuracion
o Threads i prioritats
o Interrupcions
o Timers
o Stacks
o Primitives de comunicacion
o Aplicacions multiprocessador
o Utilitats de debug i analisis del rendiment
o Problemes recurrents:
Thread preemption
Temps de resposta a interrupcions
Inversion de prioritats
Tipus de Components
o HOST SW: drivers, apps, libs
o Microprogramari: dev, prod, BIST, loader
o Eines i scripts
o Interface públics / privats
Tema 7: Funcionalitats usuals en sistemes embeguts (2h)
Configuració especifica del producte
o Producció
o Remota
SW upgrades
SDK per a estendre/canviar funcionalitat
Flaix FS
Interfícies
o JTAG
o UART
o SPI
o Consola de debug/operacion
Watchdog
Eines de debug
Memòria dinàmica
Tema 8: Optimització de SW en Sistemes Embeguts (2h)
Memòria vs Rendiment
Cost vs Facilitat en el desenvolupament
Requisits HW
Optimització de Memòria
o Compactació d'estructures de dades
o Dades en memòries compartides
o Assignació de memòria (linker script)
o Reutilització de memòria
o Implementació de subsets de llibreries (matemàtiques, libc)
Optimització de rendiment
o Aritmètica de punt fix
o Ús d'assemblador.
o Re-escriptura de codi per a ús de HW específic (DSP)
o DMA
Tema 9: Anàlisi de fallades en Sistemes Embeguts (2h)
Requisits HW
JTAG
Unit Tests
Logs (serial, ethernet, files).
Debug Buffers
#CPU Trace buffer
Memory dumps
Anàlisi de problemes en temps. Profiling
Analitze i visualització de dades.
Debug en sistemes multiprocessador
LABORATORI:
La duració de cada laboratori serà de 1,5h:
Laboratori 1: Disseny de l'arquitectura d'un sistema embegut
Requisits
Arquitectura i codiseño HW/SW
Avantatges i desavantatges de les diferents opcions quant a cost, facilitat de desenvolupament, rendiment, etc.
Laboratori 2: Màquina virtualizada per a desenvolupament Virtualizació de la plataforma de disseny (Docker)
Eines de desenvolupament (GNU)
Sistema de control de versions (GIT)
Unit tests (Google Test)
Anàlisi Estàtica de Codi (CppCheck)
Cobertura de testatge (Gcov)
Anàlisi dinàmica de Codi (Valgrind/Electric Fence)
Laboratori 3: Implementació de plataforma SW independent de l'aplicació sobre un simulador de RTOS
Laboratori 4: Implementació d'utilitats per a debug (I)
Laboratori 5: Implementació d'utilitats per a debug (I)
Laboratori 6: Implementació de Mock per a simular un HW especifique
Laboratori 7: Implementació d'una aplicació real estafe exemple sobre la plataforma anterior (I)
Laboratori 8: Implementació d'una aplicació real time exemple sobre la plataforma anterior (II)
Laboratori 9: Debug funcional de l'aplicació
Laboratori 10: Anàlisi de rendiment i ús de memòria
Control de qualitat (QA) en sistemes embeguts (S2) +
TEORIA (15h)
Tema 0: Conceptes de validació i assegurament de la qualitat (QA)
Model en V
Requisits
Proves
Depuració i defectes
Conceptes de CI i de #CD (Continuous Integration & Continuous Delivery)
Tema 1: Definició de requisits
Requisits maquinari
Requisits programari
Requisits de sistema
Eines de gestió de requisits
Tema 2: Definició de prova a partir de requisits
Eines existents vs pròpies
Tipus de proves (caixa negra, caixa blanca, funcionals, no funcionals...)
Definició d'indicadors clau de rendiment (KPI) a partir de requisits
Definició de criteris d'acceptació pass/fail
Tema 3: Introducció a la validació de sistemes embeguts
Validació de sistemes embeguts vs sistemes programari:
Disponibilitat de recursos
Temps d'execució
Possibilitat d'automatització
Definició de sistema sota prova
Interacció amb el sistema baix prova
Tema 4: Execució i automatització de proves
Definició de bancs de prova
Proves automàtiques vs manuals: Per què automatitzar
Automatització:
Codificació: Control de canvis
Instrumentació
Execució
Informes
Eines:
Llenguatges de programació per a proves automàtics
Eines per a registrar progrés de proves
Frameworks de prova
Recol·lecció organitzada de dades per a informe de defectes
Tema 5: Defectes
Què és un defecte i com identificar-los
Com reportar un defecte correctament
Eines d'informe i traçabilitat de defectes
Tema 6: CI per a productes embeguts
Què ofereix una eina de CI en la validació de productes embeguts:
Definició de treballs fàcilment repetibles
Distribució dels treballs entre maquinari disponible
Avantatges de tindre un CI automatitzat:
Optimització de temps maquina
Distribució de recursos
Informes de resultats automàtics
Gestió de bancs de prova:
Coexistència entre automatització i ús manual de recursos
Interacció dels components d'un entorn de CI
Eines habituals de CI:
Jenkins, Teamcity, Jira Workflow
Tema 7: Obtenció i anàlisi d'indicadors clau de rendiment (KPI)
KPI relacionats amb el producte:
Rendiment
Estabilitat
Repetibilidad
KPI relacionats amb l'entorn de CI:
Cobertura de requisits
Temps entre detecció de defecte i l'arranjament
Ús de recursos
LABORATORI (15h)
Laboratori 1: Definir requisits a partir d'una descripció breu d'un producte.
Laboratori 2: Definició de proves a partir de requisits. Pla de prova.
Laboratori 3: Execució manual d'un pla de prova. Proves exploratòries.
Laboratori 4: Automatització de les proves definides.
Laboratori 5: Identificació i reporte de defectes a partir dels resultats de les proves.
Laboratori 6: Creació d'un entorn CI complet.
Laboratori 7: Definició de KPI a partir de requisits i resultats de les proves.
Sistemes operatius en temps real (S3) +
TEORIA (10h)
Conceptes generals d'arquitectura de computadors
o L'arquitectura (ISA: Instruction Set Architecture)
Diferències entre CISC i RISC
o La #CPU (Unitat Central de Procés)
Unitat de control
ALU (Unitat Aritmètic-Lògica)
Busos
Cache d'instruccions
Pipelining
Registres
o Cores
o Memòria (#ROM, #RAM)
Memòria caixet
o Perifèrics d'entrada/eixida
Interrupcions
o Microcontroladors
Conceptes generals de programari
o Llenguatges de programació
Relació entre joc d'instruccions, codi objecte i llenguatge assemblador
o Tipus d'arxiu executable
o Compiladors
o El linker o enlazador
Linker scripts i scatter files
o Memòria estàtica i dinàmica
El stack i el heap
o El carregador d'arrencada o bootloader
Temps real i conceptes de RTOS
o RTOS vs GPOS
Latency
o RTOS vs bare-metall (super loop)
o Kernel / Scheduler
preemptive estafe-slicing
cooperative estafe-slicing
Tick, Aneu-li task, Ticless aneu-li
o Interrupcions maquinari i programari
o Tasques i fils
thread stack
prioritats
o Paral·lelisme i concurrència
Secció Crítica
Semàfors, mutex i operacions atòmiques
Cues de missatges o altres mecanismes
Condition variables
Problemes clàssics
productor/consumidor
condició de carrera
inversió de prioritats
o Processadors multi-core
SMP (Symetric Multi-Processing)
AMP (Asymmetric Multi-Processing)
o Comunicació entre tasques
Anàlisis dels RTOS més comunament usats
o FreeRTOS
o MicroC/US-II (uCOS)
o ThreadX
o RTEMS
o Zephyr
o VxWorks
RTOS en FPGAs
o Processadors softcore. Exemples
Xilinx Microblaze
Tensilica Xtensa
Implementacions RISC-V (La meua-V RV32, NEORV32, FEMTORV32)
LABORATORI (20h)
Projecte d'un xicotet sistema controlat per RTOS:
Control d'un ventilador accionat per motor #DC (PWM) de manera automàtica mitjançant sensor de temperatura i controlable mitjançant comandos per Ethernet.
Projecte industrial en microelectrònica +
Els continguts del "Projecte Industrial en Microelectrònica" seran diferents depenent dels objectius concrets del projecte a realitzar. Poden ser objecte de tema d'aquells que siguen propis dels estudis del títol. En particular, es podran projectar tota classe de sistemes i dispositius microelectrónics per quants procediments permeta realitzar l'enginyeria actual. També podrà ser objecte del Projecte Industrial en Microelectrònica els treballs de recerca i desenvolupament, i el modelatge teòric o numèric dels dispositius, circuits o sistemes microelectrónics. Es podran considerar així mateix els estudis relacionats amb els continguts del títol relatius a equips, fàbriques, instal·lacions, serveis o la seua planificació, gestió o explotació.