MIPS HOWTO Ralf Bächle, ralf@gnu.org V 0.1, 13 mars 1998 Ce MANUEL décrit le portage MIPS du système d'exploitation Linux, des problèmes courants et de leur solutions ainsi que de certaines possi­ bilités (voire plus). Il tente aussi d'être une petite aide pour les autres personnes qui lirait cette FAQ dans l'espoir de trouver des informations qui, actuellement, pourrait etre fournis ailleurs. ______________________________________________________________________ Table des matières 1. Qu'est-ce-que Linux/MIPS ? 2. Quel est le matériel que Linux/MIPS supporte ? 2.1 Les plates-formes matérielles : 2.1.1 L'Acer PICA : 2.1.2 Les séries Baget/MIPS : 2.1.3 Cobalt Qube et Raq 2.1.4 La Netpower 100 2.1.5 La Nintendo 64 2.1.6 L'indy de Silicon Graphics 2.1.6.1 Nombres bizarres de mémoire possible 2.1.6.2 Problèmes rencontrés avec des PROM Indy 2.1.6.3 Support de ELF dans les vieilles version de PROM 2.1.6.4 Pourquoi y-a-t-il tant de mémoire réservé sur mon Indy ? 2.1.7 La Silicon Graphics Challenge S 2.1.8 Silicon Graphics Indigo 2.1.9 Console série sur des machines SGI 2.1.10 Les machines basées sur le motorola 68k comme l'Iris 3000 2.1.11 Le VisPC SGI 2.1.12 Autres machines de Silicon Graphics 2.1.13 La Playstation Sony 2.1.14 Le SNI RM200C 2.1.15 Le SNI RM200 2.1.16 Le SNI RM300C 2.1.17 Le SNI RM400 2.1.18 Le P4032 algorithmique 2.1.19 Le P5064 algorithmique 2.1.20 Les séries DECstation 2.1.21 Le MIPS Magnum 4000 / Olivetti M700-10 2.1.22 Le MIPS Magnum 4000SC 2.1.23 Les VaxStations 2.2 Les types de processeurs 2.2.1 La famille des R2000 et des R3000 2.2.2 Le R6000 2.2.3 La famille des R4000 et des R5000 2.2.4 Le R8000 2.2.5 Le R10000 3. Les distributions Linux. 3.1 La RedHat 4. Les ressources réseaux de Linux/MIPS. 4.1 Les serveurs FTP anonymes. 4.2 Les serveurs CVA anonymes. 4.3 Les serveurs Web. 4.4 Les Mailing lists. 5. L'installation de Linux/MIPS et les problèmes courants. 5.1 Quand le boot sur NFS échoue. 5.2 Noyau compilé eux-mêmes échoue lors du boot. 5.3 Le boot sur le noyau d'un Indy échoue avec les messages d'erreurs de la PROM 5.4 Ou puis-je positionner le type little endian pour mon SNI ? 5.5 ld plante avec le signal 6 6. Milo 6.1 Construire Milo 6.2 Pandora 7. Les modules chargeables 8. Comment initialiser un crosscompiler? 8.1 Besoins en espace disque 8.2 Ordre des octets 8.3 Noms de configuration 8.4 Installation de GNU Binutils. 8.5 Assert.h 8.6 Première installation d'egcs 8.7 float.h 8.8 Installer les sources du noyau 8.9 Installer la GNU libc 8.10 Reconstruire encore egcs 8.11 Devrais-je construire les compilateurs C++, Objective C ou F77 ? 8.12 GDB 9. Littérature 9.1 Voir un MIPS fonctionner (See MIPS Run) 9.2 Le guide du développeurs MIPS (The MIPS Programmer's Handbook) 9.3 Architecture des ordinateurs - Une approche quantitative (Computer Architecture - A Quantitative Approach) 10. Les nouvelles de Linux/MIPS ______________________________________________________________________ 11.. QQuu''eesstt--ccee--qquuee LLiinnuuxx//MMIIPPSS ?? Linux/MIPS est un portage du trés répandu clone UNIX Linux vers l'architecture MIPS. Linux/MIPS fonctionne sur un grand nombre de système techniquement très différent qui s'étend des petits systémes embarqués et des serveurs jusqu'à des grosses machines bureautique et les serveurs qui, au moins à l'époque où ils ont été introduit sur le marché, était les meilleurs de leur classe. Les avantages de Linux/MIPS par rapport aux autres sytèmes d'exploitation en ce moment sont : · Le système complet Linux se compose de seulement de Logiciels Libres, · L'excellent qualité-prix, · L'existance d'une importante quantité de logiciels dont une grande partie est encore en Logiciel Libre, · Un compatibilité binaire à travers un nombre croissant de plates- formes, · Une petite empreinte rendant Linux/MIPS approprié pour plusieurs systèmes embarqués. En résumé, Linux a été mis en projet et embarqué avec Fahrvergnügen. Cependant, comme d'habitude, votre kilométrage devrait varier et vous devrez vérifier que Linux convienne pour votre projet ce que ce document prétent essayer de faire. 22.. QQuueell eesstt llee mmaattéérriieell qquuee LLiinnuuxx//MMIIPPSS ssuuppppoorrttee ?? 22..11.. LLeess ppllaatteess--ffoorrmmeess mmaattéérriieelllleess :: Plusieurs machines sont utilisables avec un nombre différent d'options CPU dont pas tous sont actuellement supporté. S'il vous plait, regardez la section "Type de processeurs" pour être sur que votre type de CPU soit supporté. C'est une liste de machines qui font fonctionner Linux/MIPS, des systèmes où Linux/MIPS peut être porté ou bien des systèmes que les gens ont intérêt à faire fonctionner avec Linux/MIPS. 22..11..11.. LL''AAcceerr PPIICCAA :: L'Acer PICA est dérivé de l'architecture Mips Magnum 4000. Il a un CPU R4400PC fonctionnant à 133 Mhz ou optionnellement à 150 Mhz, plus une mémoire cache de second niveau de 512 Kb (optionnellement 2 Mb) ; la carte gfx G364 du Magnum a été remplacé par une carte S3 968 basée sur celui-ci. Le système est supporté à l'exception du serveur X. 22..11..22.. LLeess sséérriieess BBaaggeett//MMIIPPSS :: Les séries Baget incluent plusieurs boîtes qui possèdent des processeurs R3000 : Baget 23, Baget 63 et Baget 83. Les Baget 23 et 63 ont une carte mère BT23-201 ou BT23-202 avec respectivement un R3500A (qui est un composant R3000A simplifié) à 25 MHz et un R3081E à 50 MHz. La carte BT23-201 a un bus VME et comporte les puces VIC068, VAC068 comme contrôleurs systèmes. La carte BT23-202 a un bus interne PCI et un bus externe VME. Le support pour la carte BT23-201 a été faite par Gleb Raiko (rajko@mech.math.msu.su) et Vladimir Roganov (vroganov@msiu.ru) avec un petite aide de Serguei Zimin (zimin@msiu.ru). Le support pour la BT23-202 est en train d'être développé avec le Baget 23B qui est composé de 3 cartes BT23-201 avec un bus VME partagé. Le Baget 83 est mentionné ici uniquement pour être complet. Il a seulement 2 Mb de RAM et c'est trop peu pour faire fonctionner Linux. Le code du Baget/MIPS a été fusionné avec le port DECstation ; les sources pour les deux plates-formes sont à l'adresse decstation.unix- arg.org. 22..11..33.. CCoobbaalltt QQuubbee eett RRaaqq Les séries de produits Cobalt Qube sont des systèmes de serveur de faible coût basés sur un IDT R5230. Cobalt a développé sa propre variante de Linux/MIPS pour s'adapter aussi bien que possible aux besoins particuliers de Qube. Au départ le noyau Qube a été dérivé à partir de Linux/MIPS 2.1.56, reporté ensuite vers la version 2.0.30 par égard à la stabilité, puis optimisé. Les noyaux Cobalt sont téléchargeable à partir du site ftp www.cobaltnet.com. Le support Cobalt Qube n'a jamais été intégré dans les noyaux officiels Linux/MIPS 2.1.x. 22..11..44.. LLaa NNeettppoowweerr 110000 Le Netpower 100 est apparemment un Acer PICA déguisé. Il devrait, par conséquent, être supporté mais ce n'a pas été testé. Si un problème apparaît alors, c'est probablement la détection de la machine. 22..11..55.. LLaa NNiinntteennddoo 6644 La Nintendo 64 est une console de jeux basée sur le R4300 avec 4 Mb de RAM. Ses puces graphiques ont été développé par Silicon Graphics pour Nintendo. En ce moment, ce portage est encore un rêve et il continuera de l'être jusqu'à ce que Nintendo décide de publier les informations techniques nécessaires. La question qui reste est de savoir si c'est une bonne idée. 22..11..66.. LL''iinnddyy ddee SSiilliiccoonn GGrraapphhiiccss L'indy est (principalement), en ce moment, la seule machine de Silicon Graphics supporté. L'unique carte graphique supportée est la carte Newport aka "XL" graphique. L'indy existe avec un grand nombre d'options de CPU à des taux d'horloge variables, tous sont supportés. Il n' y a, pour l'instant, aucun serveur X possible pour l'indy ; Alan Cox (alan@lxorguk.ukuu.org.uk) est en train de travailler sur l'une d'entre elles. 22..11..66..11.. NNoommbbrreess bbiizzaarrrreess ddee mméémmooiirree ppoossssiibbllee Au démarrage, le noyau sur l'Indy rapportera la mémoire possible avec un message du type : 27976k/163372k available (1220k kernel code, 2324k data) La grosse différence entre la première paire de nombres est du à l'aire de 128 Mb dans l'espace d'adressage de la mémoire de l'Indy qui reflète les 128 premiers Mb de la mémoire. La différence entre les 2 nombres sera toujours proche de 128 Mb et n'indique pas un quelconque problème. 22..11..66..22.. PPrroobbllèèmmeess rreennccoonnttrrééss aavveecc ddeess PPRROOMM IInnddyy Plusieurs personnes ont rapporté l'existence de ces problèmes avec leur machine après les avoir mis à jour typiquement à partir de parts en excédent. Il y a plusieurs versions possibles de PROM pour l'Indy. Les machines, dotées d'une version d'une vieille PROM, et qui ont été mis à jour vers une variante d'un très récent CPU comme un module R4600SC ou R5000SC peuvent se cracher pendant l'auto_test avec un message du type : Exception: < vector=Normal> Status register: 0x30004803< CU1,CU0,IM7,IM4,IPL=???,MODE=KERNEL,EXL,IE> Cause register: 0x4000< CE=0,IP7,EXC=INT> Exception PC: 0xbfc0b598 Interrupt exception CPU Parity Error Interrupt Local I/O interrupt register 1: 0x80 < VR/GIO2> CPU parity error register: 0x80b< B0,B1,B3,SYSAD_PAR> CPU parity error: address: 0x1fc0b598 NESTED EXCEPTION #1 at EPC: 9fc3df00; first exception at PC: bfc0b598 Dans ce cas, vous devrait mettre à jour votre PROM de la machine vers une version plus récente ou retourner vers un version du CPU plus vieille. Habituellement les modules R4000SC ou R4400SC devrait fonctionner dans ce cas-là. Juste pour être bien clair, ceci est un problème qui n'a pas de rapport avec Linux. Ceci est mentionné ici uniquement parce que plusieurs utilisateurs de Linux ont posé des questions à propos de ça. 22..11..66..33.. SSuuppppoorrtt ddee EELLFF ddaannss lleess vviieeiilllleess vveerrssiioonn ddee PPRROOMM Les vieilles versions de PROM ne reconnaissent pas le format binaire ELF utilisé par le noyau de Linux, ce qui empêche de booter directement sur Linux. La solution préférable pour ça, est, évidemment, une mise à jour de la PROM. Une autre possibilité est d'utiliser Sash d'IRIX 5 ou une version plus récente pour booter le noyau. Sash sait comment charger les binaires ELF et ne fait pas attention si c'est un noyau IRIX ou Linux. Tapez simplement ``Sash'' sur l'écran de la prom. Vous devriez obtenir un autre prompt shell, cette fois à partir de Sash. Maintenant lancer Linux comme d'habitude. Sash peut lire les systèmes de fichiers EFS et XFS, ou lire le noyau à partir du bootp / tftp. Ce qui veut dire que si vous tentez d'utiliser Sash pour booter le noyau d'un disque local, vous devrez encore avoir une installation minimal d'IRIX sur votre système. 22..11..66..44.. PPoouurrqquuooii yy--aa--tt--iill ttaanntt ddee mméémmooiirree rréésseerrvvéé ssuurr mmoonn IInnddyy ?? Au démarrage, le message `Memory: ...' sur un Indy dit qu'il y a 128 Mb de RAM réservé. Ceci est ok ; exactement comme l'architecture PC qui possède un interval dans son espace de mémoire de 640 Kb à 1024 Kb, l'Indy posséde une aire de taille 128 Mb dans sa place mémoire où les 128 premiers Mb de sa mémoire sont reflétés. Linux connaît ce problème et donc ignore cette partie de mémoire, ainsi que le message. 22..11..77.. LLaa SSiilliiccoonn GGrraapphhiiccss CChhaalllleennggee SS Cette machine est très similaire à l'Indy ; la différence est qu'il n'a pas de clavier et de carte GFX mais possède un adaptateur SCSI additionnelle basé sur le WD33C95. Cet adaptateur hôte n'est pas encore supporté. 22..11..88.. SSiilliiccoonn GGrraapphhiiccss IInnddiiggoo Cette machine est uniquement mentionné ici car, occasionnellement, des gens le confonde avec un Indy. La série Indigo a pourtant une architecture différente et par conséquent n'est pas encore implémenté. Andrew R. Baker (andrewb@uab.edu) a annoncé un projet universitaire pour porter Linux vers l'Indigo à partir du 2 janvier 1999. 22..11..99.. CCoonnssoollee sséérriiee ssuurr ddeess mmaacchhiinneess SSGGII Vérifiez que le noyau que vous êtes en train d'utiliser inclus le driver approprié pour une interface et une console série. Mettez la variable d'environnement de la console ARC soit à la valeur d1 soit à d2 pour l'Indy et le Challenge S par rapport à l'interface série que vous utilisez comme console. Si vous avez le problème qui affiche tous les messages du noyau sur la console série lors du démarrage alors que tout est manquant lorsque l'initialisation débute, alors vous avez probablement le mauvais setup pour /dev/console. Vous pouvez trouver plus d'informations à propos de cela dans la documentation du source du noyau Linux ; il est dans /usr/src/linux/Documentation/serial-console.txt. Si le source du noyau est installé. 22..11..1100.. LLeess mmaacchhiinneess bbaassééeess ssuurr llee mmoottoorroollaa 6688kk ccoommmmee ll''IIrriiss 33000000 Il y a de très vieilles machines, sûrement de plus de 10 ans à l'heure qu'il est. Comme ces machines ne sont pas basées sur les processeurs MIPS, ce document n'est pas le meilleur moyen pour chercher des informations. Cependant, dans le but de rendre les choses plus simples, ces machines ne sont pas courrament supporté. 22..11..1111.. LLee VViissPPCC SSGGII Celui-ci est actuellement un système basé sur l'architecture x86, par conséquent pas couvert par cette FAQ. Mais pour fournir des réponses simples à votre recherche, voila : Ken Klingman (kck@mailbox.esd.sgi.com) a posté le 17 janvier 1999 dans la liste électronique Linux de SGI : Nous somme en train de travailler dessus. Nous sommes actuellement tout près de fournir un support système de bas niveau dans la release 2.2. Les logiciels uniquement sous X et OpenGl devrait suivre relativement vite, mais le matériel accéléré pour OpenGL est encore remis. Allez à www.precisioninsight.com pour des nouvelles à propos du matériel accéléré pour OpenGL. Pour plus d'informations, lisez la documentation du noyau Linux à partir des versions 2.2.0. Il y a des informations additionnelles possibles sur le web à www.linux.sgi.com/intel/. Notez que les gens de SGI/MIPS et SGI/Intel travaille indépendamment les uns des autres, par conséquent les sources dans le CVS anonyme sur linux.linux.sgi.com peut ou ne peut pas fonctionner sur les machines Intel ; nous ne testons pas ça. 22..11..1122.. AAuuttrreess mmaacchhiinneess ddee SSiilliiccoonn GGrraapphhiiccss Aujourd'hui, aucune autre machine de Silicon Graphics n'est supporté. Ceci s'applique aussi aux très vieux système basés sur le Motorola 68k. 22..11..1133.. LLaa PPllaayyssttaattiioonn SSoonnyy La station de jeux Sony est basé sur un R3000 dérivé et utilise un ensemble de composants graphiques développé par Sony lui-même. Alors que la machine, en théorie, devrait être capable de faire fonctionner Linux, un portage est difficile puisque jusqu'ici Sony n'a pas fournis les informations technique nécessaire. Ceci laisse encore la question de l'utilité d'un portage sans réponses. Donc, pour résumer, rien n'a encore été ajouté bien que, jusqu'ici, énormément de personne aient montré leur intérêt pour l'utilisation de Linux sur une station de jeux. 22..11..1144.. LLee SSNNII RRMM220000CC A l'opposé du RM200 (voir plu bas), cette machine possède des slots EISA et PCI. Le RM200 est supporté à l'exception de la possibilité du contrôleur SCSI sur carte NCR53c810A. 22..11..1155.. LLee SSNNII RRMM220000 Si votre machine possède à la fois les slots EISA et PCI, alors c'est un RM200C ; s'il vous plaît voyez juste au-dessus. A cause des légères différences architecturales, cette machine n'est pas supporté en ce moment dans les sources officiels. Michael Engel (engel@numerik.math.uni-siegen.de) s'est débrouillé pour rendre son RM200 utilisable partiellement mais les patches ne sont pas encore inclues dans les sources officiels du Linux/MIPS. 22..11..1166.. LLee SSNNII RRMM330000CC Le RM300 est techniquement très similaire au RM200C. Il devrait être supporté par le noyau Linux courant, mais nous n'avons reçus aucun rapport. 22..11..1177.. LLee SSNNII RRMM440000 Le RM400 n'est pas supporté. 22..11..1188.. LLee PP44003322 aallggoorriitthhmmiiqquuee Le port P4032 fonctionne toujours, au moment de l'écriture de ce manuel, avec le noyau Linux 2.1.36. 22..11..1199.. LLee PP55006644 aallggoorriitthhmmiiqquuee Le P5064 est simplement une variante 64 bits du P4032 basé sur le R5000. Il n'est pas encore supporté mais un port Linux sera prêt bientôt. 22..11..2200.. LLeess sséérriieess DDEECCssttaattiioonn Le support pour les stations DEC est en cours de développement, Paul M. Antoine l'ayant débuté. Aujourd'hui la plus part du travail est fait par Harald Koerfgen (harald.koergfgen@netcologne.de) et d'autres personnes. Sur l'InterNet, des informations en rapport aux stations DEC peuvent être trouvé à . Le but est de supporter tous les différents parfums des stations DEC qui existent. Voici la liste des modèles des stations DEC que nous connaissons : · 2100, nom de code PMAX, · 3100, identique que le 2100 sauf le R2000A/R2010A @ 16 MHz · 5000/xx (Personal DECstation), nom de code MAXine · 5000/1xx, nom de code 3MIN · 5000/200, nom de code 3MAX · 5000/2x0, nom de code 3MAX+ · 5100, nom de code MIPSMATE Le 2100 possède un processeur R2000A/R2010A à 12 MHz, le 5000/240 un processeur à 40 MHz (Qu'est-ce-qu'avait le 5k/260 ?) et le 5100 un processeur R3000A à 20 MHz. Les autres 5000 mentionné ont un processeur R3000A/R3010A à 20, 25, ou 33 MHz. Le MAXine et le 3MIN ont le processeur et le cache sur une carte fille séparé qui peuvent être échangé avec un processeur R4000 à 50 MHz. Au moment de cette rédaction, les drivers des matériels séries et Ethernet pour les IC qui sont sur la carte ont été développé, la 3MIN boot en simple utilisateur. 22..11..2211.. LLee MMIIPPSS MMaaggnnuumm 44000000 // OOlliivveettttii MM770000--1100 Ces deux machines sont presque complètement identique. Revenons sur l'initiative d'ACE, Olivetti a breveté le projet Jazz et distribué la machine avec Windows NT comme OS. MIPS Computers Systems, Inc. ont acheté eux-mêmes le projet Jazz et l'ont distribué en tant que séries de machine MIPS Magnum 4000. Les systèmes Magnum 4000 sont distribués avec les systèmes d'exploitation Windows NT et RISC/OS. Les caractéristiques matériels de la machine dépendait du systèmes d'exploitation qui était installé. Linux/MIPS supporte uniquement la caractéristique "little endian" sur ces deux types de machines. Depuis que le M700-10 est uniquement distribué comme une machine NT, tous les machines M700-10 ont cette caractéristiques d'installées. Le cas du MIPS Magnum est quelque peu plus complexe. Si votre machine a été configuré en "big endian" pour RISC/OS alors vous avez besoin de recharger la caractéristique "little endian". Cette caractéristique a été à l'origine incluse sur une disquette avec chaque Magnum. Si vous n'avez pas la moindre disquette, vous pouvez la télécharger via le ftp anonyme à ftp.fnet.fr. Il est possible de reconfigurer le M700 pour des opérations en positionnant les variables d'environnement "ConsoleIn" et "ConsoleOut" du matériel à multi()serial(0)term(). Puis essayez la commande "listdev" qui montrera les matériels ARC possibles. Dans bien des cas, comme lorsque la carte graphique G364 est manquante mais où la console est toujours configuré pour utiliser un mode graphique normal, il sera nécessaire de configurer le jumper JP2 sur la carte. Après le prochain reset, la machine rebootera avec la console sur le COM2. 22..11..2222.. LLee MMIIPPSS MMaaggnnuumm 44000000SSCC Le MIPS Magnum 4000SC est le même que le Magnum 4000 (voir plus bas) à l'exception qu'il utilise un CPU R4000SC. 22..11..2233.. LLeess VVaaxxSSttaattiioonnss Comme le nom l'indique déjà, cette machine est un membre de la famille VAX de Digital Equipment. Il est mentionné ici car beaucoup de personne le confonde souvent avec les MIPS de Digital basé sur la famille des stations DEC à cause de leur numérotation semblable. Ces deux familles d'architecture partagent de petites similitudes techniques. Malheureusement, la VaxStation, comme toutes la famille des VAX, n'est pas supporté. 22..22.. LLeess ttyyppeess ddee pprroocceesssseeuurrss 22..22..11.. LLaa ffaammiillllee ddeess RR22000000 eett ddeess RR33000000 Le R2000 est le processeur MIPS originel. C'est un processeur 32 bits qui avait une horloge à 8 MHz dans les années 85 quand le premier processeur MIPS arriva sur le marché. Plusieurs versions possèdent une vitesse d'horloge plus rapide : par exemple, le R3000 est un modèle 100% compatible du R2000, il est juste plus rapide. A cause de leur importante compatibilité, quand ce document parle du R3000, dans bien des cas, il se passe la même chose pour le R2000. Le R3000 est simplement un R2000 plus un FPU R3010 et 64k de mémoire cache fonctionnant à plus de 40MHz et tous cela intégré sur la même carte. Le support du processeur R3000 est mis au point en ce moment par de nombreuses personnes. Harald Koerfgen (harald.koerfgen@netcologne.de) et Gleb O. Raiko (raiko@niisi.msk.ru)ont tous les deux travaillé indépendamment sur des patches qui ne sont pas encore intégré dans les sources officiels de Linux/MIPS. 22..22..22.. LLee RR66000000 Quelques fois des gens confonde le R6000, un processeur MIPS, avec le RS6000, une séries de stations de travail vendu par IBM. Donc si vous avez lu ce document dans l'espoir de trouver plus d'informations de Linux sur les machines IBM, vous avez lu le mauvais document. Le R6000 n'est pas encore supporté en ce moment. C'est un processeur MIPS 32 bits ISA 2 et un morceau de silicone plutôt intéressant et bizarre. Il a été développé et produit par une compagnie appelé BIT Technology. Plus tard, NEC pris la suite de la production de semi- conducteur. Il était construit avec la technologie ECL, la même technologie que l'on utilisait et que l'on utilise encore pour construire des composants extrêmement rapide comme ceux utilisés dans les ordinateurs Cray. Le processeur avait ses TLB implémenté comme une partie du dernier couple de lignes de la mémoire cache primaire externe, une technologie appelé TLB slice. Ceci veut dire que sa MMU est substantiellement différent de celles de la série R3000 ou R4000, ce qui est encore une des raisons qui explique pourquoi le processeur n'est pas supporté. 22..22..33.. LLaa ffaammiillllee ddeess RR44000000 eett ddeess RR55000000 Linux supporte la plus part des membres de la famille des R4000. En ce moment, il y a les R4000PC, R4400PC, R4300, R4600, R4700, R5000, R5230, R5260. Plusieurs autre fonctionnent probablement assez bien. Ceux qui ne sont pas supporté sont les CPU R4000MC et R4400MC (ce sont des systèmes multiprocesseurs) ainsi que les systèmes R5000 avec une mémoire cache de second niveau contrôlé par CPU. Ce qui veut dire que le cache est contrôlé par le R5000 lui même par opposition aux contrôleurs de mémoire cache de second niveau externe. La différence est importante car, contrairement aux autres systèmes, spécialement les PC, sur les MIPS, le cache est visible sur l'architecture et nécessite d'être contrôlé par software. spécial remerciement à Ulf Carlsson (grim@zigzegv.ml.org) qui a amélioré le module CPU en débugant le support R4000SC / R4400SC. 22..22..44.. LLee RR88000000 Le R8000 n'est toujours pas supporté en partie à cause de son processeur qui est relativement rare et est uniquement utilisé dans quelques machines SGI, en partie à cause des développeurs de Linux/MIPS qui n'ont pas de tels machines. Le R8000 est un morceau de silicone plutôt intéressante. A la différence des autres membres de la famille MIPS, c'est un ensemble de 7 composants. Son cache et son architecture TLB est plutôt différent des autres membres de la famille MIPS. Il est né dans le but de permettre que le point flottant récompense Silicon Graphics avant que le R10000 soit fini. 22..22..55.. LLee RR1100000000 LE R10000 est n'est pas encore supporté à cause des développeurs de Linux/MIPS qui n'ont de machine R10000. 33.. LLeess ddiissttrriibbuuttiioonnss LLiinnuuxx.. 33..11.. LLaa RReeddHHaatt Pour MIPSeb, il y a la Rough Cuts Linux, nouveau nom de la Hard Hat Linux, qui est plus qu'une simple Red Hat Linux 5.1 portée pour MIPSeb. Vous pouvez l'obtenir à l'adresse ftp.linux.Sgi.com/pub/hardhat. Il est encore empaqueté avec les distributions du M68k, de l'UltraSparc et du PowerPC dans un paquet appelé "Rough Cuts" distribué par Red Hat, et on peut l'obtenir là où les produits de Red Hat sont vendus. Un moyen très pratique pour l'obtenir sans avoir à télécharger 280 Mb, c'est de passer commande à Rough Cuts directement à partir de la Red Hat à l'adresse www.redhat.com/products.phtml/RC1000. De plus, il y a une distribution basé sur la Red Hat 5.2 fait pour les Qubes Cobalt; ces binaires fonctionneront parfaitement sur d'autres architectures MIPSel, fournis à intel.cleveland.lug.net/pub/Mipsel. 44.. LLeess rreessssoouurrcceess rréésseeaauuxx ddee LLiinnuuxx//MMIIPPSS.. 44..11.. LLeess sseerrvveeuurrss FFTTPP aannoonnyymmeess.. Les deux principaux serveurs FTP anonymes pour Linux/MIPS sont : · ftp.linux.sgi.com Ce serveur devrait satisfaire presque tous vos envies ftp en rapport à Linux/MIPS. Vraiment. · ftp.fnet.fr Ce serveur est, en ce moment, un petit peu démodé. Il est cité ici principalement pour être exhaustif et pour les personnes qui trouve leur intérêt dans des logiciels préhistoriques. Sur tous ces serveurs ftp, il y a une liste de sites miroirs que vous pourrez utiliser pour des accès plus rapides. 44..22.. LLeess sseerrvveeuurrss CCVVAA aannoonnyymmeess.. Pour ceux qui veulent toujours rester au bord du gouffre et veulent éviter d'avoir à télécharger des patches ou des fichiers complètement "taré" (tarballs), nous avons aussi des serveurs CVS anonymes. En utilisant un serveur CVS, vous pouvez vérifier l'arbre des sources de Linux/MIPS avec la commande suivante : cvs -d :pserver:cvs@linus.linux.sgi.com:/cvs login (Uniquement utile si vous vous connecté pour la première fois sur le serveur CVS anonyme, le mot de passe est "cvs") cvs -d :pserver:cvs@linus.linux.sgi.com:/cvs co ou vous insérez Linux, libc ou gdb pour . L'autre archive CVS importante de la communauté Linux est vger.rutgers.edu où un nombre important de code a été rassemblé avant d'être envoyé vers Linus pour distribution. Bien que vger lui même n'offre plus d'accès anonymes, il y a des sites miroir qui fournissent des accès anonymes. Pour des explications sur la manière d'y accéder voir . Les modules qui ont de l'intérêt sont "linux", "modutils", "pciutils" et "netutils". 44..33.. LLeess sseerrvveeuurrss WWeebb.. Les deux serveurs web primaires anonymes pour Linux/MIPS sont · www.linux.sgi.com Ce serveur couvre la plus grande partie de Linux/MIPS; c'est un peu le centre SGI mais depuis que Linux/MIPS essaye d'être le même sur chaque plate-forme, la plus part de ces informations intéressent tous les utilisateurs. · lena.fnet.fr Ce serveur est en ce moment plutôt désuette; il est inclus ici principalement pour être exhaustif. Tous ces serveurs ont des miroirs dispersés partout à travers le monde; vous devrait pouvoir utiliser un avec de meilleur performance. 44..44.. LLeess MMaaiilliinngg lliissttss.. Il y a 3 listes de mails orientées Linux/MIPS : · linux-mips@fnet.fr Cette liste de mails est utilisé par la plus part des communications de toutes sortes apparentés non-SGI. La souscription est faite manuellement par une personne; envoyez votre requête de souscription à linux-mips-mips@fnet.fr. Vous pouvez quitter la liste en envoyant unsubscribe · linux@engr.sgi.com Cette liste de mails possède en ce moment le plus de trafic. C'est un peu le centre de SGI mais elle est, néanmoins, intéressante spécialement pour les développeurs car un bon nombre d'ingénieurs de SGI ont souscrits à cette liste. La souscription à cette liste est faite via Majordomo (majordomo@engr.sgi.com); envoyez seulement un e-mail avec les mots "subscribe linux-mips". Pour se dés-inscrire envoyez "unsubscribe linux-mips". Notez que vous devez être inscrit si vous voulez envoyer des e-mails. Le nombre croissant de spams nous a forcé à mettre en place cette police. · linux-mips@vger.rutgers.edu Cette liste de mail n'a pas énormément de trafic car la plus part des gens ont tendance à utiliser une des listes ci-dessus. l'inscription est faite par Majordomo (majordomo@vger.rutgers.edu); envoyez juste un e-mail avec les mots "subscribe linux-mips". Et pour ce désinscrire "unsubscribe linux- mips". 55.. LL''iinnssttaallllaattiioonn ddee LLiinnuuxx//MMIIPPSS eett lleess pprroobbllèèmmeess ccoouurraannttss.. 55..11.. QQuuaanndd llee bboooott ssuurr NNFFSS éécchhoouuee.. Habituellement, la raison est que les gens ont décompacté l'archive tar sous IRIX et pas sous linux. Etant donné que la représentation des fichiers matériels sous NFS n'est pas standardisé entre les variantes Unix, ça plante. Le symptôme est que le système plante avec le message d'erreur "Warning: unable to open an initial console." juste après le montage du système de fichiers NFS. Maintenant, la correction est d'utiliser un système Linux (pas obligatoirement sous MIPS) pour décompacter l'archive d'installation dans le serveur NFS. Le serveur NFS doit être lui-même du type UNIX. 55..22.. NNooyyaauu ccoommppiilléé eeuuxx--mmêêmmeess éécchhoouuee lloorrss dduu bboooott.. Lorsque j'ai construit mon propre noyau, il s'est craché. Sur un Indy, le message de crach ressemble à celui qui suit; le même problème frappe aussi d'autres machines mais peut avoir l'air complètement différent. Exception: < vector=UTLB Miss> Status register: 0x300004803< CU1,CU0,IM4,IPL=???,MODE=KERNEL,EXL,IE> Cause register: 0x8008< CE=0,IP8,EXC=RMISS> Exception PC: 0x881385cc, Exception RA: 0x88002614 exception, bad address: 0x47c4 Local I/O interrupt register 1: 0x80 < VR/GIO2> Saved user regs in hex ( <&>gpda 0xa8740e48, &_regs 0xa8741048): arg: 7 8bfff938 8bfffc4d 880025dc tmp: 8818c14c 8818c14c 10 881510c4 14 8bfad9e0 0 48 sve: 8bfdf3e8 8bfffc40 8bfb2720 8bfff938 a8747420 9fc56394 0 9fc56394 t8 48 t9 8bfffee66 at 1 v0 0 v1 8bfff890 k1 bad11bad gp 881dfd90 fp 9fc4be88 sp 8bfff8b8 ra 88002614 PANIC: Unexpected exception Ce problème est causé par un bug qui n'est pas encore fixé dans Binutils version supérieur à 2.7. Pour corriger, change la ligne suivante dans le fichier arch/mips/Makefile : LINKFLAGS = -static -N en : LINKFLAGS = -static 55..33.. LLee bboooott ssuurr llee nnooyyaauu dd''uunn IInnddyy éécchhoouuee aavveecc lleess mmeessssaaggeess dd''eerrrreeuurrss ddee llaa PPRROOMM >> boot bootp()/vmlinux 73264+592+11520+331680+27848d+3628+5792 entry: 0x8df9a960 Setting $netaddres to 192.168.1.5 (from server deadmoon) Obtaining /vmlinux from server deadmoon Cannot load bootp()/vmlinux Illegal f_magic number 0x7f45, expected MIPSELMAGIC or MIPSEBMAGIC. Ce problème arrive seulement pour des Indy avec de très vielle versions qui ne peuvent par gérer les formats binaires ELF que Linux utilise. Une solution à ce problème est en train d'être mise en place. 55..44.. OOuu ppuuiiss--jjee ppoossiittiioonnnneerr llee ttyyppee lliittttllee eennddiiaann ppoouurr mmoonn SSNNII ?? Les systèmes SNI peuvent opérer à la fois en modes big endian et little endian. En ce moment, Linux/MIPS supporte uniquement le matériel little endian. C'est un peu malchanceux étant donné que SNI n'a pas utilisé ce matériel pour gagner du temps, puisqu'il se penche sur NT. Quand le matériel fonctionne en mode big endian, le matériel à l'air semblable à un Indy SGI qui est déjà supporté, par conséquent fixé le support SNI sera relativement facile. Les programmeurs systèmes intéressés peuvent prendre contact avec Ralf Bächle (ralf@gnu.org). 55..55.. lldd ppllaannttee aavveecc llee ssiiggnnaall 66 collect2: ld terminated with signal 6 [Aborted] C'est un bug connu dans les très vielles versions de binutils. Vous devrez la mettre à jour à la version 2.8.1 plus utiliser des patches très récents. 66.. MMiilloo Milo est la chargeur de boot utilisé pour les systèmes MIPS little endian avec le matériel ARC, en ce moment la famille Jazz et le SNI RM 200. Alors que Milo utilise le même nom et a un but similaire à la version Alpha de Milo, ces deux milos n'ont rien en commun. Ils sont développés par différentes personnes, ne partage pas de code et fonctionne sur des plate-formes matérielles différentes. Le fait qu'ils possèdent tous les deux le même nom est juste une sorte d'"accident" historique. Il est projeté de ne plus utiliser Milo pour les besoins futures. 66..11.. CCoonnssttrruuiirree MMiilloo La procédure de construction de Milo est décrit en détail dans les fichiers README dans le paquet Milo. Etant donnée que Milo dépend des fichiers d'en-tête du noyau qui ont changé de nombreuses fois, Milo ne peut souvent pas être construit facilement; cependant, la distribution Milo inclus les binaires pour à la fois Milo et Pandora. 66..22.. PPaannddoorraa Pandora est un simple débuggeur. Il a été développé au début dans le but d'analyser des systèmes non-documentés. Pandora inclus un des- assembleur, des fonctions d'analyse de mémoire et plus. Si vous voulez seulement utiliser Linux, vous n'avez pas besoin d'installer Pandora. Quoiqu'il prenne peu de place. 77.. LLeess mmoodduulleess cchhaarrggeeaabblleess Utiliser les modules Linux/MIPS est plutôt facile; il a marché comme prévu pour des personnes qui l'ont utilisé sur d'autres systèmes Linux. Si vous désirez travailler sur un système modulaire, alors vous devrez avoir au moins la version de noyau 980919 et modutils installé avec une version supérieur à 2.1.121. Des versions plus vielles ne fonctionneront pas. 88.. CCoommmmeenntt iinniittiiaalliisseerr uunn ccrroossssccoommppiilleerr?? Avant tout, allez télécharger les paquetages sources suivants : · binutils-2.8.1.tar.gz · egcs-1.0.2.tar.gz · glibc-2.0.6.tar.gz · glibc-crypt-2.0.6.tar.gz · glibc-localedata-2.0.6.tar.gz · glibc-linuxthreads-2.0.6.tar.gz C'est les versions courantes recommandées. Des versions plus vielles peuvent ou ne peuvent pas fonctionner. Si vous essayez d'utiliser des versions plus vielles, s'il vous plaît n'envoyez pas de rapport de bugs ; nous n'y attacherons aucune importance. Lors de l'installation, s'il vous plaît, installez tous dans l'ordre : binutils, egcs puis glibc. A moins que vous ayez des versions plus vieilles déjà installé, changer l'ordre fera échouer le processus. La description suivante de l'installation mentionne un nombre de patches que vous pouvez prendre des paquets SRPM respectifs sur ftp.linux.sgi.com. Cependant, depuis que ces paquets SRPM ont pour but d'être compilé nativement, il n'est pas possible de juste les recompiler. 88..11.. BBeessooiinnss eenn eessppaaccee ddiissqquuee Pour l'installation, vous aurez à choisir un dossier pour l'installation. Je ferais référence à ce dossier ensuite avec .Pour ne pas avoir de problèmes, il vaut mieux la même valeur pour que pour votre gcc natif. Par exemple, si votre gcc est installé dans /usr/bin/gcc alors choisissez /usr pour Vous devez utiliser la même valeur pour tous les paquetages que vous allez installer. Pendant la compilation, vous aurez besoin d'environ 31 Mb d'espace disque pour binutils; pour l'installation, vous aurez besoin de 7 Mb d'espace disque pour une partition sur La construction d'egcs requiert 71 Mb et l'installation 14 Mb. La librairie GNU libc a besoin de 149 Mb d'espace disque durant la compilation et 33 Mb pour l'installation. Notez que ces nombres sont juste une indication et devrait différer significativement pour différents processeurs et architectures de système d'exploitation. 88..22.. OOrrddrree ddeess oocctteettss Une des caractéristiques spéciales de l'architecture MIPS est que tous les processeurs excepté le R8000 peuvent être configuré pour fonctionner soit en mode big endian soit en mode little endian. L'ordre des octets signifie la manière dont le processeur garde les nombres de plusieurs octets en mémoire. Les machines big endian garde l'octet de poids fort au bas de l'adresse tandis que les machines little endian le garde à l'adresse la plus haute. Pensez que c'est comme si vous écriviez des nombres de plusieurs chiffres de gauche à droite et vice versa. Dans le but d'initialiser le compilateur croisé correctement, vous devez connaître l'ordre des octets de la cible du compilateur croisé. Si vous ne le savez pas, vérifiez la section "Plate-formes matérielles" pour l'ordre des octets des machines. 88..33.. NNoommss ddee ccoonnffiigguurraattiioonn Plusieurs paquetages basé sur autoconf supporte plusieurs architectures différentes et plusieurs système d'exploitation. Dans le but de faire la différence entre toutes ces configurations, les noms sont construits comme suit -- ou même ---. Exprimant cette manière, les noms de configurations de Linux/MIPS sont mips-inconnu-linux-gnu pour des cibles big endian pour mipsel-inconnu-linux-gnu pour des cibles little endian. Ces noms sont un peu long et peuvent être raccourcie en mips- linux ou misel-linux. Vous devez utiliser les même noms de configurations pour tous les paquetages qui comprend votre environnement de compilation croisé. Ainsi, bien que des noms comme mips-sni-linux ou misel-sni-linux sont de noms de configurations légales, utilisez plutôt mips-linux ou mipsel-linux; Ce sont des noms de configurations connu pour les autres paquetages comme les sources du noyau Linux et autrement ils devraient être changés pour la compilation croisé. Je référerais à ces noms de configurations cibles après avec . 88..44.. IInnssttaallllaattiioonn ddee GGNNUU BBiinnuuttiillss.. Ceci est la première et la plus simple des parties - au moins aussi longtemps que vous essaierez d'installer le parfum d'UNIX après un mi- chemin plutôt sain. Entrez juste dans le dossier avec assez d'espace libre et suit les commandes suivantes : gzip -cd binutils-.tar.gz | tar xf - cd binutils- patch -p1 < ../binutils--mips.patch ./configure --prefix= --target= make CFLAGS=-O2 make install Ceci fonctionne habituellement très bien. Sur certaines machines l'utilisation de GCC 2.7.X comme compilateur est réputé pour déposer des core/ C'est un bug connu de GCC et peut être réparé en passant à la version 2.8.1 ou à egcs. 88..55.. AAsssseerrtt..hh Des personnes possèdent un vieux en-tête de fichiers assert.h installé, probablement un reste de l'installation d'un vieux compilateur croisé. Ce fichier devrait causer aux scripts autoconf de planter silencieusement; il n'était jamais nécessaire et était uniquement installé à cause d'un bug dans un version très vieille de GCC. Vérifiez si le fichier //include/assert.h existe dans votre installation. S'il en est ainsi, effacez le simplement : il n'aurait jamais du être installé. 88..66.. PPrreemmiièèrree iinnssttaallllaattiioonn dd''eeggccss Maintenant la partie la moins rigolote commence : c'est le soi-disant problème de bootstrap. Dans note cas, cela veut dire que le processus d'installation d'egcs a besoin d'une glibc déjà installé, mais nous ne pouvons pas compiler glibc parce que nous n'avons pas encore de compilateurs croisés qui fonctionnent. Par chance, vous sauterez cette étape si c'est la première fois que vous installez un compilateur croisé. Plus tard, lorsque vous aurez déjà la glibc installée, les choses seront beaucoup plus calme. Donc maintenant, faites : gzip -cd egcs-.tar.gz | tar xf - cd egcs- for i in egcs-1.0.2-libio.patch egcs-1.0.2-hjl.patch \ egcs-1.0.2-rth1.patch egcs-1.0.2-rth2.patch egcs-1.0.2-rth3.patch \ egcs-1.0.2-rth4.patch egcs-1.0.2-hjl2.patch egcs-1.0.2-jim.patch \ egcs-1.0.2-haifa.patch egcs-1.0.1-objcbackend.patch \ egcs-1.0.2-mips.patch; do patch -p1 -d < ../$i; done ./configure --prefix= --with-newlib --target= cd gcc make LANGUAGES="c" Notez que nous avons délibérément pas construit gcov, protoize, unprotoize et les librairies. Gcov n'a aucun sens dans l'environnement d'un compilateur croisé et protoize et unprotoize pourrait même effacer vos programmes natifs - c'est un bug dans les makefiles de gcc. Finalement, nous ne pouvons pas construire la librairies car nous n'avons pas encore installer glibc. Si tout a réussit, lancez l'installation avec : make LANGUAGES="c" install 88..77.. ffllooaatt..hh Un autre problème de bootstrap est que la construction de GCC a besoin de lancer des programmes sur la machines où GCC générera le code, mais lorsqu'un compilateur croisé fonctionne sur un type de machine différente, cela ne peut pas marcher. Lors de la construction de GCC, cela se passe pour le fichier d'en-tête float.h. Par chance, il y a une solution simple : télécharger le fichier d'en-tête d'un des serveurs ftp de Linux/MIPS ou prend le d'une des paquetages de binaires de Linux/MIPS natif. Plus tard, lors de la recompilation ou habituellement lors de la mise à jour d'egcs, le fichier float.h déjà installé sera déjà là puisque float.h change rarement. Installez le avec : cp float.h //include/float.h où est le numéro de version interne de la version d'egcs que vous utilisez. Pour egcs 1.0.2, par exemple, vous utiliserez egcs-2.90.27 pour . Si ce n'est pas sur - ls est votre copain. 88..88.. IInnssttaalllleerr lleess ssoouurrcceess dduu nnooyyaauu L'installation des sources du noyau est simple. Placez les juste dans les dossiers de votre choix et configurez les comme des fichiers qui seraient générés par la procédure qui les installerait. C'est du même type que d'habitude lors des configurations des sources du noyau pour une compilation native. Le seul problème est que vous devrez rencontrer dedans est que vous devrez avoir besoin d'installer des programmes GNU requie comme bash ou écrire par dessus la version des programmes fournis par le constructeur en plaçant la version GNU plutôt dans la variable PATH. Lors de la configuration, vous devrez répondre à la question "Utilisez vous un compilateur croisé ?" ("Are you using a crosscompiler?"), c'est l'option CONFIG_CROSSCOMPILER à "yes". Lorsque vous avez finis avec la configuration, tapez "make clean"; "make depend"; "make". La dernière commande make générera le fichier d'en-tête dont la compilation des programmes dépend. Ce fichier est généré dès le début de la commande make, donc si vous n'êtes pas intéressé actuellement dans la construction d'un noyau, vous devrez interrompre la compilation après que ce fichier ait été construit. Ça pourrait être une bonne idée, cependant, compilez quand même le noyau comme un test pour votre compilateur croisé nouvellement construit. Si vous désirez uniquement le compilateur croisé pour la construction du noyau, c'est fait. La librairie libc du compilateur croisé est uniquement requis pour être capable de compiler les applications utilisateur. 88..99.. IInnssttaalllleerr llaa GGNNUU lliibbcc Faire : gzip -cd glibc-2.0.6.tar.gz | tar xf - cd glibc-2.0.6 gzip -cd glibc-crypt-2.0.6.tar.gz | tar xf - gzip -cd glibc-localedata-2.0.6.tar.gz | tar xf - gzip -cd glibc-linuxthreads-2.0.6.tar.gz | tar xf - patch -p1 <../glibc-2.0.6-mips.patch mkdir build cd build CC=-gcc BUILD_CC=gcc AR=-ar RANLIB= \ --enable-add-ons=crypt,linuxthreads,localedata --enable-profile make Vous avez maintenant une GNU libc compilée qui doit encore être installé. Ne tapez pas juste make install Cela écrirait par dessus vos fichiers systèmes à chaud avec des fichiers spécifiques Linux/MIPS ce qui aurait des effets désastreux. Au lieu de cela, installez GNU libc dans d'autre dossiers arbitraires à partir du quel nous déplacerons les parties que nous avons besoin pour la compilation croisé dans le dossier cible actuel : make install_root= install Maintenant cd dans et finallement installez la GNU libc manuellement : cd usr/include find . -print | cpio -pumd //include cd ../../lib find . -print | cpio -pumd //lib cd ../usr/lib find . -print | cpio -pumd //lib La GNU Libc contiens aussi une vaste documentation online. Votre système devrait déjà avoir une version de cette documentation installé, donc si vous ne voulez pas installer les pages d'infos, qui vous sauveront un peu plus d'un megaoctet, ou si vous l'avez déjà installé, sautez à la prochaine étape : cd ../info gzip -9 *.info* find . -name \*.info\* -print | cpio -pumd >prefix.tar.gz | tar xf - cd egcs- for i in egcs-1.0.2-libio.patch egcs-1.0.2-hjl.patch \ egcs-1.0.2-rth1.patch egcs-1.0.2-rth2.patch egcs-1.0.2-rth3.patch \ egcs-1.0.2-rth4.patch egcs-1.0.2-hjl2.patch egcs-1.0.2-jim.patch \ egcs-1.0.2-haifa.patch egcs-1.0.1-objcbackend.patch \ egcs-1.0.2-mips.patch; do patch -p1 <../$i; done ./configure --prefix=>prefix< --target= make LANGUAGES="c c++ objective-c f77" Comme vous pouvez le voir, la procédure est la meme que la première fois à l'exception que nous avons enlevez l'option --with-newlib. Cette option était nécessaire pour éviter l'arret de la construction de libgcc à cause de l'absence de libc. Maintenant installez avec : make LANGUAGES="c c++ objective-c f77" install Vous avez presque finis. Tout ce que vous devez faire maintenant est de réinstaller float.h qui a été éffacé par la dernière commande make install. Vous devrez faire cela chaque fois que vous réinstallerez egcs comme compilateur croisé. Si vous pensez ne pas avoir besoin des compilateur d'Objective C ou de F77, vous pouvez les ommetre à partir des commandes ci-dessus; chacune d'elles vous feront gagner environ 3 Mb. Ne construisez pas gcov, protoize ou unprotoize. 88..1111.. DDeevvrraaiiss--jjee ccoonnssttrruuiirree lleess ccoommppiillaatteeuurrss CC++++,, OObbjjeeccttiivvee CC oouu FF7777 ?? The answer to this question largely depends on your use of your crosscompiler environment. If you only intend to rebuild the Linux kernel then you have no need for the full blown setup and can safely omit the Objective C and F77 compilers. You must, however, build the C++ compiler, because building the libraries included with the egcs distribution requires C++. 88..1122.. GGDDBB La construction de GDB comme débugeur croisé est uniquement intéressant pour les développeurs du noyau; pour eux, GDB devrait leur simplifier la vie. Une telle initialisation de débogage alégé est consistitué toujours de deux parties : le débugeur alégé GDB fonctionne sur une machine et la machine cible fonctionne sous le noyau Linux/MIPS qui est débugué. Les machines sont typiquement interconnecté avec une ligne série. Le noyau de la machine cible a besoin d'etre équipé avec une "souche de débugeur" qui communique avec la machine hote GDB utilsant le protocole série alégé. Dépendant de l'architecture cible, vous devriez implémenter la souche de débogeur vous meme. En général, vous devrez seuelemnt écrire des routines très simple pour la série. La tache est plutot simplifiée par le fait que la plupart des machines utilisent un matériel série similaire typiquement basé sur le 8250, 16450 ou des dérivés. 99.. LLiittttéérraattuurree 99..11.. VVooiirr uunn MMIIPPSS ffoonnccttiioonnnneerr ((SSeeee MMIIPPSS RRuunn)) Auteur : Dominic Sweetman, publié par Morgan Kaufmann, ISBN 1-55860-410-3. Il a pour but d'etre un guide plutot compréhensif pour la programmation MIPS, là où il différe de la programmation des autes CPU 32 bits. C'est la première fois que quelqu'un essaye d'écrireune explication lisible et compréhensive et considère l'immense gamme de CPU MIPS possible, et devrait etre très utile pour quelqu'un programmant son MIPS qui n'est isolé par quelqu'autre système d'exploitation. Et l'auteur est un enthousiaste pro-unix-libre qui a souscrit à la liste de mails Linux/MIPS. John Hennessey, père de l'architecture MIPS, était assez bienveillant pour écrire dans la préface " ... ce livre est la meilleur combinaison de n'importe quel livre complet et lisible sur l'architecture MIPS..." Il inclus un contexte sur les CPU RISC, une description de l'architecture et de l'ensemble des instructions incluant les instructions du "co_processeur 0" utilisé pour le controle du CPU; des sections sur les caches, les exceptions, la gestion mémoire et les nombres à virgule flottante. Il y a un guide détaillé sur le langage assembleur, il étoffe sur le portage et de beaux exemples logiciels fournis par devoir. On peu l'avoir à : · (europe) · (US) et n'importe où chez les bons marchands de journaux. Il a 512 pages et coute environ 50$ aux USA et 39.95£ en Angleterre. J'ai voulu lister deux autres livres aussi, tous les deux de Morgan Kaufmann et peuvent etre commandé à l'adresse www.mkp.com ou dans de bons marchands de journaux : 99..22.. LLee gguuiiddee dduu ddéévveellooppppeeuurrss MMIIPPSS ((TThhee MMIIPPSS PPrrooggrraammmmeerr''ss HHaannddbbooookk)) Auteurs : Farquhar et Bunce, publié par Morgan Kaufmann, ISBN 1-55860-297-6. Une introduction lisible pour la pratique de la programmation bas niveau d'un MIPS, par l'auteur de PMON. Sa force : beaucoup d'exemples; sa faiblesse : ne parle pas d'importants parties de l'architecture (tel que la gestion de la mémoire, des nombres à virgules flottantes et les caches avancés) parce qu'il n'y a pas de caractèristiques dans les produits "fixé" LSI, ce livre a l'intention d'etre un partenaire. 99..33.. AArrcchhiitteeccttuurree ddeess oorrddiinnaatteeuurrss -- UUnnee aapppprroocchhee qquuaannttiittaattiivvee ((CCoomm­­ ppuutteerr AArrcchhiitteeccttuurree -- AA QQuuaannttiittaattiivvee AApppprrooaacchh)) Auteurs : Hennessy & Patterson, publié chez Morgan Kaufmann, ISBN 1-58860-329-8. La bible de l'architecture de l'ordinateur moderne et qui doit etre lue si vous voulez comprendre ce que font les programmes qui fonctionnent vite ou lentement. Est-ce qu'il parle des MIPS ? Et bien, c'est presque entièrement à propos de quelque chose proche de MIPS... Son unique défaut est sa taille et son poids - mais à la différence de gros bouquin, c'est pire à chaque page. 1100.. LLeess nnoouuvveelllleess ddee LLiinnuuxx//MMIIPPSS Un partie de ce chapitre est vraiment historique... · 04-Décembre-98 Ariel Faigon annonce que SGI a joins Linux International. · 13-Octobre-98 Ralf Bächle fixe le support pour les CPU R4000SC / R4400SC. · 12-Octobre-98 Vladimir Roganov rapporte que son système R3000 est maintenant assez stable pour compiler GDB. · 03-Octobre-98 Harald Körfgen rapporte que sa DECstation 5000/133 fonctionne maintenant en mode single user. Félicitation! · 29-Septembre-98 Ralf starts réécrit sa FAQ pour se rapprocher de la réalité. · 10-Juin-98 ftp.linux.sgi.com offre maintenant un accès CVS anonyme. · 01-Fevrier-98 Le premier produit commercial basé sur Linux/MIPS est annoncé. · 26-Janvier-98 Du temps gaspillé de plus dans cette liste parce que le mainteneur est fainéant^H^H^H^H ocupé à programmer. Le driver pour le NCR53c8xx a été modifié et a été testé avec succès avec plusieurs machines, dont la plus connue est le SNI RM200. Même mieux, la version initial semble être sur. Déjà, il y a quelques temps, Thomas Bogendörfer a implémenté les changements nécessaire pour le NCR53C9x driver aka ESP driver, donc il y a maintenant un support SCSI pour les adaptateurs intégrés dans le MIPS Magnum 4000, l'Olivetti M700-10 et l'Acer PICA. · 28-Novembre-97 Première sorti public des binaires client X11. · 30-Aout-97 Ouh, encore une fois du temps est gaspillés dans cette page. Beaucoup de chose s'est passé dans cette intervalle et le mainteneur de ces pages est une personne fainéante qui préfère plutôt coder et programmer son système qu'écrire des docs... SGI posséde maintenant son propre serveur Linux/MIPS atteignable à l'adresse www.linux.sgi.com, avec beaucoup d'information spécifique à SGI et pas mal de liens. Le serveur est encore atteignable à l'adresse ftp.linux.sgi.com. En plus des binaires, sources et docs spécifique aux machines de Silicon Graphics, ce serveur a, en plus, tous les autres matières de Linux/MIPS en stock. Possible uniquement sur ce serveur est l'archive CVS des développeurs pour téléchargement. Désolé, pas encore de CVS anonymes. Silicon Graphics a supporté la plus part du travail sur Linux/MIPS des développeurs clés de Linux avec le matériel. Il en résulte que le travail a maintenant avancé plus rapidement et Ralf n'est plus le cheval de trait solitaire... Déjà, il est possible pour pas mal de temps que le portage de l'Indy soit maintenant dans l'arbre des sources du noyau standard. Mission longue, mais finallement atteinte : Thomas Bogendoerfer a contribué aux patches pour le driver du NCR53C9x pour le Mips Magnum 4000, l'Olivetti M700 et l'Acer PICA. La plus part des packages du portage de la Red Hat du MIPS sont maintenant possible par téléchargement ftp. L'installation est encore une chose d'experts... mais nous travaillons dessus! Les amoureux d'Eeecmacs seront heureux d'entendre que sa FAQ a été édité par Emacs fonctionnant sur une machine Linux/MIPS. · 6-Mai-97 David Monro sort la version 1.01 de bfsd. bfsd est un démon qui peut etre utilisé pour booter les machines construit par MIPS Computersystems, Inc. sur un réseau. · 10-Juin-96 La sortie du noyau Linux/MIPS 2.0.1. Cette sortie représente un gestionnaire de signal réécrit partiellement qui respecte la norme POSIX 1. · 3-Juin-96 Première sortie des librairies partagées pour Linux/MIPS basé sur libc instantané 960619. Sortie du noyau Linux/MIPS 2.0.1. · 25-Mai-96 David S. Miller commence à travailler sur le support de SGI à la Silicon Graphics. · 20-Mai-96 La sortie 1.3.98du noyau ajoute un support pour le SNI RM200 PCI. · 27-Mar-96 Linux/MIPS peut fonctionner comme un serveur NFS. Le driver CD IDE maintenant supportés par Linux/MIPS. · 24-Mar-96 Des références ajoutées à la littéraure possible en online de SGI sur la FAQ. · 23-Mars-96 Nouveau chapitre dans la FAQ à propos du standard ARC. · 27-Janvier-96 Sortie de Milo 0.26 et un patch du noyau pour l'utiliser. Cette sortie passe des paramètres au noyau d'une manière complétement différente qui rend le portage de Linux/MIPS vers d'autre architecture beaucoup plus facile. · 24-Janvier-96 Sortie d'un binaires d'un crosscompiler basé sur binutils de la FSF version 2.6. Cette sortie fournis beaucoup de nouvelles caractèristiques et fixe quelques bugs. · 21-Janvier-96 Warner Losh débute un portage de Linux/MIPS vers la Deskstation rPC44. · 20-Janvier-96 Le noyau Linux/MIPS mis à jour à la version 1.3.58. Le patch gcc-2.7.2-1.diffs.gz est sortie. Le patch binutils-2.6-1.diffs.gz sort. Ce patch contiens beaucoup de bugs fixés. Le Makefiles du noyau de Linux détectera automatiquement si binutils 2.6 ou une version plus vielle est installé et utilise les nouvelles caractèristiques aboutissant à un noyau éxécutable plus petit qui est spécialement utilisé pour les boots sur disques. · 15-Janvier-96 Sortie d'un système de fichier complet racine et /usr qui peut etre monté NFS pour utiliser un système Linux/MIPS comme un client sans disque. Un kit de développement native basé sur GCC 2.7.2, Binutils 2.6 et GNU libc instantané 951218 est inclus aussi bien que des utilitaires standards. · 25-Décembre-95 Linux/MIPS boot un système de fichiers NFS comme un client sans disque. Ceci veut donc dire que le reste du réseau de Linux/MIPS est maintenant opérationnelle. · 7-Janvier-95 Soft-N-Hard GMBH et SNI signent une contrat. SNI prétera un RM200 à Soft-N-Hard pour porter Linux/MIPS dessus. · 22-Septembre-95 L'archive FTP Linux/MIPS et la liste de mails ont été déplacé à fnet.fr (Il y a beaucoup plus de nouvelles, je n'ai pas le temps en ce moment pour le documenter). · 18-Juillet-95 Sortie d'outils de développement croisé nouveau. GCC-2.6.3-2 et Binutils-2.5.2-2 pour Linux/i386 a besoin de noyaux avec le support ELF et la libc-5.0.9 installé. LEs nouveaux outils de développement croisé sont utiles pour les noyaux de Linux/MIPS suppérieur à la version 1.2.9. Une version a.out des outils de développement croisé suivra bientot. · 14-Juillet-95 Nous avons un shell qui fonctionne! · 12-Juillet-95 Sortie des pachtes 2.6.3-2 pour Linux/MIPS GCC. Ce compilateur se conforme mieux avce le standard MIPS des noms de symboles. · 10-Juillet-95 Sortie du noyau Linux/MIPS 1.2.9. · 9-Juin-95 Sortie de Milo 0.24. Cette version fournis une detection de type de machine améliorée et un peu de nettoyage et quelques corrections. · 24-Mai-95 Sortie du noyau Linux/MIPS 1.2.8. Cette fonction résoud plusieurs bugs et posséde les changements spécifiques au Magnum 4000 à partir de l'intégration de Linux-1.2.7. Sortie de Milo 0.23. Cette version fournis un support intégré pour les machines Olivetti M700. Milo est maintenant séparé en deux binaires : un simple chargeur de boot et un moniteur/débugeur isolé avce possibilité de booter. · 23-Mai-95 Le noyau Linux/MIPS 1.2.7 sur Olivetti M700 monte le système de fichier racine. · 22-Mai-95 Le noyau Linux/MIPS 1.2.7 sur le Mips Magnum 4000 monte le système de fichier racine. Ajout de la NEC RiscStation et du RiscServer à la liste des cibles. Milo 0.22 a été testé avec succès sur la NEC RiscStation et le RiscServer. · 18-Mai-95 Sortie du noyau Linux/MIPS 1.2.7. Cette sortie fournis le support initial du Magnum 4000 et une tonne de bugs sont résolues. · 12-Mai-95 Sortie de Milo 0.22. Cette version a été nettoyé et plusieurs bugs ont été fixé. · 5-Mai-95 L'archive Linux/MIPS est maintenant possible sur ftp.mcc.ac.uk/pub/linux/MIPS. · 3-Mai-95 Sortie de Milo 0.21. Cette version fournis plus de commandes du moniteur/débugeur intégré et résoud d'importants problèmes. · 30-Avril-95Sortie de Milo 0.20. Cette version fournis un moniteur/débugeur intégré et beaucoup de fonctions de nouvelles librairies.. Début du portage de l'Olivetti M700. · 26-Avril-95 Sortie du noyau Linux/MIPS 1.2.6. · 13-Avril-95 Milo 0.19 sort. Cette version inclus des correction mineur plus le support initial pour les noyaux au format ELF. · 13-Avril-95 Milo 0.18b sort; Cette version inclsu le support pour les Mips Magnum 4000. Le portage vers les Mips Magnum 4000 démarre. · 27-Mars-95 Sortie du noyau Linux/MIPS 1.2.2. Le noyau monte maintenant son système de fichiers racine. · 22-Mars-95 Milo 0.18sort. Cette version inclus le support pour les systèmes Deskstation rPC44. Début de portage vers la DeskStation rPC44. .