Questions for the textbook

Chris Simmonds, Mastering Embedded Linux Programming, Packt Publishing, 2nd edition, 2017

<Hubert.Hoegl@hs-augsburg.de>, April 2016, 2018

Chapter 1: Starting Out

  1. Why does your TV run Linux? (6 item points)
  2. What hardware conditions must be given to run Linux?
  3. What skills do you need to start a Linux project?
  4. What are the main players?
  5. Name the "four elements"
  6. What do you know about Open-Source licenses?
  7. Beagle Bone Black. Write down the main technical data.
  8. What is Qemu? How can I use it?
  9. For which purpose do you need the uml-utilities?

Chapter 2: Learning About Toolchains

  1. Which components are in the standard GNU toolchain?
  2. Compare native and cross toolchains.
  3. What are the capabilities of the target CPU, which are essential for the toolchain?
  4. What reports the command gcc -dumpmachine?
  5. Which C libraries do you know?
  6. Which alternatives do you know to get a toolchain?
  7. Create a toolchain using crosstool-ng!
  8. Follow the instructions in the "Anatomy of a toolchain" section.
  9. How do you cross-compile a program?
  10. How do you compile a program which uses the GNU autotools?

Chapter 3: All about bootloaders

  1. Describe the three phases of booting.
  2. Which information is passed from bootloader to kernel?
  3. What is a "device tree"?
  4. From which technology are the device trees derived?
  5. Device tree basics

    XXX add a device tree example here which should be explained (reg, phandles, interrupts, include files, compiling a DT)

  6. Which bootloaders do you know? (which is the most widely used?)
  7. Describe the steps needed to compile and install U-Boot.
  1. Describe how to use U-Boot? Cover the following items:

    • Environment variables
    • Boot image format
    • Loading images from cards and network
    • Start the Linux kernel
  2. How can you automate the boot process?
  3. Which are the board specific U-Boot files?
  4. How to build the Barebox bootloader?

Chapter 4: Porting and configuring the kernel

  1. When was the Linux project started?
  2. Which three main jobs has the kernel?
  3. Describe the structure of user space and kernel space and how they interact.
  4. How does kernel version numbering work? What kernel version do you use?
  5. What are mainline, stable and long-term kernels?
  6. How is the kernel licensed? Can you run proprietary (closed) applications in user space?
  7. Questions about the kernel sources

    1. How many files has the current kernel for your board?
    2. How does the kernel configuration work?
    3. How do you run menuconfig for cross-compilation?
    4. How do you configure the kernel with a default configuration for the BBB?
    5. How do you compile a zImage or uImage?
    6. Which information is displayed when you compile the kernel? How can you display all commands to the output?
    7. How do you compile the device trees?
    8. How do you compile and install modules?
    9. What does the kernel need after it has started?
    10. How does the initialization of user space work?
    11. How are the kernel log messages organized? Which messages are displayed if the log level is set to 7?
    12. What is the kernel command line and where is it described?

Chapter 5: Building a root filesystem

  1. Welche Komponenten muss man mindestens im Root-Filesystem haben?
  2. Was bedeutet FHS?
  3. Wie funktionieren die file permission bits?
  4. In welchem Programm sind alle wesentlichen Werkzeuge fuer das Root-FS enthalten?
  5. Wofuer wird das staging directory verwendet?
  6. Mit welchen Kommandozeilenaufrufen baut man dieses Programm?
  7. Was sind device nodes und wie erzeugt man sie?
  8. Welche Bedeutung haben die Filesysteme /proc und /sysfs und wie mountet man sie?
  9. Wie installiert man Kernelmodule?
  10. Welches sind die drei Varianten, mit denen man dem Kernel das Root-FS servieren kann?
  11. Wie erzeugt man ein initramfs?
  12. Wie kann man das Root-FS ueber NFS bereitstellen?
  13. Es gibt drei Alternativen, mit denen man dynamisch Geraetedateien erzeugen kann. Wie heissen sie?
  14. Warum sind statisch generierte Geraetedateien gar nicht so schlecht?
  15. Wie funktioniert der Init Prozess?
  16. Wie konfiguriert man die user accounts?
  17. Mit welchem Programm kann man das neu gebaute Root-FS simulieren?

