1. Composants / périphériques
2. Emulation - Qemu
2.1. Pré-requis, préparation
2.1.1. Portage REPTAR Qemu fonctionnel
2.2. Cours
2.2.1. Introduction
2.2.1.1. Historique émulation
2.2.1.1.1. Qemu
2.2.1.2. Utilité émulation
2.2.1.2.1. Développement soft avant disponibilité du hardware
2.2.1.2.2. Debug facilité
2.2.1.2.3. Disponibilité de la "plateforme". Pas besoin d'être devant la carte pour travailler avec.
2.2.1.2.4. Virtualisation: full virtualisation, IO, devices,...
2.2.2. Structure générale Qemu
2.2.2.1. Machine
2.2.2.2. Arborescence des sources
2.2.3. Emulation jeu d'instructions
2.2.3.1. Concepts
2.2.3.1.1. Architectures: CISC/RISC
2.2.3.1.2. Host <-> Target backend,frontend
2.2.3.2. Implémentation
2.2.3.2.1. TCG: Tiny Code Generator
2.2.4. Emulation CPU
2.2.4.1. Registres
2.2.4.2. Mémoire
2.2.4.3. Caches
2.2.4.4. Interrupts
2.2.5. Emulation périphériques
2.2.5.1. Périphériques mappés en mémoire
2.2.5.2. Bus et périphériques sur bus
2.2.5.2.1. PCI
2.2.5.2.2. I2C
2.2.6. Nouvelle machine dans Qemu
2.2.6.1. "Assemblage" des différents blocs vu dans les chapitres précédents
2.3. Labos
2.3.1. Emulation d'un nouveau périphérique sous Qemu
2.3.1.1. FPGA Reptar
3. Drivers - Linux
3.1. Pré-requis, préparation
3.1.1. Kernel REPTAR 100% fonctionnel
3.2. Cours
3.2.1. Concepts de base drivers
3.2.1.1. Espace kernel
3.2.1.2. Interface userspace avec les périphériques
3.2.1.3. Implémentation syscalls
3.2.2. Architecture framework device drivers Linux
3.2.2.1. Types et classes
3.2.2.1.1. character, block, network ... drivers
3.2.2.1.2. classes: ls /sys/class
3.2.2.2. Device vs driver: struct device/struct driver
3.2.2.3. Hiérarchie/organisation
3.2.2.3.1. Platform device
3.2.2.3.2. Bus device
3.2.2.3.3. Hotplug
3.2.3. Concepts avancés
3.2.3.1. sysfs: "nouvelle" méthode d'interaction avec les drivers
3.2.3.2. Threaded IRQ
3.2.3.3. DMA
3.3. Labos
3.3.1. Driver Linux pour FPGA Reptar
3.3.1.1. Driver simple open/read/write/close: afficheurs 7 segments board FPGA
3.3.1.2. Driver input/keyboard: boutons board FPGA + interrupt
3.3.1.3. DMA: transferts buffers de et vers DDR FPGA
4. Virtualisation - EmbeddedXen
4.1. Pré-requis, préparation
4.1.1. Portage EmbeddedXen REPTAR
4.2. Cours
4.2.1. Concepts de base et historique
4.2.1.1. Types de virtualisation
4.2.1.1.1. Type I vs Type II
4.2.1.1.2. PV
4.2.1.1.3. Full
4.2.1.1.4. HVM
4.2.2. Approfondissement EmbeddedXen
4.2.2.1. Concepts Xen de base
4.2.2.2. Adaptations pour l'embarqué
4.3. Labos
4.3.1. Prise en main EmbeddedXen
4.3.1.1. Compiler et booter une image EmbeddedXen+dom0+domU
4.3.1.2. Switch entre les domaines
4.3.2. Driver frontend/backend FPGA
4.3.2.1. Rings/Xenbus
5. Références
5.1. Qemu
5.1.1. Qemu Internals: http://qemu.weilnetz.de/qemu-tech.html
5.1.2. GNU/Linux magazine: n° 147/148/150
5.1.2.1. http://www.unixgarden.com/index.php/gnu-linux-magazine/qemu-visite-au-coeur-de-lemulateur
5.1.2.2. http://www.unixgarden.com/index.php/gnu-linux-magazine/qemu-comment-emuler-une-nouvelle-machine-cas-de-lapf27
5.2. Drivers Linux
5.2.1. LDD3: http://lwn.net/Kernel/LDD3/
5.2.2. Doc sources Linux: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=tree;f=Documentation/driver-model
5.3. Virtualisation
5.3.1. EmbeddedXen SF: http://sourceforge.net/projects/embeddedxen/
5.3.2. Wiki EmbeddedXen: http://sourceforge.net/apps/mediawiki/embeddedxen/index.php?title=Main_Page