faresas
Messages postés2Date d'inscriptionlundi 20 novembre 2000StatutMembreDernière intervention24 avril 2007
-
16 avril 2007 à 23:45
Guilou34
Messages postés142Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention29 janvier 2016
-
25 avril 2007 à 12:23
Bonjour;
je veux savoir comment lire n octets depuis un flash disque puis les charger en mémoire en utilisant les intérruptions bios en mode réel (16 bit)?
faresas
Messages postés2Date d'inscriptionlundi 20 novembre 2000StatutMembreDernière intervention24 avril 2007 24 avril 2007 à 14:10
Salut
Merci avant tout pour votre réponse, mais j'ai une petite interrogation consernant le continue de registre DL?
Explication:
le registre DL doit contenir le numéro de lecteur en question(C: D: ...etc), mais le problème ici que je travail avec une flash disque USB et pas un disque dur, et les valeur 80h et 81h ...etc disigne les partitions c: d: ...etc de disque dur et non pas du flash disque usb?
voila les conditions que je travail sous les quels pour vous donner une meilleur idée sur mon problème:
- j'ai un disque dur qui est dévisé en deux partitions C: et D:
- je veux modifier le programme de MBR (qui se trouve sur le secteur 1 de disque dur) pour qu'il puisse démarrer sur le flash disque USB.
- pour faire ça, il faut donc créer un programme puis l'installer sur le MBR.
- ce programme doit faire les étapes suivantes:
- lire les premier 1024 octets qui contient le programme de démarrage sur le flash disque usb.
- les charger en mémoire dans une adresse bien définie
- faire un jump vers l'adresse pour continuer l'exécution.
Problématique:
lors de démarrage, le BIOS détecte la présence de la clé usb, lui affecte une adresse unique(générallement entre FF80-FF9F
) et récupère tous les informations qu'il à besoin dans une zone mémoire que je ne sais pas son adresse ni sa structure.
je veux savoir s'il y a une interruption qui me permet de lire 1024 octet à partir de flash disque usb ou s'il est possible à travers les fonctions IN et OUT de l'assmbleur en utilisant les adresses du port usb(FF80-FF9F
)?
Guilou34
Messages postés142Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention29 janvier 20161 25 avril 2007 à 10:02
Salut.
Il s'agit donc de charger un système à partir d'une clef Usb. C'est selon les cas d'une simplicité enfantine mais le plus souvent laborieux et parfois même carrément impossible.
1. La clef doit être du type "bootable". Il en existe, par exemple chez Cruser dont les "premiers "secteurs" sont placés d'office en lecture seul. Un test avec diskedit de chez Borland montre que ces clefs non seulement négligent l'ordre d'écriture mais ne se donnent même pas la peine de le signaler par un message d'erreur.
2. Le Bios doit "connaître" le port USB. Mais cette connaissance est souvent très limitée: il accepte (événtuellement) les clefs de type floppy ou Omega Zip. Mission impossible si la clef a été formatée avec Windows donc avec un MBR dans le secteur 0 alors que le bios veut le traiter comme le boot d'une disquette.
3. Un premier pas qui me parait essentiel c'est de pouvoir utiliser dans Msdos, à l'aisde d'un pilote *.sys approprié une clef recconue par Windows. Par exemple avec device=usbaspi.sys. Mais il arrive que ce pilote détecte la clef, parfois en y mettant le temps, lui attribue une lettre et que cependant la commande " dir n: " échoue totalement.
4. Une explication des problèmes rencontrés se trouve peut-être dans le fait que l'USB se défini par un empilement de couches . marérilles et logicielles. Si les connecteurs et cables, niveaux et formes des signaux sont parfaitement définis il faut encore que le PC et la Clef utilisent le même protocole.
5. Personnellement j'ai fini par adopter la solution la plus simple: changer de carte mère pour une plus récente dont le bios permet de choisir n'importe quel périphérique et utiliser une clef accompagnée d'un mini CD contenant les utilitaires nécessaires (JetFlash par exemple). Pour des raisons de copyright il faudra lui signaler où trouver le système à utiliser.
Je serais heureux que les différents points donnent lieu à discussion ou approfondissement.