Trail Sheevaplug OpenBSD

From Tmplab

(Difference between revisions)
Jump to: navigation, search
(Stub de cross-compilation pour sheevaplug)
(Undo revision 2668 by Lekernel (Talk) motif: augmentation du SNR)
Line 4: Line 4:
* Se familiariser avec
* Se familiariser avec
** l'architecture physique des ordinateurs
** l'architecture physique des ordinateurs
-
** l'architecture propriétaire ARM
+
** l'architecture ARM
** le debugging JTAG
** le debugging JTAG
** la chaine de compilation et le systeme OpenBSD
** la chaine de compilation et le systeme OpenBSD

Revision as of 20:59, 9 September 2010

Contents

Objectif

  • Faire démarrer un kernel ramdisk OpenBSD sur un Sheevaplug, et afficher le dmesg sur le port série.
  • Se familiariser avec
    • l'architecture physique des ordinateurs
    • l'architecture ARM
    • le debugging JTAG
    • la chaine de compilation et le systeme OpenBSD

Modus operandi

Le Code Trail proprement dit commencera le vendredi 1 oct. au soir et se terminera le dimanche 3 oct dans l'apres-midi. Chaque personne qui a des tutos et des docs intéressantes est fortement invitée à les publier ou les référencer sur cette page.

Participants

  • dermiste
  • James
  • phantez
  • nizox

Docs

Cross-compilation sur OpenBSD

Il faut d'abord récupérer l'arborescence des sources tel qu'indiqué dans la FAQ 5.3.3, et upgrader le système au snapshot le plus récent (FAQ 5.1 et FAQ 5.3.2).

Il faut ensuite construire la chaine de compilation. Il existe pour cela une infrastructure complète, bien que non documentée. Voici par exemple la procedure a suivre pour une chaine ciblant les machines mvme88k :

# cd /usr/src
# TARGET=mvme88k make -f Makefile.cross cross-tools

Vous pouvez aller vous prendre un ou plusieurs café en attendant la fin de la compilation. Votre chaine se retrouvera dans /usr/cross/$TARGET.

Cross-compiler un noyau se fait alors de la meme maniere qu'une compilation standard, à une différence près : il faut rajouter /usr/cross/${TARGET}/usr/${TARGET_ARCH}-unknown-openbsd/bin en tête du PATH. Ce répertoire contient les liens symboliques vers les versions cross- des outils de compilation classiques.

Stub de cross-compilation pour sheevaplug

OpenBSD dispose deja de ports sur ARM. Les headers du port armish semblent convenir pour générer des executables pour le sheevaplug.

# cp -R /usr/src/sys/arch/armish /usr/src/sys/arch/sheeva

Il faut ensuite éditer le fichier /usr/src/Makefile.cross et rajouter ${TARGET} == "sheeva" dans le test qui énumère les différentes cibles basées sur ARM.

Dans un premier temps, il est possible de juste générer la chaine de cross-compilation armish et de l'utiliser telle quelle pour générer des binaires pour sheevaplug.

ATTENTION, IL SEMBLE Y AVOIR QUELQUES PROBLEMES AVEC -current, UTILISEZ -release OU -stable

patches pour omconsole

omconsole est un petit utilitaire écrit par matthieu@ qui permet d'accéder au port série du neo freerunner via la libftdi. Le sheevaplug a le meme circuit que le neo freerunner, il suffit donc de rajouter les options kivonbien (c). Pour ce faire, récupérez le patch Image:Omconsole.tgz, décompressez l'archive, et installez omconsole comme indiqué :

cd /usr/ports/misc/omconsole
make patch
cd `make show=WRKSRC`
patch -Np1 -i ~/omconsole.diff
cd -
make install

configuration d'OpenOCD

source [find board/sheevaplug.cfg]

gdb_port 4453
tcl_port 4456
telnet_port 4454

arm7_9 fast_memory_access enable

patches pour libusb

L'acces au port serie et au port JTAG du sheevaplug se fait via la libftdi, qui utilise la libusb. Pour utiliser simultanément ces deux ports, il faut d'abord récupérer l'arborescence des ports tel qu'indiqué dans la FAQ, récupérer le patch Image:Libusb.tgz et le décompresser, puis contruire la libusb de la facon suivante :

cd /usr/ports/devel/libusb
make patch
cd `make show=WRKSRC`
patch -Np1 -i ~/libusb.diff
cd -
make install

test de la chaine

Installez, à l'aide des documents ci dessus, la chaine de cross-compilation pour sheevaplug, la libusb patchée, omconsole patché, et openocd.

Récupérez Image:Test chaine sheeva.tgz et décompressez l'archive. Elle devrait contenir les fichiers suivants :

  • init.S
  • main.c
  • ldscript
  • Makefile

Cette commande devrait compiler l'ensemble :

PATH=/usr/cross/armish/usr/arm-unknown-openbsd`uname -r`/bin:$PATH make

Maintenant branchez le sheevaplug, et lancez OpenOCD depuis le repertoire contenant les binaires juste produits. Connectez vous sur la console telnet et chargez l'image elf avec les commandes suivantes :

reset halt
load_image bare.elf
resume 0x15000000

Normalement, la LED bleue du sheevaplug devrait clignoter.

Vous pouvez changer la valeur de delay. Pour cela récupérez l'adresse mémoire de delay avec readelf -s, et utilisez la console telnet d'OpenOCD pour changer sa valeur.

mww <adresse de delay en hexadécimal> <nouvelle valeur de delay en hexadecimal>

Datasheets

Dans la mesure du possible, épluchez un peu ces docs avant le trail.


Personal tools