• [^] # Re: Controller le port parallèle

    Posté par . En réponse au message Contrôler le port parallèle. Évalué à 2.

    En fait, je suis au contraire assez axé sur le bas niveau : J'ai fait beaucoup d'assembleur sur toutes sortes de microprocesseurs et microcontrôleurs, j'ai tendance à réduire le nombre de couches et de bibliothèques utilisées par mes applications, je programme principalement en C et en C++, et je m'élève que rarement à des langages de plus haut niveau (sauf pour l'exercice). J'ai également quelques notions d'électronique même si je reste résolument un coder :-)

    Par contre, je ne suis descendu que rarement en dessous du userland sous Linux, d'où mon message. Je pense que je n'aurais pas trop de mal à piloter ces interfaces directement, mais la difficulté est justement d'utiliser ce qui existe déjà, et au bon niveau.

    Exemple : Il y a quelques temps, j'avais voulu écrire un pilote pour lire les disquettes de mon vieux TO8D de 1985. Celui-ci utilisait un lecteur qui était pratiquement celui du PC, mais avec un formattage un peu différent (640 Ko, 256 octets par secteur). Le lecteur en question proposait déjà les fonctions de base (polling) et celles dites « intelligentes » comme la recherche automatique de secteur, le tout au travers de 13 ports d'entrées/sorties hardware. Connaissant bien le pilote de mon TO8D pour l'avoir désassemblé et commenté, je me suis mis en tête d'en faire un sous Linux. J'ai très vite rencontré des difficultés, mais surtout je me suis aperçu que quelqu'un en avait déjà réalisé un, en utilisant exactement les mêmes ports, de la même façon, mais le tout en userland via ioctl. Cela m'a paru évident lorsque j'ai eu les sources sous les yeux, mais je n'y aurais jamais pensé seul.

    C'est pour cela que je me suis dit que, le format de port parallèle étant relativement constant d'une architecture à l'autre, dans le sens où il faut piloter les mêmes imprimantes, et le modèle restant simple (8 bits de données, une ligne de strobe, une ligne de ack), il devait exister quelque chose pour faire cela.