CS428 Embedded Systems Lab


Assignment 7: Virtualization

Στόχος της άσκησης αυτής είναι η εξοικείωση με την χρήση του εξομοιωτή QEMU, δημιουργώντας μια εικονική μηχανή αρχιτεκτονικής RISC-V που να τρέχει σε περιβάλλον (host) αρχιτεκτονικής x86 και να βασίζεται σε Linux (kernel και root filesystem). Θα χρησιμοποιήσετε αυτή την εικονική μηχανή για να μελετήσετε boot loaders και device drivers.

Ζητούμενα: 

  1. [ 20% ] Nα εκτελέσετε τα βήματα που περιγράφονται στην σελίδα του [ Linux on RISC-V wiki ], και να φτάσετε στο σημείο να μπορείτε να επιδείξετε την εικονική σας μηχανή. Τα βήματα περιλαμβάνουν την εγκατάσταση του εξομοιωτή QEMU, καθώς και του cross-compilation toolchain και την χρήση του για την δημιουργία του boot loader (bbl), Linux kernel, και root filesystem.
  2. [ 20% ] Καταγράψτε σε αρχείο κειμένου τα βασικά βήματα του bbl boot loader, και προσθέστε εκτυπώσεις που να δείχνουν αυτά τα βήματα.
  3. [ 20% ] Τροποποιήστε την εικονική μηχανή του πρώτου βήματος, αντικαθιστώντας το bbl boot loader με το OpenSBI, και καταγράψτε σε αρχείο κειμένου τα βασικά βήματα. Προσθέστε εκτυπώσεις που να δείχνουν αυτά τα βήματα.
  4. [ 30% ] Μελετήστε το virtio-serial-pci device του QEMU, και καταγράψτε τα συμπεράσματά σας σε αρχείο κειμένου. Να δείξετε την λειτουργικότητα αυτή με την εικονική σας μηχανή από τα προηγούμενα βήματα.
  5. [ 40% ] Μελετήστε τις προσδιαγραφές του QEMU EDU device, με σκοπό να αναπτύξετε ένα Linux device driver για χρήση με τον εξοιμοιωτή QEMU, σε τρεις φάσεις:
    (α) χωρίς υποστήριξη για DMA και interrupts,
    (β) με υποστήριξη για DMe, αλλά χωρίς υποστήριξη για interrupts, και
    (γ) με υποστήριξη για DMA και interrupts.
    Για να επαληθεύσετε την λειτουργικότητα της συσκευής EDU θα χρειαστεί να αναπτύξετε μια βιβλιοθήκη για πρόσβαση στον device driver (εντός της εικονικής μηχανής), και μια σιερά από προγράμματα δοκιμών.


___________________________________________________________________________________________________________________________________
(c) Copyright University of Crete, Greece, Last Modified: 07-Feb-2022