IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 16-bits Assembleur Discussion :

Interruption carte réseau II (DRIVER)


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre chevronné
    Avatar de cpcdos
    Homme Profil pro
    Ingé/concepteur chez Capgemini. Alstom APTIS. Concepteur de Felly autonomous vehicle software.
    Inscrit en
    Mai 2010
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingé/concepteur chez Capgemini. Alstom APTIS. Concepteur de Felly autonomous vehicle software.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 588
    Points : 1 770
    Points
    1 770
    Billets dans le blog
    1
    Par défaut Interruption carte réseau II (DRIVER)
    Bonjour
    après ce sujet précédent

    J'ai trouvé où sont les adresse des cartes réseaux, elles sont écrits sur le fichier driver de la carte réseau

    Par exemple, une au hazard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IOADRESS = 0xD020
    INTERRUPT = 10
    DMA = 0
    Question 1 : Pouvez vous me dire qu'es ce que c'est ?

    Question 2 : Il y a t-il un moyen de communiquer avec "ça" en asm ? Faire parler la carte ?

    Merci ^^


    PS:J'essaie de me référencer sur les adresses des drivers linux
    https://www.kernel.org/diff/diffview...-rc1.xz;z=4506
    Je vois ceci
    A quoi correspond ? je peux jouer sur quelque chose en assembleur ? comment ? Faire parler la carte ?


    Quand je dis faire parler la carte c'est du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mov ah, 0x10B7
    mov dx, blablablabla.. ?
    int 0x5900
    .. ?
    Merci
    Sébastien FAVIER
    Felly-software Autonomous vehicle software for everyone.
    co-kernel Cpcdos OSx un noyau 32bits simplifié et complet.. ou presque - Le fofo officiel c'est par ici.
    Les cours sur les systèmes c'est par là

  2. #2
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Bonjour,

    Il faut beaucoup plus d'informations pour espérer pouvoir échanger quelques données avec ta carte

    à titre d'exemple, pour un simple port série qui ne sert qu'à envoyer et recevoir des octets, il y a 8 registres
    qu'il faut programmer correctement sans quoi toute transmission est impossible

    L'utilisation de DMA implique aussi de mettre en place un programme qui gère cela.
    il y a 20 ans, j'avais laissé tombé la programmation de la DMA sur Sound-Blaster car trop compliqué pour moi

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par cpcdos Voir le message
    Par exemple, une au hazard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IOADRESS = 0xD020
    INTERRUPT = 10
    DMA = 0
    Question 1 : Pouvez vous me dire qu'es ce que c'est ?
    0xD020 est l'adresse, codée en dur dans son électronique, dur périphérique en question.
    INTERRUPT et DMA sont les numéros des canaux IRQ et DMA occupés par ce même périphérique. Ceux-là sont modifiables par l'utilisateur, en principe.

    Les fameux slots ISA (noirs) que tu voyais dans les PC d'avant 1995 correspondent à cette technologie. Le bus qu'ils servent est connecté directement au micro-processeur et tous les ordinateurs de l'époque, 8 bits ou 16 bits, depuis les années 1970 (et probablement avant) fonctionnaient de la même façon. Chaque périphérique avait sa propre place dans le plan mémoire, qu'il soit interne ou externe. Il était assez facile de bricoler son propre périphérique mais si tu voulais le commercialiser, il fallait réserver une plage auprès du constructeur de la machine.

    C'était pénible également parce que cela empêchait d'installer deux périphériques identiques dans un même ordinateur mais, dans ce cas, soit le périphérique concerné proposait une architecture maître-esclave (formellement : les lecteurs de disquettes), soit il était équipé de cavaliers à déplacer sur la carte qui permettait d'utiliser 1 à 3 trois adresses alternatives.

    Depuis le bus PCI, et avec l'allongement des plages nécessaires aux entrées sorties, les périphériques se déclarent auprès du bus et le système peut les mapper où bon lui semble. C'est pratique mais ça implique une technologie assez complexe à mettre en œuvre sur le plan électronique (pour l'époque en tout cas).

    Question 2 : Il y a t-il un moyen de communiquer avec "ça" en asm ? Faire parler la carte ?
    Oui, avec inb et outb. En réalité, les Intel rebalancent ça sur le bus d'adresse mais font croire qu'ils s'agit d'un bus dédié, en partie pour se faire passer pour une architecture Harvard authentique.

    A quoi correspond ? je peux jouer sur quelque chose en assembleur ? comment ? Faire parler la carte ?
    Ce sont les codes fabricant et produit qui identifient le périphérique de façon exclusive. Ils fonctionnent de la même façon que leurs homologues sur le bus USB.

    L'utilisation de DMA implique aussi de mettre en place un programme qui gère cela.
    il y a 20 ans, j'avais laissé tombé la programmation de la DMA sur Sound-Blaster car trop compliqué pour moi
    Avec un copain, on avait réussi à restituer la boîte à coucou de Johnny Halliday selon les Guignols. On était assez fiers. En réalité, ce n'était pas très difficile… en mode réel pur ! Bien souvent, il fallait batailler avec le v86 mis en place par les gestionnaires de mémoire. Quelle architecture bancale, un PC, quand on y pense…

  4. #4
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    avec simplement l'irq de la carte et les port d'E/S de la carte ça va être impossible de piloter la carte il va te falloir aussi les données technique de la carte, ces chose la ne sont pas forcémént facile a trouver mais bien souvent les carte sont basé sur une seul puce qui est fournis par une autre compagnie (realtek par exemple) qui elle a tout interet a fournir facilement les données concernant leurs produits
    j'avait réalisé un ptit pilote de vielle carte réseau isa a partir de données technique, c'est pas forcément difficile mais on peut être bloqué a cause d'une petite information ce qui est rageant, dans mon cas c'était l'adresse de base de la ram uttilisable dans la carte qui ne commençait pas a zéros
    tout ça ne concerne que la gestion des trames ethernet, pour pouvoir gérer un niveau superieur (la communication IP ICMP UDP ARP TCP par exemple) la documentation fournis par les rfc (trouvable partout sur internet) permet de s'en sortir mais la ça commence a devenir vraiment compliqué




    (j'avait commencé une amorce de début de brouillon d'article pour décrire le fonctionnement de la carte réseau ne2000 ici que je n'ai pas terminé a cause d'un gros poil dans la main)

  5. #5
    Membre chevronné
    Avatar de cpcdos
    Homme Profil pro
    Ingé/concepteur chez Capgemini. Alstom APTIS. Concepteur de Felly autonomous vehicle software.
    Inscrit en
    Mai 2010
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingé/concepteur chez Capgemini. Alstom APTIS. Concepteur de Felly autonomous vehicle software.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 588
    Points : 1 770
    Points
    1 770
    Billets dans le blog
    1
    Par défaut
    Bonjour !

    D'accord merci pour vous réponses !!

    Donc si je comprend bien, il faut que j'aille me documenter sur les fiches technique de toutes les cartes réseaux ??

    Il y a pas moyen de retrouver des informations sur les fichiers INF du pilote ?!

    Pour la carte realtek
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ;RTL8168/8111 and RTL8100E  OEMSETUP.INF File:
     
    [netcard]
    RTL8168="RTL8168/8111 Family Gigabit Ethernet Adapter",000,ndis,ethernet,real,RTL8168,RTL8168_nif
     
     
    [RTL8168]
    devdir=?:rtend.dos
    device=rtend.dos,@devdir\rtend.dos
     
    [RTL8168_nif]
    drivername=rtend$
    param=Medium,"Medium type ",text,"_Auto,_1000Full,_100Full,_100Half,_10Full,_10Half",_Auto,0x30
    param=NETADDRESS,"Network Address",chars,13,"@000000000000",0x02
    param=ETHERID,"Node Address",chars,13,"@000000000000",0x02
    param=BusNo ,"Adpater's Bus Number",int,"0,255,1",0,0x32
    param=DeviceNo ,"Adpater's Device Number",int,"0,31,1",0,0x32
    ou dans le debug de rtend.dos ?

    PS:
    Par ce que mon but est de créer une partie réseau interne DANS MON programme codé en FreeBasic, les seuls proposés, ou les librairies fonctionne qu'avec les "PacketDrivers" et au niveau de l'installation c'est plus compliqué (pour trouver le bon exécutable à utiliser et l'adresse 0x60 0x61 etc..) et ne fonctionne pas sur tous mes PC, donc j'utilise les drivers NDIS qui moi l'installation est automatisée.
    Sébastien FAVIER
    Felly-software Autonomous vehicle software for everyone.
    co-kernel Cpcdos OSx un noyau 32bits simplifié et complet.. ou presque - Le fofo officiel c'est par ici.
    Les cours sur les systèmes c'est par là

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par cpcdos Voir le message
    Donc si je comprend bien, il faut que j'aille me documenter sur les fiches technique de toutes les cartes réseaux ??
    Oui, bien qu'il y ait des familles de produits et qu'au sein d'une de celles-ci, tu puisses appliquer les mêmes grandes lignes, jusque dans une certaine mesure, à tous ses membres.
    Par contre, au bout d'un moment, il y aura bien sûr des spécificités. Autrement, il ne s'agirait pas de produits différents.

    La bonne nouvelle, par contre, c'est qu'on les trouve assez facilement. Celle de la RTL 8168, par exemple, est ici :
    http://pdf1.alldatasheet.fr/datashee...1/RTL8168.html

    Il y a pas moyen de retrouver des informations sur les fichiers INF du pilote ?!
    Ben non, c'est le principe même du pilote : adapter un périphérique compliqué et spécifique à une interface simplifiée et universelle. Le fichier *.INF, c'est le manifeste du pilote concerné et ça n'est valable que sur les système DOS et Windows de toutes façons. Il dit simplement au système quels sont les fichiers concernés et à quel périphérique il s'applique. C'est ce que Windows utilise quand il te propose « Rechercher un pilote automatiquement ».

  7. #7
    Membre chevronné
    Avatar de cpcdos
    Homme Profil pro
    Ingé/concepteur chez Capgemini. Alstom APTIS. Concepteur de Felly autonomous vehicle software.
    Inscrit en
    Mai 2010
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingé/concepteur chez Capgemini. Alstom APTIS. Concepteur de Felly autonomous vehicle software.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 588
    Points : 1 770
    Points
    1 770
    Billets dans le blog
    1
    Par défaut
    D'accord je comprend mieux ! merci de votre réponse!

    Donc je m'amuserai pas forcément à créer un driver

    Si j'utilise finalement le NDIS / NDIS 2, quelles sont les "instructions assembleur" que je peux utiliser pour communiquer avec ma carte ? (envoyer/recevoir)

    Car j'ai le programme PING.EXE de MS CLIENT 3.0, j'ai fais un debug avec TurboDebug et j'essaie de trouver les instructions qui permettrais de communiquer mais j'y arrive pas tellement à trouver c'est un bazard je ne trouve pas l'interruption

    une solution ?

    Merci
    Sébastien FAVIER
    Felly-software Autonomous vehicle software for everyone.
    co-kernel Cpcdos OSx un noyau 32bits simplifié et complet.. ou presque - Le fofo officiel c'est par ici.
    Les cours sur les systèmes c'est par là

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par cpcdos Voir le message
    D'accord je comprend mieux ! merci de votre réponse!

    Donc je m'amuserai pas forcément à créer un driver
    Pourquoi pas ? Ça peut être intéressant. J'avais essayé de le faire pendant un temps, pas pour programmer sous DOS mais pour faire une amorce de système entièrement bootable. L'idée était de ne suivre qu'une seule ligne, ne gérer que les périphériques nécessaires et uniquement dans le cadre qui m'intéressait, de façon à avoir une chance d'arriver au bout du projet, mais de faire un système qui soit capable de booter éventuellement en PXE et aille interroger au final un de mes périphériques USB (ma sono 5.1 défectueuse). Je ne suis pas allé jusqu'au bout par manque de temps, mais je me suis beaucoup amusé avec. Notamment à gérer le clavier et tout le mode protégé (je faisais tourner ça sur un P4 32 bits).

    Si j'utilise finalement le NDIS / NDIS 2, quelles sont les "instructions assembleur" que je peux utiliser pour communiquer avec ma carte ? (envoyer/recevoir) Car j'ai le programme PING.EXE de MS CLIENT 3.0, j'ai fais un debug avec TurboDebug et j'essaie de trouver les instructions qui permettrais de communiquer mais j'y arrive pas tellement à trouver c'est un bazard je ne trouve pas l'interruption
    Merci
    C'est normal : PING ne s'appuie pas sur le gestionnaire de la carte réseau mais sur la pile IP. C'est elle qui se charge de faire un certain nombre de traitements sur tes paquets et de les router, ensuite, vers les différents médias mis en place. Ça peut être une carte réseau mais aussi une liaison point-à-point PPP via un port série et/ou un modem.

  9. #9
    Membre chevronné
    Avatar de cpcdos
    Homme Profil pro
    Ingé/concepteur chez Capgemini. Alstom APTIS. Concepteur de Felly autonomous vehicle software.
    Inscrit en
    Mai 2010
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingé/concepteur chez Capgemini. Alstom APTIS. Concepteur de Felly autonomous vehicle software.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 588
    Points : 1 770
    Points
    1 770
    Billets dans le blog
    1
    Par défaut
    Et bien à vrais dire j'ai pas tellement le temps et mon programme dois être compatible avec le maximum de carte réseau possible, ça va me prendre trop de temps, du coup je préférerai utiliser le NDIS
    Mais c'est vrais que ça dois être interessant


    D'accord !
    J'essaie de trouver de la doc ou quelque chose qui m'aiderai à trouver cela ....
    https://www.google.fr/search?q=pile+IP+ndis
    https://www.google.fr/search?q=registre+IP+ndis
    https://www.google.fr/search?q=registre+IP

    Je ne sais pas quoi chercher.. une solution sur l'utilisation de cette pile pour envoyer/recevoir les paquets ?
    ça me sera une grande utilité puisse ce que je cherche cela depuis bien longtemps




    PS: si je comprend bien j'exclus complètement la méthose PacketDriver
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	mov ax, blabla
    	mov bx, blabla
    	int 0x60  ou 61 62 etc....
    Cordialement
    Sébastien FAVIER
    Felly-software Autonomous vehicle software for everyone.
    co-kernel Cpcdos OSx un noyau 32bits simplifié et complet.. ou presque - Le fofo officiel c'est par ici.
    Les cours sur les systèmes c'est par là

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Honnêtement, je ne le sais pas par cœur : je n'ai jamais eu à travailler en TCP/IP sous D.O.S. À l'époque, la norme était Novell avec son IPX/SPX et même sans pratiquer professionnellement, c'était le protocole utilisé par toutes les applications DOS, en particulier les jeux (Doom et Doom 2, notamment). Avec l'explosion du web courant 1993-94, j'utilisais Trumpet Winsock sous Windows 3.1 avant de switcher entièrement, plus tard, sous Unix. Je me souviens également quelques jeux sont apparus sous DOS 6.x avec la gestion du TCP qui devenait à la mode, mais le système d'exploitation était déjà en fin de vie.

    Par contre, j'ai trouvé ceci :
    http://www.dendarii.co.uk/FAQs/dos-net.html
    http://www.windowsnetworking.com/j_helmig/doscltcp.htm
    http://californiasoftwaresystems.com/ts/tcp-ip/

    Pourquoi est-ce que tu développes sous DOS aujourd'hui ? Juste par loisir ou pour une raison professionnelle précise ?

  11. #11
    Membre chevronné
    Avatar de cpcdos
    Homme Profil pro
    Ingé/concepteur chez Capgemini. Alstom APTIS. Concepteur de Felly autonomous vehicle software.
    Inscrit en
    Mai 2010
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingé/concepteur chez Capgemini. Alstom APTIS. Concepteur de Felly autonomous vehicle software.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 588
    Points : 1 770
    Points
    1 770
    Billets dans le blog
    1
    Par défaut
    Merci pour vos réponses :-)

    Ce matin vers 4h du matin j'ai discuté avec des américains sur un chat irc et ils m'ont donné des documents et des sources de programmes NDIS du coup le problème est résolu :-D
    Si quelqu'un en a besoin demandez :-)

    Cordialement
    FAVIER Sébastien
    Sébastien FAVIER
    Felly-software Autonomous vehicle software for everyone.
    co-kernel Cpcdos OSx un noyau 32bits simplifié et complet.. ou presque - Le fofo officiel c'est par ici.
    Les cours sur les systèmes c'est par là

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Interruption carte réseau avec driver NDIS DOS
    Par cpcdos dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 24/08/2014, 11h03
  2. Réponses: 3
    Dernier message: 10/11/2011, 08h28
  3. [Carte réseau] un driver pour une carte réseau?
    Par adil_vpb dans le forum Hardware
    Réponses: 5
    Dernier message: 20/04/2007, 14h48
  4. Driver carte réseau
    Par cuttyve dans le forum Windows XP
    Réponses: 2
    Dernier message: 21/11/2006, 16h31
  5. [Windows Driver Model] Carte Réseau
    Par Tacha dans le forum Windows
    Réponses: 1
    Dernier message: 04/08/2006, 16h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo