Helios est une pile IEEE 1394 ou Firewire pour MorphOS que j'ai commencé fin 2008.

Elle supporte actuellement les ponts PCI supportant l'interface OHCI1394 version 1.1 (à ne pas confondre avec l'OHCI-USB, bien qu'ils soit tous les deux des Open Host Controller Interface). L'OHCI1394 étant une couche d'interface matérielle/logicielle pour la norme IEEE-1394 permettant l'utilisation de DMA (Direct Memory Access) pour les transferts entre bus 1394 et bus PCI.

Helios est utilisable pour MorphOS 1.4.x et plus, sur toute architecture PowerPC G3 et G4.

Status du code

  • 2010-08-25: (reprise du code depuis le 10 juin 2010)
    • Nouveau design du code
    • helios.library: prête avec fonctionnalitées suivantes:
      • Gestion de sous-processus avec IPC sécurisée.
      • Horloge utilisateur et compte-à-rebour.
      • Gestion des unitées matérielle (ajout/retrait, accès séquentiel).
      • Poubelle pour récolter les devices morts bloqués par les applications.
      • Gestion des devices 1394 (accès séquentiel, ajout/retrait/scan).
      • Gestion ROM basique (lecture depuis device).
      • Gestion par méthodes Get/Set des structures internes.
      • Pas de gestion de bus pour l'instant (IRM et BM).
      • Gestion des classes terminée.
    • ohci1394_pci.device:
      • Fonctionnel.
      • Envois et réception packet asynchrones (PHY inclus) ok.
      • Packet stream et API isochrone non-supportés.
    • Classes:
      • SBP2 (mass-storage): en cours d'écriture
        • Login/Logout et lecture ROM ok.
        • Gestion des commandes SCSI en cours d'écriture/stabilisation.
        • Pour info, un test basique de lecture à réussi à 20Mo/s (HD→RAM, code et bus non optimisé).
    • Applications et exemples:
      • Le démarreur automatique d'Helios est prêt (pour l'exécuter au boot de MorphOS).
      • FwInspect est en cours de ré-écriture pour le design courant.

Historique

2008

  • Septembre : je reçois mon camescope Canon HV30, un cam HDV avec une connection Firewire.
  • Novembre : n'ayant trouvé logiciels de montage acceptables sous les OS dits grand public, je me met en tête de le créer (oui pour info, ça m'arrive très souvent… d'ailleurs c'est pour cela que je programme! ;-)).
  • Fin Novembre : il faut savoir que le site web MorphZone avait lancé un bounty pour la création de cette pile FW sous MorphOS. Mais il n'a pu aboutir, le lien 1394 ayant été jugé obsolète. Après contact avec le responsable de l'époque pour faire ce bilan, j'ai donc commencé mes propres recherches.
  • Début Décembre : en reprenant des principes de la pile Linux, version dite JuJu, j'ai enfin un premier jet simple mais fonctionnel1). Un outil appelé FWInspect est créée en même temps pour pouvoir montrer les nœuds 1394 et leurs caractéristiques, cette interface graphique utilise MUI.

2009

  • Janvier : je décide de ne plus suivre le code Linux et je reprend tout depuis le début… Helios n'est plus un port ni un travail dérivé, elle devient la première pile Firewire dédiée pour MorphOS. Le code est stabilisé par la même occasion.
  • Mi-Janvier : quelques essais pour l'AV/C (qui serons mis au placard ensuite car la pile devant être refaite).
  • Fin Janvier : première version officielle est sur Aminet, la 0.1.162.
  • Février : refonte totale des gestions des DMA et de l'API développeur. Début de l'écriture d'autres modules comme celui pour Python. Sortie de la version 0.2.208 (elle ne sera jamais sur Aminet).
  • Mars : quelques tests de vitesse en asynchrone avec le module Python, me donne satisfaction: débit en lecture depuis la mémoire d'un Peg1 vers le Peg2 de l'ordre des 20 Méga-octets / seconde.
  • Fin Mars : beaucoup de fixes, beaucoup de modifications, début de l'implémentation du mode isochrone et sortie de la 0.3.323 sur Aminet. De plus un nouveau module permettant la réception des flux DV et MPEG2TS est conçue, utilisant le protocole IEC-61883: FWCamController. Mes premières vidéos sont enfin récupérées et lisibles sous MorphOS.
  • Avril : une personne de la MorphOS-Team utilise Helios pour permettre l'utilisation des devices supportant le protocole SBP2. Cette utilisation publique montrera des difficultés d'utilisation de mon API. Je recommence à ré-écrire cette dernière de façon plus simple et dirigée vers un paradigme plus orienté objets.
  • Juillet : Recodage complet ⇒ l'architecture de Poseidon est la bonne: séparer la couche HW de la couche logique.

2010

  • Juin : Reprise du code, l'architecture deviens semblable à celle de Poséidon (la pile USB de MorphOS).

Installation

Quelques notions sur le bus 1394

Bus Ensemble de nœuds 1394 connectés entre eux.
Génération C'est la configuration et la topologie du bus 1394 entre 2 remise-à-zéro de ce dernier. Chacune incrémentant de 1 le numéro de génération, ce dernier allant de 0 à 255 (et bouclant indéfiniment ainsi).
Nœud Un périphérique connecté sur un bus 1394.
NodeID Identifiant unique seulement pendant une génération donnée, il contient le numéro du bus + l'identifiant physique du nœud sur le bus.
IRM NodeID spécifique. C'est le nœud gère les ressources isochrones sur le bus.
Local NodeID spécifique. Identifiant de votre machine.
Root NodeID spécifique. A la remise-à-zéro, le bus s'auto-configure et crée un arbre de connections entre les nœuds. Chaque nœud en reçoit une copie et le nœud racine, où tous les nœuds sont raccordés, est dit Root.

Section Développeurs

Cette partie étant particulièrement importante, une page lui est dédiée.

1) Lecture/écriture asynchrone en mode quadlet/block seulement supportés

dev/helios/start.txt · Dernière modification: 2010/08/25 16:40 par Yomgui