Hallo zusammen,
also da ist noch ein Problem. Aber ein anderes.
Das Thema von oben ist erledigt. Läuft!
Ich kann die Festplatte richtig initialisieren und die Statusregister
auslesen. Und ich kann die eigenen Werte wie Größe uns Hersteller und so
weiter auslesen.
Bei der Größe fängt es aber schon an.
Die Daten werden beim Lesen in einen Buffer geschrieben, der als char
definiert ist.
Also ein Byte nach dem anderen. Die Byteorder ist auch richtig.
Bei der Portierung wechselte ich aber auf einen 16bit Bus, was bei einem
32bit Prozessor Sinn macht. Und ich schreibe die Daten auch der Reihe
nach in den Buffer.
Die Größe der Festplatte wird als 32bit Wert gespeichert. Und da ist nun
das Low-Word und das High-Word getauscht.
Also konkret: Die Byteorder (der 16bit Zugriffe) ist richtig, aber im
Speicher landen die 16bit Werte getauscht.
Ich habe nun für die Größe ein Macro erstellt, das dies behebt. Keine
große Sache, aber die Fat-Daten kann ich so nicht lesen, wenn da noch
Werte getauscht sind.
Meine Frage ist nun, wie so ein Verhalten zustande kommen kann.
Hat das auch noch mit der Portierung zu tun? Oder liegt es daran, wie
das bei Festplatten gemacht wird?
Ich würde mir den Umweg über das Macro gerne ersparen, da dies nur
Symptome lindert, aber das Problem nicht löst.
Wo sollte ich denn nochmal genau hin schauen, um hier weiter zu kommen?
Ich bin grad etwas ratlos. Oder wer kennt ein ähnliches Verhalten?
Danke euch!
Grüße, Jens