Kommandozeile
Wie kopiert man einen Kernel Baum (oder einfacher gesagt: Wie kopiert man Dateibäume mit Punktdateien drin?) Es gibt 3 Varianten.
Quelle: http://elk.informatik.hs-augsburg.de/hhwiki/EmbeddedLinux2012#muster-fur-screen-init-datei
Wie kommt man mit Kommandozeilenwerkzeugen in das Eduroam der Hochschule?
http://elk.informatik.hs-augsburg.de/hhwiki/EmbeddedLinux2012#wifi-im-eduroam-netz-der-hochschule
Wichtige Kernel-Konfigurationswerte
http://elk.informatik.hs-augsburg.de/hhwiki/EmbeddedLinux2012#wichtige-kernel-konfigurationsvariable
Wie kompiliert man ein Paket "cross"?
http://elk.informatik.hs-augsburg.de/hhwiki/EmbeddedLinux2012#pakete-krosskompilieren
Ascii-Dump Werkzeuge: ad, xxd, od, vim und emacs hex modes
od -A d -t x1 uImage
Wie sieht man den MBR an?
Wie sieht man beliebige Sektoren an?
"Magic bytes" finden
uImage header analysieren
uImage -> (header entfernen mit dd) -> vmlinux.gz -> entpacken mit gzip (siehe ngw100/howto.rst)
Bsp: dd if=zImage of=piggy.gz bs=1 skip=14817
zImage: http://morgue.openinkpot.org/wiki/Documentation/ZImageFormat Mit mkimage (u-boot-tools) kann man zImage in uImage umwandeln.
Partitionstabelle ansehen
Auf SD Karte "roh" schreiben mit dd
Analysieren: zImage, uImage
Einfach ein "sinnloses" Beispiel: Wie erzeugt man eine Datei mit vier Byte Laenge, jedes Byte wird auf einen bestimmten Wert initialisiert?
dd if=/dev/zero of=header bs=1 count=4 Im Hex-Editor (z.B. hexedit) die vier Byte initialisieren.
Sowas kann man gebrauchen um z.B. einen "initrd" Header zu machen oder um einen uImage Header zu bauen.
cat header rootfs.gz > initrd
Wie macht man einen "loopback" mount?
ARM
- Nennen Sie für jede ARM Architektur einen konkreten Mikrocontroller
- ARMv4
- ARMv5
- ARMv6
- ARMv7
GNU Tools
- Was bedeutet "EABI"?
- Was bedeuten die einzelnen Abschnitte im Namen "arm-linux-gnueabi-gcc"?
Bootloader
- Zeichnen Sie ein Diagramm das den Ablauf des Bootens bei ihrem Board zeigt (Vorbild: Atmel Linux Homepage)
- Wozu braucht man einen Bootloader?
- Wieso kann der first level bootloader im Mikrocontroller im Allgemeinen nicht den allgemeinen Bootvorgang des Linux Kernels einleiten?
- Wie gross sind typische Bootloader wie z.B. U-Boot und Apex?
- Welchen Funktionsumfang hat der U-Boot Bootloader?
Kernel
- XXX to do: Fragen zum Device Tree aufnehmen
Fragen zur Echtzeit
- Die naive Lösung, eine zeitliche Verzögerung ("delay") über eine Dummy-Zählschleife zu erzeugen hat Nachteile - welche?
- Wie programmiert man "gute" Verzögerungen im Userspace und im Kernel?
- Wie programmiert man einen genauen Timer im Userspace und im Kernel?
- Wie misst man die aktuelle Zeit auf Mikrosekunden?
- Welche grundsätzlichen Möglichkeiten gibt es, um Linux zu einem Echtzeit-Betriebssystem zu machen? Beschreiben Sie die zwei verschiedenen Ansätze.
Fragen zu FOSS
- Erläutern Sie das Prinzip des Copyleft.
- Welche vier Freiheiten gewährt die GPL?
- Darf man Programme, die mit der GPL lizenziert sind, für kommerzielle Zwecke nutzen?
- Wie unterscheidet sich die LGPL von der GPL?
- Wie unterscheidet sich die BSD Lizenz von der GPL?
- Was sind Duale Lizenzen? Nennen Sie ein Beispiel.
- Darf man Programme im Linux Userspace unter einer proprietären Lizenz vertreiben?
- Darf man mit dem freien GNU C Compiler kommerzielle geschlossene Programme schreiben?
- Was halten Sie von geschlossenen Kernelmodulen?
Fragen zum Hostrechner
- Installieren Sie Linux auf Ihrem Hostrechner, entweder in einer eigenen Partition oder in einer virtuelle Maschine wie z.B. VirtualBox (https://www.virtualbox.org).
- Sehen Sie sich auf Ihrem GNU/Linux Desktop PC oder Laptop den Kernel und das Root Filesystem an. Wie viel Platz beanspruchen die einzelnen Teile?
- Für welche Aufgaben wird der Hostrechner (Entwicklungsrechner) verwendet?
- Im Skript steht eine Liste von Werkzeugen für den Entwicklungsrechner. Was macht jedes einzelne dieser Werkzeuge?.
- Lernen Sie die Bedienung Ihres Linux Rechners ausschliesslich über die Kommandozeile.
Installieren Sie einen Teminal Multiplexer, z.B. screen oder tmux. Auch auf dem Zielrechner ist so ein Werkzeug sehr praktisch.
- Welche Terminalprogramme gibt es unter Linux, um auf die Konsole über die serielle Schnittstelle zu gehen? Wie lauten die üblichen Einstellungen?
- Wie kann man Daten im Terminalprogramm mit dem Protokoll X/Y/Z-Modem übertragen? Warum sollten nur kleinere Dateien bis zu ein paar 100 KByte übertragen werden?
- Wie arbeitet man mit folgenden Programmen: ssh, scp, ftp (ncftp)?
Wie ändert man die Netzwerkeinstellungen für die Schnittstellen eth0 und eth1 mit den Werkzeugen ifconfig, route, ethtool und iptables.
Wie richtet man auf dem Host eine zweite Ethernet-Schnittstelle ein, um ein Netzwerkkabel mit dem Target zu verbinden? Wie lauten die Einstellungen auf dem Target und auf dem Host?
- Installieren Sie den Quelltext des Linux Kernels auf dem Hostrechner und kompilieren Sie ihn.
- Installieren Sie auf Ihrem Entwicklungsrechner eine Toolchain für die ARMv5 Architektur (ELDK oder Debian).
- Wie richtet man auf dem Host einen NFS Server ein?
- Wie richtet man auf dem Host einen TFTP Server ein?
Fragen zur Einführung
Suchen Sie Geräte, die unter Linux laufen. Sie haben sicher schon selber welche entdeckt. Sie können sich aber auch von folgenden Seiten inspirieren lassen:
Lesen Sie den folgenden Artikel:
Cliff Brake: Tipps for planning an embedded Linux project, 2006
http://elk.informatik.fh-augsburg.de/pub/rtlabor/elinux/intro/planning-tips.txt
Beantworten Sie folgende Fragen:
- Welche Anforderungen sprechen für Linux? (5 Stück)
- Wie "bezahlt" man die Vorteile von Linux?
- Aus welchen Einzelteilen besteht Embedded Linux? (6 Stück)
- Welche Fähigkeiten braucht man, um einen Rechner mit Embedded Linux auszustatten und zu programmieren?
- Welche Kosten sind zu erwarten?
- Welche Risiken gibt es?
- Was umfasst der Lebenszyklus des Produktes?
- Was erwartet Sie hinsichtlich der Lizenzen, wenn Sie Linux wählen?
Lesen Sie das Kapitel 1 im Buch von Hallinan ("Introduction").
Beantworten Sie folgende Fragen:
- Warum Linux? (6 Gründe)
- Was bedeutet "GPL"?
- Was ist "Open Source"?
- Was verstehen Sie unter "Linux Standard Base"?
Lesen sie Hallinan, Kap. 2, "The Big Picture"
URL:
Beantworten Sie folgende Fragen:
- Was zeichnet Embedded Systems aus?
- Vergleichen Sie BIOS und Bootloader.
- Aus welchen wesentlichen Funktionsblöcken bestehen Embedded Systems?
- Aus welcher Hardware besteht die Entwicklungsumgebung?
- Wie startet Embedded Linux? (von U-Boot bis init Prozess)
- Welche Arten von Flash Speicher gibt es?
- In welche Regionen ist der Flash Speicher bei Linux in der Regel aufgeteilt?
- Wie sieht grob die memory map des gesamten Rechners aus?
- Beschreiben Sie den Ausführungskontext mit Applikation, C Bibliothek, Kernel und Gerätetreibern. Was läuft im Kernel-Kontext, was im User-Kontext?
- Was macht die MMU und wo ist sie eingebaut?
- Wie nennt man die nicht-native Kompilierung auch?
- Was ist native Kompilierung? Ab welcher Rechenleistung macht sie Sinn?
Was ist eine Embedded Linux Distribution?
Aus wie vielen Paketen besteht eine Distribution ungefähr?
Lesen Sie den Artikel: Rene Rebe, Architekturen eingebetteter Linux Systeme, 2008
http://elk.informatik.fh-augsburg.de/pub/rtlabor/elinux/intro/rebe-linux-ueberall.pdf
Beantworten Sie folgende Fragen:
- Welche anderen CPUs unterstützt Linux neben dem x86?
- Was ist ein monolithischer Kern?
- Warum lässt sich Linux einfach auf fast beliebige Prozessoren portieren?
- Wie unterscheiden sich die Befehlssätze der Prozessorfamilien?
- Damit die Linux Speicherverwaltung (virtual memory) funktioniert, muss der Mikrocontroller eine bestimmte Hardware-Komponente haben. Wie heisst diese?
- Wie heisst die Linux Variante, die ohne diese Hardware-Komponente auskommt?
- Was ist ein "System on Chip" (SoC)?
- Wie sieht die Schichtung der Software eines Embedded Linux Systems in etwa aus?
- Welches Dateisystem wird bei Flash Speicher häufig verwendet?
- Welche Sprachen werden zur Programmierung verwendet?
- Welche Bootloader werden bei Embedded Linux verwendet? Ist grub auch eine Option?
Fragen zu Schnittstellen
GPIO Pins
- In welchem Filesystem sind die GPIO Pins für den Zugriff aus dem Userspace organisiert?
- Welche Spannungswerte sind bei Ausgabepins üblich?
- Wie schaltet man einen GPIO Pin auf Ausgabe oder Eingabe?
- Welchen Strom liefert in etwa ein GPIO Pin nach draussen ("source")?
- Welchen Strom kann in etwa ein GPIO Pin nach innen leiten ("sink")?
Vergleichen Sie die Ströme in den beiden vorherigen Aufgaben mit dem Betriebsstrom einer normalen LED. Kann ein Ausgang eine LED ansteuern?
Dazu ist hier ist das Datenblatt einer gewöhnlichen LED:
http://elk.informatik.fh-augsburg.de/pub/rtlabor/elinux/datenblaetter/led.pdf
- Was passiert, wenn Sie eine Eingangsspannung an einen Eingangspin legen, die höher als die maximale erlaubte ist?
- Wie gibt man ein Logiksignal auf einem Pin aus?
- Wie liest man den Logikpegel an einem Eingangspin?
- Wie kann man über einen Eingangspin einen Interrupt erzeugen?
- Wie schnell kann man einen Ausgangspin periodisch ein- und ausschalten?
- Welche Möglichkeiten gibt es, um einen GPIO Pin ohne die Verwendung des Sysfs anzusteuern?
Leuchtdioden (LEDs)
- In welchem Filesystem sind die LEDs für den Zugriff aus dem Userspace organisiert?
- Wie schaltet man eine LED ein und aus?
- Wie kann man die Helligkeit einer LED verändern? (Achtung: Das geht nicht immer).
- Wie kann man ein periodisches "Herzschlag-Blinken" erzeugen?
UART
- Nennen Sie die wesentlichen zwei Signale bei einem UART.
- Ist die Übertragung synchron oder asynchron?
- Welche Parameter der UART Kommunikation müssen bei der Übertragung bei beiden Partnern unbedingt zusammenpassen?
- In welchem Bereich liegt in etwa die Datenrate bei einem UART?
- Welche Datenrate wird bei der Gnublin Konsole verwendet?
- Beschreiben Sie, wie man aus den UART Signalen eine RS-232 Schnittstelle macht. Zeichnen Sie die Pinbelegung einer 9-poligen Sub-D Buchse, die bis vor kurzem noch an vielen PCs und Notebooks zu finden war. Wie hoch sind die Signalpegel?
- Wie kann man eine UART Schnittstelle über einen freien USB Hostanschluss realisieren?
I2C Bus
- Nennen Sie die wesentlichen Signale beim I2C Bus.
- In welchem Bereich wurde der I2C Bus bei seiner Erfindung hauptsächlich eingesetzt?
- Ist die Übertragung synchron oder asynchron?
- Mit welchen Datenraten wird die I2C Kommunikation meist durchgeführt? Vergleichen Sie diese mit der üblichen Datenrate beim UART.
- Für welche Entfernungen ist der Bus entworfen worden?
- Wie werden die einzelnen I2C Geräte am Bus unterschieden?
- Wie viele Teilnehmer können maximal an einem I2C Bus angeschlossen werden?
- Ist I2C ein Single-Master Bus oder eine Multi-Master Bus?
Nennen Sie vier integierte Schaltungen mit I2C Bus:
- Port Expander
- A/D Wandler
- Schrittmotor-Ansteuerung
- EEPROM
- Kann man den I2C Bus auch mit GPIO Pins realisieren? Wo könnte im Kernel die richtige Stelle zum Nachsehen sein?
SPI Schnittstelle
- Nennen Sie die wesentlichen Signale bei der SPI Schnittstelle.
- Ist die Übertragung synchron oder asynchron?
- Welche digitale Grundschaltung macht das Prinzip der SPI Schnittstelle aus?
- Wie kann man mehrere Geräte an der SPI Schnittstelle betreiben?
- Mit welcher Datenrate werden SPI Schnittstellen üblicherweise betrieben?
Nennen Sie drei integrierte Schaltungen, die über SPI angeschlossen werden:
- CAN Controller
- Siebensegment-Controller
- Display
- Welches Massenspeicher-Medium hat meist auch eine SPI Schnittstelle eingebaut?
USB Schnittstelle
- Nennen Sie ein paar häufig genutzte USB Profile mit ihrer Bedeutung.
- Zählen Sie alle USB Schnittstellen auf Ihrem Embedded Linux Board auf. Beachten Sie die Rollen der USB Ports und ihre maximale Geschwindigkeit.
- Wie kann man eine freie USB Device Schnittstelle auf dem Embedded Linux Rechner nutzen, um eine Netzwerkverbindung mit dem Hostrechner aufzubauen?
- Kann man über eine USB Schnittstelle am Mikrocontroller Linux booten? Es wird dabei der U-Boot Bootloader verwendet.
- Sie brauchen zum Ansteuern von Peripherie einen freien UART, es gibt aber nur noch eine freie USB Schnittstelle an Ihrem Embedded Linux Board.
Wie würde man ein Embedded Linux Board entwerfen, so dass es über eine USB Schnittstelle zum Hostrechner hin folgende drei Dienste zur Verfügung stellt:
- Die Stromversorgung
- Eine serielle Konsolenverbindung
- Ein Massenspeicherlaufwerk
Fragen zum Linux Kernel
- Schreiben Sie alle Punkte der Mindmap (Tafelbild 23.5.14) auf Ihr Lösungsblatt.
Navigation im Quelltext
- Mit welchem Werkzeug kann man den Kernel Quelltext weiterverarbeiten, so dass man ihn bequem im Web Browser betrachten kann?
- Nennen Sie eine Website, bei der man den Kernel bereits zum Betrachten vorbereitet hat.
- Wie kann man mit dem Tags Mechanismus im Kernel Quelltext navigieren?
- Wie funktioniert cscopes?
- Suchen Sie die Anzahl der C Quelltextdateien (Endungen .c und .h)
- Suchen Sie die Anzahl der Assemblerdateien (Endung .S).
- Was bedeutet "out-of-tree" Kompilierung?
- Welche Dateiendung haben Kernelmodule?
- Wie bekommt man den Quelltext einer Änderung oder eines Zusatzes für den Kernel in die "Mainline" Distribution?
Sie haben eine wichtige Änderung für den Linux Kernel gemacht. Welche Vor- und Nachteile haben folgende Strategien.
- Die Änderungen bleiben lokal in ihrer Entwicklerversion, z.B. weil ihnen das "Mainlining" zu aufwendig erscheint.
- Die Änderungen werden in die "Mainline" Version des Kernels aufgenommen.
Gnublin-spezifische Aufgaben
Kompilieren Sie den Gnublin Kernel. Eine Anleitung finden Sie im Wiki:
Kompilieren Sie ein Kernel-Modul für Gnublin und laden Sie es in den laufenden Kernel. Die Kompilierung soll einmal "nativ" gemacht werden und einmal in der Cross-Entwicklungsumgebung auf dem Host.
- Versuchen Sie den Gnublin Kernel kleiner zu machen. Was könnte man bei make menuconfig weglassen?
Aufgaben zum NGW100
Das "Network Gateway" NGW100 ist ein Board von Atmel mit einem AVR32AP7000 Prozessor. Das AVRFreaks Wiki hat folgenden Eintrag zum NGW100:
http://www.avrfreaks.net/wiki/index.php/Documentation:NGW
Hardware
- Wo liegt auf dem NGW100 (AVR32) der virtuelle Speicher und wo der physikalische Speicher?
- Wie kommt man von den physikalischen auf die virtuellen Adressen?
DRAM
- Wie gross (Anzahl Adressen x Datenbreite) ist das dynamische RAM und über welche Adressen erstreckt es sich?
NOR Flash
Beantworten Sie die Fragen zum NOR Flash Speicher auf dem NGW100:
- Wie viele Sektoren gibt es und wie gross sind diese?
- Wie lange dauert das Beschreiben und Löschen jedes Sektors?
- In welche drei logischen Bereiche ist dieser Flash Speicher gegliedert? Wie gross sind diese Bereiche genau?
- Welche Möglichkeiten gibt es, um den NOR Flash Speicher zu
beschreiben, wenn
- der Flash Speicher komplett leer ist?
- der Flash Speicher bereits U-Boot enthält?
- der Flash Speicher bereits U-Boot und Linux enthält?
DataFlash
- Wie wird der DataFlash Baustein angesteuert?
- Welche Kapazität hat dieser Baustein?
MMC/SD Karten
- Wie wird die MMC/SD Karte angesteuert?
USB
- Gibt es auf dem NGW eine USB Host Schnittstelle?
Booten
- Welche Möglichkeiten gibt es, um das NGW100 mit Linux zu starten?
- Wie funktioniert der Bootvorgang, wenn sowohl Kernel als auch Root-FS im NOR Flash Speicher liegen?
- Welches Init-System verwendet Buildroot für das NGW?
- Welche Dienste werden durch Init gestartet?
- Am Ende des Boot-Vorganges startet der init Prozess eine Login Shell. Diese Shell liest ein initiales Skript unter /etc/profile oder .profile im Login-Verzeichnis. Schreiben Sie in diese Datei Ihre gewünschten Umgebungsvariablen und sonstigen Zusätze.
Buildroot
Warum sollten alle Übungsteilnehmer die gleiche Buildroot Version nehmen?
Welche Pakete mussten Sie bei Ihrem Linux nachinstallieren, damit Buildroot kompiliert?
Wie arbeitet man über NFS mit dem NGW100?
XXX
Es kann zu zwei Komplikationen kommen:
(1) Dropbear hängt, weil dropbear_dss_host_key, und dropbear_rsa_host_key in /etc/dropbear/ Probleme machen. Den Grund kenne ich nicht. Ich kopiere diese Dateien immer zu Fuss an diese Stelle.
(2) Das Netzwerk hängt, da in /etc/network/interfaces auf dem Target eth0 so eingestellt ist:
auto eth0 iface eth0 inet dhcpZur Abhilfe eth0 als static deklarieren.
make menuconfig auf buildroot, kernel, busybox und uclibc anwenden. Sehen, was in den einzelnen Teilbereichen möglich ist.
Wie kann man in Buildroot neue Accounts mit voreingestelltem Passwort konfigurieren?
Welche Bedeutung haben die einzelnen Buildroot Verzeichnisse? Sie dazu die Literaturstelle AVR32003.
Wie baut man ein selbstgeschriebenes Programm in Buildroot ein, so dass es Teil des Root-FS wird? Sehen Sie sich dazu die Literaturstelle AVR32004 an.
Das Paket könnte demonstrieren: Kommandozeilenparameter (getopt), autotools, make, Interrupts im User-Space, Kommunikation über UART, SPI, I2C, GPIO, Threads, Lognachrichten schreiben, Konfigurationsdateien lesen und so weiter. Siehe auch den Abschnitt "Applikationen schreiben" weiter unten.
Python im RootFS installieren.
U-Boot
Wozu gibt es den Bootloader "U-Boot"? Wenn Sie auf dem U-Boot Prompt help eingeben, werden alle Kommandos aufgelistet. Was machen (knapp) diese Kommandos?
Testen Sie den Download über das U-Boot load<x> Kommando (<x> kann sein b - binär, s - S-Record, y - Y-Modem). Auf der Seite des PC verwenden Sie am besten Kermit (das Linux Paket heisst ckermit).
Was ist ein uImage? Wie stellt man ein uImage her? Wie findet man die Parameter eines uImage heraus?
flash-upgrade
Bei dieser Aufgabe wird U-Boot im NOR Flash Speicher aktualisiert. Dazu zunächst mit Git die Sourcen des flash-upgrade Paketes holen. Git ist im Paket git-core:
git clone git://www.atmel.no/~hcegtvedt/flash-upgrade.git
Dann u-boot.bin in das Quelltextverzeichnis kopieren und kompilieren. Das entstandene uImage am besten auf eine MMC Karte kopieren und dann im U-Boot von dort in den Speicher laden und ausführen.
- Wie lädt man mit U-Boot eine initrd?
Anmerkung 1: Die Applikationsschriften von Atmel zum AVR32 findet man in
http://elk.informatik.fh-augsburg.de/pub/rtlabor/elinux/ngw100/appnotes/avr32/
Erste Inspektion des laufenden Embedded Linux
- Wie kann man sich die Konsole des AVR32 Rechners auf den Entwicklungsrechner holen?
- Welche Programme sind in /bin, /usr/bin und /usr/sbin/?
- Was machen die Skript in /etc/init.d/?
- Wo ist der Quelltext des HTTP Daemon? Was steht in httpd.conf? Wie kann man das Datenverzeichnis des Webservers auf einen anderen Pfad legen?
- Welche Dienste laufen auf dem NGW100 im Hintergrund?
- Einige wichtige Einträge in /proc/ (procfs) ansehen.
- Finden Sie heraus, wie Sie mit den Kommandos telnet, ssh, scp, ncftp und http Kontakt mit dem NGW aufnehmen können.
- Gibt es auf dem NGW100 eine oder mehrere Logdateien?
- Wozu wird das sysfs verwendet?
GPIOs und LEDs
Die Applikationsschrift AVR32408 geht auf GPIO und LED unter Linux ein (leider veraltet).
Die aktuelle Technik heisst "gpio-sysfs". Machen Sie Aus- und Eingaben über die Dateien z.B. in /sys/class/leds/a/ (LED A).
Setzen Sie einen "Trigger", so dass bei der Änderung eines Pins ein Interrupt erzeugt wird.
Steuern Sie den GPIO Pin PB25 mit Hilfe des gpio-sysfs an. Dieser Pin liegt auf Jumper 6 (J6) am Pin 25. In sysfs ist der Pin über GPIO57 (32+25) zu erreichen.
Automatisieren Sie die Ansteuerung des PB25 über ein Python-Skript.
Applikationen schreiben
Wie integriert man eine Anwendung in Linux die sofort nach dem Booten laufen soll, ohne dass man irgendwelche Kommandos eintippen muss?
Wie schon im Abschnitt über Buildroot, sollen Sie sich klar machen, wie man ein neues Paket (Ihre Anwendung) in Buildroot integriert. Sehen Sie sich als Beispielanwendung misc/elinuxdemo/ an.
Integrieren Sie ein Paket in Buildroot, das autokonfiguriert werden kann.
Siehe z.B. <ELSVN>/misc/icnova-demo/.
getopt verwenden
Aktivieren Sie eine freie UART Schnittstelle und schreiben Sie ein kleines Testprogramm in C, um über den UART zu kommunizieren. Verwenden Sie die Einstellungen 9600 Baud und 8N1 (8 Datenbits, no Parity, 1 Stopbit).
GPIO ansteuern
Wie schreibt eine Anwendung in das syslog?
Installieren Sie eine Web Server auf dem NGW100. Es gibt mehrere Möglichkeiten: busybox, lighttpd, monkey, mongoose und noch ein paar andere. Der Server sollte CGI Skripte ausführen können.
Schreiben Sie einen kleinen Server in C, der automatisch nach dem Booten gestartet wird und der die Kommunikation mit externer Hardware übernimmt. Die Hardware kann z.B. das "Anyio" Board sein, das über UART angesteuert wird (../../labor/avr/anyio/).
Der Server soll über ein CGI Skript gesteuert werden können, so dass an der externen Hardware eine LED eingeschaltet wird oder ein Analogeingang eingelesen wird. Zwischen CGI Skript und Server ist dazu ein Mittel zur Interprozesskommunikation einzubauen.
Debuggen
Beschreiben Sie, wie Sie das NGW100 bei laufendem Linux debuggen können.
Target mit Linux: avr32-linux-gdb (Host) und gdbserver (Target)
Beschreiben Sie, wie Sie das NGW100 ohne laufendem Linux debuggen können.
Target ohne Linux: avr32-gdb + avr32gdbproxy + JTAGICEmkII. Auch das Debuggen des Linux Kernes gehört hier dazu.
Wie kann man Linux Treiber debuggen?
Hinweis: Wie bei "Target ohne Linux". Die Treiber müssen jedoch statisch mit dem Kernel gelinkt sein.
Versuchen Sie mit einem JTAG Debugger den Linux Kernel direkt nach dem Einsprungpunkt im Einzelschrittbetrieb auszuführen. Dabei macht es einen Unterschied, ob die Speicherverwaltungseinheit (MMU) aus- oder eingeschaltet ist. Worin macht sich das bemerkbar?
Details siehe
http://avr32linux.org/twiki/bin/view/Main/KernelDebugging
Gerätetreiber
Lesen und verstehen Sie die Applikationsschrift AVR32743 (AVR32 AP7 Linux Kernel Module Application) von Atmel (siehe misc/AVR32743/).
Für die wichtigen I/O Schnittstellen
- GPIO
- SPI
- I2C
- PWM
gibt es im AVR32 Linux bereits fertige Treiber. Wie verwendet man diese Treiber in einer eigenen Applikation?
Wie kompiliert man einen Gerätetreiber "out-of-tree"? Wozu gibt es die Umgebungsvariable KDIR?
Schliessen Sie an PB25 einen Taster an (Interrupt!) und an einen beliebigen anderen GPIO Pin eine LED. Schreiben Sie einen kleinen Treiber der den Tasten-Interrupt entgegennimmt und die LED in Folge toggelt.
Echtzeit
Wie funktioniert die folgende Interrupt-Stoppuhr?
http://elk.informatik.fh-augsburg.de/pub/elinux/ngw100/ir-stoppuhr
x86 PC mit Linux
Die Live-CD von osadl.org mit Realtime-Kernel holen und ausprobieren.
Den OSADL "latest stable" Kernel mit RT-Preempt Patch holen, kompilieren und installieren.
Über den Parallelport Messungen der Echtzeiteigenschaften durchführen (Rechteck-Generator und Oszilloskop).
Auf dem gleichen PC RTAI oder Xenomai installieren und Vergleichsmessungen mit RT-Preempt durchführen.
Aufgaben zu Distributionen und Root Filesystemen
Zur Einstimmung lesen Sie den Artikel von Jan Altenberg aus dem Jahr 2008 (8 Seiten):
http://elk.informatik.fh-augsburg.de/pub/rtlabor/elinux/rootfs/altenberg
Linux from Scratch
Was ist die Grundidee hinter "Linux from Scratch"? Lesen Sie dazu den Wikipedia Eintrag:
Buildroot
Lesen Sie den folgenden kurzen Artikel über Buildroot:
http://elk.informatik.fh-augsburg.de/pub/rtlabor/elinux/buildroot/lj-6-2011-buildroot.pdf
Debian/ARM
Wie funktionieren die Skripte von Ingmar Klein zum Bau des Debian für ARM? Lesen Sie dazu den Praktikumsbericht unter http://elk.informatik.fh-augsburg.de/pub/rtlabor/elinux/Berichte/2012/1/
Den Quelltext bekommen Sie mit git:
git clone https://github.com/embeddedprojects/gnublin-distribution.git
Fragen zum Mikrocontroller
Im Buch von Hallinan, Kapitel 3 lesen ("Processor Basics").
Auch im Buch von Yaghmour, Kapitel 3 kann man etwas über Hardware zu erfahren.
Gnublin Schaltplan und Datenblatt des LPC3131
http://elk.informatik.fh-augsburg.de/pub/rtlabor/elinux/gnublin
Machen Sie mit den im Skript an der Stelle ../Gliederung/main.html#uc genannten Mikrocontrollern eine Tabelle, die über folgende Punkte Aufschluss gibt: