Projet système : faq

De Ensiwiki
Aller à : navigation, rechercher

Mycomputer.png  Deuxième Année  CDROM.png  Informatique 

Conseils

  • Avez-vous noté le document sur la conduite du projet ? (PC ou FPGA)

Astuces

Compiler le projet sur une architecture 64bits

Le projet contient du code assembleur qui ne compile pas sur une machine avec une distribution x86_64. Pour pouvoir compiler le projet, il faut éditer les Makefile et indiquer à gcc, as et ld qu'ils doivent générer un executable pour une cible i386. Il y a deux fichiers à éditer dans le dossier kernel-base: kernel-base/kernel/Makefile et kernel-base/kernel/kbd_linux/Makefile. Remplacez

CC=gcc
AS=gcc
LD=ld

par

CC=gcc -m32
AS=gcc -m32
LD=ld -melf_i386

Modifier ces options ne vous gênera pas pour compiler votre projet sur une machine 32 bits classique.

Débugger avec Nemiver

Nemiver est une interface graphique de gdb qui offre des fonctionnalités très pratiques tout en étant beaucoup plus agréable à utiliser que ddd. Il devrait être inclus dans les dépôts de vôtre distribution favorite.

Pour l'utiliser, il faut tout d'abord ajouter vos dossiers kernel, shared et user dans Edition->Préférences->Répertoires de source. Ensuite, comme avec gdb/ddd, lancez votre machine virtuelle, faites 'D' quand l'écran bleu s'affiche et simulez une liaison série avec :

 socat UNIX-CONNECT:/tmp/vbox-psys PTY,link=/tmp/gdb-psys

Ensuite, dans Nemiver :

  • Ouvrez Fichier->Se connecter à une cible distante....
  • Dans la fenêtre qui s'ouvre, choisissez le fichier exécutable à charger (normalement kernel/kernel.bin)
  • Sélectionnez connexion ligne série, puis choisissez le port /tmp/gdb-psys

Le débuggeur doit maintenant s'ouvrit au début de kernel_start().

BUGS

undefined "__builtin_stdarg_start", lors d'une compilation avec gcc-4.4

Avec les versions récentes de gcc, la compilation des sources initiales s'arrête sur une erreur dans le fichier shared/stdarg.h

Il faut remplacer ligne 27 "__builtin_stdarg_start" par "__builtin_va_start"