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
-Funcionals
-Temporals
-Cost
-Etc.
-Arquitectura de Sistema
-Co-disseny HW/SW
-Plataformes de proves HW/SW
-Simulacions
-Emuladors
-FPGAs
-Definició d'interfícies HW/SW
-HW drivers
-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
-Disseny per al re-use
-Capes d'abstracció, HAL, OSAL.
-Codi independent d'aplicació
-Codi dependent d'aplicació
-Components de tercers i qüestions legals
-Disseny per a compatibilitat cap endarrere
-Disseny escalable
-Ús extensiu de tecnicas de programacion defensiva (assert)
-Revisió mèdica de hard/soft deadlines
-Xec
-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 estafe 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 baix 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
Sistemes operatius en temps real (S3)
TEORIA (10h)

-Conceptes generals d'arquitectura de computadors
-L'arquitectura (ISA: Instruction Set Architecture)
-Diferències entre CISC i RISC
-La #CPU (Unitat Central de Procés)
-Unitat de control
-ALU (Unitat Aritmètic-Lògica)
-Busos
-Cache d'instruccions
-Pipelining
-Registres
-Cores
-Memòria (#ROM, #RAM)
-Memòria caixet
-Perifèrics d'entrada/eixida
-Interrupcions
-Microcontroladors

-Conceptes generals de programari
-Llenguatges de programació
-Relació entre joc d'instruccions, codi objecte i llenguatge assemblador
-Tipus d'arxiu executable
-Compiladors
-El linker o enlazador
-Linker scripts i scatter files
-Memòria estàtica i dinàmica
-El stack i el heap
-El carregador d'arrencada o bootloader

-Temps real i conceptes de RTOS
-RTOS vs GPOS
-Latency
-RTOS vs bare-metall (super loop)
-Kernel / Scheduler
-preemptive estafe-slicing
-cooperative estafe-slicing
-Tick, Aneu-li task, Ticless aneu-li
-Interrupcions maquinari i programari
-Tasques i fils
-thread stack
-prioritats
-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
-Processadors multi-core
-SMP (Symetric Multi-Processing)
-AMP (Asymmetric Multi-Processing)
-Comunicació entre tasques

-Anàlisis dels RTOS més comunament usats
-FreeRTOS
-MicroC/US-II (uCOS)
-ThreadX
-RTEMS
-Zephyr
-VxWorks

-RTOS en FPGAs
-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ónicos 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ónicos. 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ó.