Chapter 6: Selecting a build system

  1. Welche Baukästen fuer Embedded Linux kennen Sie?
  2. Welche Hauptaufgaben hat ein Buildsystem?
  3. Wie konfiguriert und baut man Buildroot für ein bestimmtes Board, das bereits in Buildroot unterstützt wird?
  4. Aus welchen Bestandteilen besteht das Yoctoproject?
  5. Wie baut man mit Yocto ein komplettes GNU/Linux Betriebssystem für das Beagle Bone Black?
  6. Was bedeuten die "meta-" Einheiten in Yocto? Geben Sie ein paar Beispiele.
  7. Welches Programm verwendet Yocto zum Steuern der Kompilierung der Pakete?

Chapter 9: Interfacing with Device Drivers

  1. Welche grundsaetzlichen Arten von Geraetetreibern gibt es?
  2. Was sind "major" und "minor numbers"? Wo sind diese Zahlen definiert?
  3. Wie kann man die Geraetedateien anlegen?
  4. Wozu braucht man Blocktreiber?
  5. Wozu dient das /proc Filesystem?
  6. Wozu dient das /sys Filesystem?
  7. Wozu verwendet man die folgenden Dateien:: /sys/devices /sys/class /sys/block
  8. Wie greift man aus dem user-space in der Regel auf Hardware zu? (bitte mit Beispielen)
  9. Wie reagiert man auf GPIO Interrupts im user-space? (hier sollte man das C Beispiel aus dem Buch verstehen)
  10. Wie steuert man LEDs im user-space an?
  11. Ueber welche Geraetedatei kann man die SPI Schnittstelle ansteuern?
  12. Ueber welche Geraetedatei kann man die I2C Schnittstelle ansteuern?
  13. Skizzieren Sie, wie man einen Geraetetreiber schreibt, kompiliert und laedt.
  14. Was ist der Unterschied zwischen einem device tree und platform data?

Chapter 11: Managing Power

XXX to do

Chapter 14: Debugging with GDB

  1. Wie muss man den Quelltext kompilieren, damit man ihn mit GDB debuggen kann?
  2. Was muss man tun, wenn GDB nicht nativ auf dem Target laeuft, z.B. weil zu wenig Speicher vorhanden ist?
  3. Wie kann man Anweisungen an GDB "skripten"?
  4. Nennen Sie die wichtigsten GDB Kommandos.
  5. Wie kann man GDB mit einem bereits laufenden Prozess verbinden?
  6. Wie kann man GDB zum Anzeigen eines simplen pseudografischen User-Interface bringen?
  7. Wie kann man den Code im Kernel debuggen?

Chapter 16: Real-time programming

  1. Muss Echtzeit-Programmierung immer schnell sein?
  2. Definieren Sie soft-realtime und hard-realtime.
  3. Wie schnell ist ungefaehr die Antwortzeit bei einem gewoehnlichen Kernel und wie schnell bei einem Echtzeit-Kernel?
  4. Wie haengt Determinismus beim Linux Kern vom Durchsatz ab?
  5. Welche Einfluesse wirken sich auf den Determinismus eines Linux Kernels aus (8 Stueck)?
  6. Was ist kernel preemption und wie aktiviert man sie?
  7. Was versteht man unter einem PREEMPT_RT Kernel?
  8. Was sind threaded interrupt handler?
  9. Wozu dient das Kommando chrt?
  10. Was sind high-resolution timer und wie aktiviert man sie?
  11. Wie misst man die Scheduler-Latenz?
  12. Wie misst man allgemein Latenzzeiten im Kernel?

ElinuxSimmondsQuestions (zuletzt geƤndert am 2021-05-04 17:06:06 durch HubertHoegl)