Forum général.cherche-logiciel modifier les registres

Posté par .
Tags : aucun
0
31
mai
2006
bonjour,
je dispose d'une carte (MPC8560) basé sur le processeur powerquicc3, je dois l'utiliser pour faire un routage des flux rtp,rtcp. j'ai embarqué un noyau linux dans la carte mais le but est d'utiliser la puissance du processeur pour faire le routage, je demande une solution étant donné que le pross est optimisé réseaux.

merci.
  • # Pour commencer

    Posté par . Évalué à 1.

    un conseil, soit un peut plus precis dans tes demandes, apparament tes post dans les forums sont rarement suivi de réponse a cause de cela.
    La seul chose que je peut repondre c'est que les registres de ton proc sont decris a l'adresse suivante:
    http://www.freescale.com/files/32bit/doc/data_sheet/MPC8560E(...)
    maintenant tu veut de l'aide pour quoi plus precisement ?
    • [^] # Re: Pour commencer

      Posté par . Évalué à -1.

      plus précis ?
      c'est sur que tout le monde a un powerquicc3 chez soi, raison pour laquelle sa demande est trop vague pour nous tous...


      enfin, perso je connais pas, et si je répond pas, c'est justement pour ca, pas parce que sa question serait trop peu précise :)
      • [^] # Re: Pour commencer

        Posté par . Évalué à 1.

        a la base c'est un coeur PPC avec des perif autour.
        http://www.freescale.com/webapp/sps/site/prod_summary.jsp?co(...)
        maintenant je ne connais pas non plus la bete dans les details, mais si la question etait comment ecrire a l'adresse physique XXXX pour activer tel ou tel perif la je pourrais répondre.
        • [^] # Re: Pour commencer

          Posté par . Évalué à 1.

          je veux bien lire ou ecrire une adresse physique.
          • [^] # Re: Pour commencer

            Posté par . Évalué à 2.

            quel est ta version de kernel ? 2.4 ou 2.6
            • [^] # Re: Pour commencer

              Posté par . Évalué à 1.

              2.4
              • [^] # Re: Pour commencer

                Posté par . Évalué à 2.

                c'est dans ce cas tres simple, dans un module (rapelle : pour acceder a une adresse physique precise sous linux il faut obligatoirement etre dans l'espace kernel) il te suffit d'utiliser
                request_region puis inb,inw,inl ou outb,outw,outl
                tous les details sont ici
                http://lwn.net/images/pdf/LDD3/ch09.pdf
                • [^] # Re: Pour commencer

                  Posté par . Évalué à 1.

                  bonjour;
                  en fait quant jutilise les fonctions inw ou ouw etc mon compilateur m'affiche:

                  /opt/elinos/cdk/ppc/60x/glibc-2.3.2/bin/ppc_60x-gcc -c main.c -o main.o
                  /opt/elinos/cdk/ppc/60x/glibc-2.3.2/bin/ppc_60x-gcc -o LE lect.o main.o
                  lect.o(.text+0x38): In function `manip':
                  : référence indéfinie vers « inw »
                  lect.o(.text+0x58): In function `manip':
                  : référence indéfinie vers « inw »
                  main.o(.text+0x14): In function `main':
                  : référence indéfinie vers « lect »
                  collect2: ld a retourné 1 code d'état d'exécution
                  make: *** [LE] Erreur 1

                  Etant donné que ces fonctions d'ecriture/lecture sont definies dans l'API du système je ne vois pas d'ou vient le problème.
                  /opt/elinos/cdk/ppc/60x/glibc-2.3.2/bin/ppc_60x-gcc :est le path pour gnerer de l'executable pour ppc.
                  • [^] # Re: Pour commencer

                    Posté par . Évalué à 2.

                    Ces fonctions sont définies au niveau du noyau seulement. Là, tu essaies de générer un exécutable classique destiné à tourner en userland. Il faut que tu suives la procédure pour construire un module noyau, que tu chargeras ensuite avec insmod sur ta plateforme de développement.
                    • [^] # Re: Pour commencer

                      Posté par . Évalué à 1.

                      excuse moi de mes questions qui peuvent être evidentes pour toi (je suis debutant et non un geek chevroné de linux), ma carte (MPC8560) reçoit le système de fichiers par nfs donc après avoir fait mes modules noyaux (chargeable dynamiquement)avec le makefile associé faut il copier directement ces fichiers dan tftpboot(endroit ou la carte reçoit ses fichiers)?
                      je veux dire comment les rendre exécutable car mes modules doivent m'affichier des choses .
                      • [^] # Re: Pour commencer

                        Posté par . Évalué à 2.

                        Effectivement il faut que tu les copies sur le filesystem en question. Par contre, à quel endroit et comment les charger, ça dépend beaucoup de la distrib utilisée (faite maison?). Comme ça c'est pas évident à dire. Il faudrait que tu regardes comment cela se passe pour les modules que tu as déjà.

                        Ta carte MPC8560, c'est une carte faite en interne par ta boite ou elle est disponible ailleurs ?
                        • [^] # Re: Pour commencer

                          Posté par . Évalué à 1.

                          Non elle est faite par Interface Concept (InterfaceConcept.com) c'est pas un produit de notre boite c'est pourquoi je galère ainsi (personne ne connais le fonctionnement de cette bête)et en plus je ne beneficie pas du support d'IC.
                          • [^] # Re: Pour commencer

                            Posté par . Évalué à 2.

                            C'est le modèle IC-PQ3-PMCa ? D'après ce que je vois, il y a 2 interfaces GigabitEthernet, en plus de la FastEthernet gérée par le MPC8560. Par rapport à ton problème d'origine, à savoir router entre les 2 interfaces Giga, tu as les infos sur le(s) contrôleur(s) Gigabit ?

                            Il faut voir pour ce contrôleur ce dont tu disposes comme accélération hardware. En général, tu as le checksumming IP et TCP/UDP en hardware. Après, pour router potablement entre les 2 cartes, je te conseille d'utiliser les mécanismes scatter/gather, ça évite de recopier les données quand tu traites les paquets (en gros tu t'arranges pour ne modifier que les entêtes). Il faut voir en détail si le noyau Linux gère ça correctement, et le driver Ethernet aussi.

                            Après, je pense pas que le CPU soit super optimisé réseau dans le sens "traitement des paquets". Il est axé réseau parce qu'il embarque pas mal d'interfaces genre Ethernet, ATM, etc, mais c'est tout. Ce qui pourrait t'être utile dans ton cas serait les fonctions DMA, à part ça je vois pas (cela dit, je suis pas un expert en hardware).
                            • [^] # Re: Pour commencer

                              Posté par . Évalué à 1.

                              C'est bien le IC-PQ3-PMCa. Evidemment dans ma tête le gros traivail est est le changement d'entete des paquets et la construction des règles de routage. je cherche en faite à trouver dans la doc la fonction qui se charge de ce changement d'entete, je vois que les port gigabit intègrent des controleurs DMA et de tables hash mais je ne sais pas cela resout le pb de rapidité ?
                              • [^] # Re: Pour commencer

                                Posté par . Évalué à 2.

                                Tu aurais un pointeur vers le manuel de référence du contrôleur Gigabit ? ou au moins l'identifiant du chip ?
                                • [^] # Re: Pour commencer

                                  Posté par . Évalué à 1.

                                  bonjour,
                                  finalement j'ai reussi à inserer mes modules dans le noyau automatiquement, mais ça veut dire quoi exatement checksumming IP et TCP/UDP en hardware aue tu m'a parlé ?
                                  Selon toi il serait plus judicieux de faire mon routage entre les deux eth giga en module noyau.
                                  • [^] # Re: Pour commencer

                                    Posté par . Évalué à 2.

                                    Ca veut dire qu'au lieu que ce soit l'OS (et donc le CPU) qui se tape le boulot de calculer les checksums, c'est la carte réseau qui le fait automatiquement. Donne moi la référence de ton controleur GigaEthernet, je pourrais te dire ce que ça supporte exactement.

                                    Actuellement tu routes comment avec tes 2 cartes ? Tu as des pbs de performance ?
                                    • [^] # Re: Pour commencer

                                      Posté par . Évalué à 1.

                                      Bonjour,
                                      vendredi je n'ai pas continué la discution car je devais prendre un train.
                                      En fait pour l'instant j'ai mes algo sur papier mais je route ainsi: une règle represente une structure de données, je construit une table de Hash et je fait en sorte eth0 intercepte tout ce qui arrive , change l'entete (@Ip,Port) et route le paquet vers eth1. mais j'ai decouvert que les controleurs possèdent des tables hash et je ne sais pas si cela peut m'aider vue que ces tables de 48 bits sont intégrés. à l'arrivé d'un paquet je calcule la clé avec @desti etport udp et je cherche la règle à appliquer.
                                      mes controleurs sont referencés TSEC1 et TSEC2 (Tree -Speed Ethernet Controller) 3UCII/D9BHT


                                      //structre pour un context donné
                                      typedef struct {
                                      /*Mandatory parameters
                                      unsigned int callID;
                                      unsigned int mediaSessionID;*/
                                      unsigned int addressIn;
                                      unsigned short rtpPortIn;
                                      unsigned short rtcpPortIn;
                                      unsigned int addressOut;
                                      unsigned short rtpPortOut;
                                      unsigned short rtcpPortOut;
                                      /*unsigned char mediaType; // AUDIO or VIDEO
                                      unsigned char direction; // CALLING or CALLED
                                      Parameters that could be unknown
                                      unsigned int sourceAddress;
                                      unsigned short sourceRtpPort;
                                      unsigned short sourceRtcpPort;*/
                                      unsigned int destAddress;
                                      unsigned short destRtpPort;
                                      unsigned short destRtcpPort;
                                      } stMSContext;

                                      //structure decrivant les parametres pour modidier un contexte
                                      typedef struct {
                                      unsigned int contextID;
                                      unsigned int destAddress;
                                      unsigned short destRtpPort;
                                      unsigned short destRtcpPort;
                                      } stContextUpdate;
                                    • [^] # Re: Pour commencer

                                      Posté par . Évalué à 1.

                                      les referencees de controleurs carte réseaux gigabits sont 82542 et 82543
                                      • [^] # Re: Pour commencer

                                        Posté par . Évalué à 1.

                                        Bonjour,
                                        le controleur gianfar de motorolla ,je ne sais toujours pas ce que exactement le driver de mes eth giga. C'est des carte réseaux gianfar et je detiens le code du driver mais impossible de savoir ce que fait exactement ces controleurs giga. je demande de l'aide si quelqu'un a déja travaillé sur ce driver.
                                        merci.
                                    • [^] # Re: Pour commencer

                                      Posté par . Évalué à 1.

                                      je ne sais toujours pas exactement ce que fait mon driver le code est très long et fait beaucoup d'appels des fonctions noyau(que je ne maitrise pas). tu m'avais dit que tu connaitrai la reponse si tu as la reference du controleur.il s'agit des Gianfar Ethernet Controller.
    • [^] # Re: Pour commencer

      Posté par . Évalué à 1.

      voila mes explications:je dois embarquer la fonction de mediaProxy: aiguillage des paquets qui arrivent par un des ports gigabits et qui sortent par le deuxième port gigabit, de la carte cette aiguillage se fait en fonction de @ipdestination ,dans mon algo je veux stocker mes règles de routage dans une table Hash dont la clé est calculée avec @ipdestination et le port udp dans la carte MPC8560. je sais que ce routage peut être fait par des modules noyau,mais moi je veux beneficier de la puissance du MPC8560 à faire ce routage qui d'après la doc est un pross réseaux. précisement ma question est quelles sont les fonctions réseaux de MPC8560 par rapport à un pross normal.
      si je ne suis pas claire je peux encore preciser.
      • [^] # En 3 points

        Posté par . Évalué à 1.

        1) sur un linux pour acceder a une adresse physique (adresse ou sont positionner les registres du micro) il te faut obligatoirement un module noyeau.
        2) AMHA ce processeur doit disposer d'une fonction hardware de copie d'un packet recu sur un canal eth vers un autre eth (DMA direct) pour activer une tel fonction il te faut lire la doc du proc.
        3) le noyeau est le meuilleur endroit pour faire le traitement que tu veut faire, force le passage en user-space risque de te faire perdre ton le bonus apporter par les fonctions specifique du processeurs. Pourquoi ne pas scinder en deux ce que tu veut faire? un modules noyeau qui fait le routage et une partie user-space qui envoie la configuration de route au module noyeau.
    • [^] # Re: Pour commencer

      Posté par . Évalué à 2.

      La documentation la plus appropriée chez Freescale est à mon avis celle-ci (manuel de référence):

      http://www.freescale.com/files/32bit/doc/ref_manual/MPC8560R(...)

      Près de 2000 pages de doc, à mon avis, c'est très complet.
      • [^] # Re: Pour commencer

        Posté par . Évalué à 1.

        bonjour,
        j'ai besoin d'aide, je n'arrive toujours pas à determinier les fonctions accelerateur hardware de mes controleurs giabit de la carte MPCa8560.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.