User Tools

Site Tools


lab:2016:tema2

Tema 2 - Billboard controller

Obiective

  • construirea unui dispozitiv embedded complet
  • lucrul cu Yocto, generarea de distribuții pentru sisteme embedded
  • configurarea Yocto și adăugarea de pachete necesare unei aplicații concrete
  • configurări de bază pentru lucrul în rețea
  • scripting și folosirea utilitarelor dintr-un sistem Linux
  • optimizări de spațiu folosit (opțional)

Presupunem că avem un sistem embedded Linux conectat la un display de dimensiuni irelevante (15cm-5m), care este capabil să primească comenzi cu privire la conținutul de afișat. Display-ul poate afișa mesaje text sau poate folosi caractere ASCII pentru a afișa imagini. Pentru o conversie dintr-o imagine JPEG în text ASCII puteți folosi orice soluție doriți. Un exemplu ar fi jp2a.

Display-ul este conectat la sistemul embedded printr-o interfață serială. Descrierea comenzilor posibile o găsiți mai jos:

  1. comandă afișare text:
    • o linie: TEXT <textul de afișat><CR><LF>
  2. comandă afișare imagine, cu mai multe linii:
    • IMAGE<CR><LF>
    • imaginea, cu caractere ASCII, pe mai multe linii terminate cu <CR><LF>
    • o linie goală terminată cu <CR><LF>

Enunț

Pentru tema 2 se dorește realizarea unui sistem embedded bazat pe placa Versatile Platform Baseboard capabil să funcționeze ca un controller de afișaj publicitar conectat la Internet (IoT). Sistemul va fi construit cu ajutorul Yocto și va rula în QEMU. El va trebui să expună o interfață web care să permită configurarea mesajelor afișate și să facă schimbările efective comunicând cu display-ul printr-o interfață serială.

Cerințe

  • Basic:
    • Imaginea sistemului trebuie generată cu Yocto, pornind de la instrucțiunile prezente în soluția laboratorului de Yocto
    • Imaginea trebuie să ruleze în QEMU, folosind kernel-ul special compilat
    • Imaginea trebuie să aibă un utilizator root cu parola labsi
    • Sistemul trebuie să își configureze automat IP-ul folosind DHCP
    • Sistemul trebuie să ruleze SSH pe portul 22
    • Sistemul trebuie să ruleze daemon-ul Avahi/mDNS și să răspundă la numele tema2.local
  • Control
    • Display-ul se găsește pe interfața serială ttyAMA0 (trebuie adăugată prin comanda QEMU), care va fi configurată să trimită datele la stdout
    • Sistemul va trebui să implementeze toate tipurile de comenzi (TEXT și IMAGE)
  • Modificare
    • Sistemul va avea o interfață web din care se vor modifica parametrii sistemului, mesajul text sau imaginea
    • Sistemul va putea schimba periodic afișarea între mai multe mesaje text și/sau imagini

Tema va fi testată în QEMU (v2.0+), pentru placa versatilepb.

Pentru ușurința navigării pachetelor puteți folosi interfața grafică Hob pentru a construi imaginea. Puteți pleca de la imaginea de bază pentru RaspberryPi, rpi-basic-image.

Trimitere

Tema va fi trimisă în două componente:

  • arhiva propriu-zisă → pe orice platformă de hosting doriți (ex: Dropbox, Google Drive, transfer.ro etc.)
    • link-ul trebuie să fie valid minim o săptămână din momentul expirării deadline-ului hard
  • metainformații → pe Moodle

Arhiva trebuie să conțină:

  • partiția ext3 a sistemului (sau de alt tip, dacă aveți motive solide)
  • imaginea kernel-ului pentru QEMU (o puteți folosi pe cea din laborator)
  • script de pornire QEMU - launch.sh
  • sursele aplicației/script-urile folosite pentru controlul display-ului și pentru interfața web
  • fișier README cu explicații referitoare la funcționarea soluției, opțiuni speciale de configurare/optimizare folosite etc.

Metainformațiile constau dintr-un un fișier care să conțină:

  • link către arhiva .zip cu rezolvarea propriu-zisă
  • hash-ul md5 al arhivei (obținut cu md5sum)

Nu vor fi punctate temele care nu au hash-ul MD5 al arhivei încărcat pe Moodle sau cele al căror hash nu corespunde cu arhiva downloadată de pe platforma de hosting la momentul corectării.

Notare

Din 100p total, aveți:

  • (15p) Imaginea și funcționalitățile de bază.
  • (15p) Interfață web din care se poate schimba mesajul TEXT.
  • (15p) Interfață web din care se poate pune o imagine nouă.
  • (10p) Din interfață se pot adăuga cel puțin 3 mesaje text diferite, care vor fi afișate ciclic. Mesajul se va schimba o dată la X secunde, configurabil din aceeași interfață.
  • (10p) Din interfață se adăuga cel puțin 3 mesaje text sau imagini uploadate, care vor fi afișate ciclic. Fiecare mesaje/imagine va fi afișată timp de Xi secunde (cu i de la 1 la numărul de mesaje/imagini), configurabile din aceeași interfață. Interfața trebuie de asemenea să permită eliminarea unui mesaj/imagine.
  • (20p) Din interfață se pot adăuga un număr nelimitat de mesaje text sau imagini uploadate, care vor fi afișate ciclic. Fiecare mesaje/imagine va fi afișată timp de Xi secunde (cu i de la 1 la numărul de mesaje/imagini), configurabile din aceeași interfață. Interfața trebuie de asemenea să permită eliminarea unui mesaj/imagine.
  • (15p) Readme scris clar și care descrie complet arhitectura și implementarea funcționalităților cerute

Bonus:

  • (5p) Optimizări deosebite de spațiu ale imaginii finale (cele mai mici 5 imagini trimise, care implementează toate funcționalitățile)
  • (5p) Trimiterea soluției și sub forma unui patch care conține modificările aduse de voi rețetelor și layere-lor Yocto și/sau layer-ului meta-raspberrypi. Patch-ul trebuie să se aplice fără erori față de commit-urile b8631416f12b8a904ce3deb036f9d5ce632937b0 (Yocto) și 6c6f44136f7e1c97bc45be118a48bd9b1fef1072 (meta-raspberrypi) și trebuie să permită generarea imaginii folosind bitbake
  • (5p) Wow factor (extra funcționalități, design plăcut, eleganță în implementare etc.)
  • (5p) Salvarea unui log cu acțiunile efectuate de aplicație și limitarea spațiului consumat folosind logrotate

Precizări

  • Tema poate fi trimisă cu o întârziere de maxim o săptămână. Fiecare zi de întârziere va aduce o depunctare de 5pct
  • Compilarea unei imagini cu Yocto necesită 20GB+
  • Prima compilare poate dura 3-4 ore în funcție de sistemul de build și viteza conexiunii la Internet, timp în care sunt downloadate și compilate sursele pachetelor incluse în imagine
  • Compilările ulterioare vor refolosi majoritatea pachetelor generate și vor dura mult mai puțin
  • :!: Imaginea generată (inclusiv cea de bază), precum și restul temei, este individuală; nu o share-uiți cu colegii, deoarece vom verifica acest lucru

Resurse

lab/2016/tema2.txt · Last modified: 2016/12/13 20:20 by Dan Dragomir