Est-ce que quelqu'un sait comment accéder à des périphériques tels qu'un port Ethernet sur une carte mère ou sur une carte PCI? p>
Y a-t-il des registres spéciaux? OPCODES? Dois-je appeler un appel au système d'exploitation? Si oui, comment? P>
Merci d'avance. P>
4 Réponses :
Vous pouvez utiliser des appels vers la carte elle-même, en utilisant des instructions de dérivation et de sortie ou quelque chose de similaire. Chaque carte Ethernet est différente, vous aurez donc besoin de la documentation du fabricant. p>
Le niveau suivant est l'appel de la fonction DOS, en supposant que vous utilisiez des fenêtres. Celles-ci vous permettront d'accéder aux fonctionnalités limitées d'une carte Ethernet à l'aide d'appels MSDOS standard. Vous pouvez les trouver dans l'ancienne documentation MSDOS. La plupart d'entre eux travaillent toujours sur des versions ultérieures de Windows, si je ne me trompe pas. P>
Je pense que l'accès au port direct est refusé dans le code de mode utilisateur sous toutes les fenêtres après 9x.
Avez-vous des exemples? Chargez l'adresse de la mémoire de l'appareil dans un registre? Comment puis-je obtenir une adresse mémoire? Quels mots-clés dans x86 utiliserais-je? Etc. et malheureusement dans ce cas, le développement de Windows sera fortement improbable. Si je suis réussi à une capacité, je voudrais probablement qu'il utilisera avec un autre code, que je développe tous sur des systèmes UNIX.
Comme l'a dit YetaPB, il peut y avoir des restrictions de sécurité sur l'accès direct du port. Vous pouvez obtenir des détails sur tout cela à partir du fabricant matériel. Chaque fabricant et la plupart des modèles sont susceptibles d'être différents. Désolé, je n'ai aucun exemples de la dernière décennie.
Vous devrez écrire sur des adresses portuaires spécifiques. Cette page wiki pourrait vous aider à démarrer.
MemoryMAFIOO P>
Cela dépend de la puce Mac Ethernet que vous essayez de parler. Même les puces dans la même famille auront souvent des différences mineures dans la manière dont ils fonctionnent. C'est pourquoi les OSES modernes ont le concept "pilote": le fabricant matériel écrit généralement le pilote car ils connaissent le matériel et que le pilote fournit une traduction entre le matériel et ce que le système d'exploitation veut voir. P>
Vous pouvez souvent obtenir une documentation du fabricant de Mac Chip pour écrire votre propre pilote. Encore une fois, vous devez savoir exactement quelle puce vous essayez de parler afin d'obtenir les bonnes spécifications. Certaines puces n'ont pas de documentation publique, mais ce n'est généralement pas un problème avec les puces Ethernet. P>
Wow, c'est génial (en ce sens que je viens d'apprendre quelque chose de nouveau). Merci! Donc, si je trouve la bonne spécification pour ma puce Mac, je pourrais essentiellement écrire mon propre pilote pour le plaisir ou une autre fonctionnalité. Existe-t-il un moyen facile de trouver sur la puce Mac au niveau de l'application? Et, les conducteurs ont manifestement doivent être assemblés au code d'octet, mais y a-t-il un moyen facile de «démonter» à leur retour à l'assemblage? Cette étape se passe souvent dans la communauté Linux?
Oui, vous êtes censé être capable d'écrire un pilote juste à partir des documents de la puce; Trouver lesdites Docs peut être un défi. Pour détecter la puce utilisée, vous pouvez marcher les tables de périphérique PCI; Sous Linux, par exemple, il y a la commande LSPCI, ce qui vous fait pour vous. Oui, vous pouvez démonter un conducteur, mais il y a peu de raisons de le faire si vous avez les spécifications pour la puce. Et non, les pilotes Ethernet Linux ne sont généralement pas inversés à l'inverse des pilotes Windows. Cela arrive parfois avec d'autres types de pilotes, mais comme je l'ai dit, les spécifications de puce Ethernet ne sont généralement pas difficiles à trouver.
La réponse la plus simple, bien que probablement pas ce que vous recherchez, il s'agirait d'écrire le code C pour accéder à la carte, de la compiler et de voir le code généré par le compilateur. P>
Le code C est susceptible de passer par le pilote NIC directement ou d'utiliser une bibliothèque comme winpcap . Prise en charge intégrée pour Les sockets bruts sous Windows, par exemple, ont été désactivés pour des raisons de sécurité. < / p>
Mais ce n'est pas la meilleure façon d'apprendre comment fonctionne les NICS. Pour cela, choisissez une feuille de données d'une carte de données Embedded populaire comme LAN91C111 et Lisez comment y accéder. que strong> vous apprendra beaucoup à l'égard de l'eterthet à la manière brute. p>
Ce n'est toujours pas suffisamment bonbon pour étudier le langage de montage dans, IMHO. Pour cela, il suffit de mettre en œuvre quelques petits programmes algorithmiques en matière de recherche d'arbres binaires comme une arborescence binaire. P>
Qu'essayez-vous de faire? Écrire un pilote? Un pilote est vraiment le seul endroit où ce type d'accès est approprié ... quel système d'exploitation?
J'aimerais juste expérimenter - peut-être transmettre un paquet ou deux? Je suis dans un cours d'assemblée (MIPS) maintenant et travaille également dans un laboratoire de recherche de réseaux, alors je pensais que ce serait de converger les deux. Je vais bien développer sur tout système d'exploitation majeur mais les préfets iraient à partir de Mac, Linux, gagnent.