ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
691
691
EMPFEHLEN
-
Hallo,
wie kann man unter einen non-OS - also ein eigenes OS (kein win, lin ...) via BIOS Sectoren auslesen?
Ich komme da nicht klar,mit der ganzen ATAPi Driver sachen.
habe bis jetzt einen kernel, der in den protect mode schalten kann, ein paar strings ausgeben kann und nun oll halt ein dateisystem implementiert werden.
dazu ist es aber notwendig, erstmal sektoren einzulesen .....
danke für infos
jkallup
-
Hi
schau dir mal den Interrupt 13h anNetiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
hab ich schon, ich weiss auch schon, das ectoren 2048 bytes groß sind,
aber ich weiss nicht wie man mit int386(0x13,®s,®s);
sektoren einlesen kann.
Hallo,
ich habe folgendes gefunden:
http://en.wikipedia.org/wiki/INT_13H...ors_From_Drive
aber wie ich das verstanden habe, hat ein cdrom laufwerk nur eine Spur (Spirale) und keine
Heads und Cylinders ....
wie kommt man dann an die gewünschte Sector Struktur?
danke
JensGeändert von sheel (30.12.11 um 22:57 Uhr) Grund: Doppel
-
Hi
wo steht denn da was von Cylinds?
Sector gibts in der verlinkten Tabelle?Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
habe folgendes:
klappt aber nicht so recht ...
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
#define FP_SEG(fptr) ((unsigned)((unsigned long)(fptr) >> 16)) #define FP_OFF(fptr) ((unsigned)(fptr)) #define MK_FP(seg,off) ((void*) (((unsigned long)(seg) << 16) | (unsigned)(off))) typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned long DWORD; typedef struct { unsigned long low; unsigned long high; } QDWORD; void PrintSector ( void * ); void LBASectorRead(void *, double ); int check_ext_present(); QDWORD double2qd( double x ) { QDWORD qdw; qdw.high = (unsigned long)(x/4294967296.0); qdw.low = (unsigned long) x; return qdw; } #pragma pack(1) typedef struct disk_packet { BYTE size_pack; //size of packet must be 16 or 16+ BYTE reserved1; //reserved BYTE no_of_blocks; //nof blocks for transfer BYTE reserved2; //reserved DWORD TransAddr; //address in segff format QDWORD lba; //quad word sector to read }; struct disk_packet disk_pack; void LBASectorRead(void *buffer, double lba ) { REGS uRegs; disk_pack.TransAddr = 0; disk_pack.size_pack = sizeof(disk_pack); //set size to 16 disk_pack.no_of_blocks = 1; //1 block disk_pack.reserved1 = 0x0; disk_pack.reserved2 = 0x0; disk_pack.TransAddr = (unsigned long) MK_FP( FP_SEG(buffer),FP_OFF(buffer)); disk_pack.lba=double2qd( lba ); uRegs.x.ds = FP_SEG( &disk_pack ); uRegs.x.esi = FP_OFF( &disk_pack ); uRegs.b.dl = 0x80; uRegs.b.ah = 0x42; int386(0x13,&uRegs,&uRegs); printf("\n\nError: %x ", uRegs.b.ah ); } int testfat ( void ) { static unsigned char currentMBR[2048] = {0}; int i; LBASectorRead(currentMBR, 17 ); printk("%c", currentMBR ); }
-
01.01.12 12:44 #6
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.516
Hmm, wenn ich da so drüber nach denke, komm ich zum Schluss, das eine Implementierung des ATAPI-Standards wohl die bessere Alternative wäre, oder?
Hier mal was zum Schmökern:
http://www.lowlevel.eu/wiki/IDE
http://forum.lowlevel.eu/index.php?t...22429#msg22429Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
Ähnliche Themen
-
Bios auslesen?
Von dixi im Forum HardwareAntworten: 6Letzter Beitrag: 19.10.08, 12:56 -
interrupt
Von xXchrissiXx im Forum JavaAntworten: 2Letzter Beitrag: 24.05.07, 15:20 -
Zylinde, Köpfe und Sektoren auslesen
Von fizban im Forum HardwareAntworten: 2Letzter Beitrag: 09.08.04, 22:59 -
BIOS-Daten unter Windows auslesen
Von fizban im Forum HardwareAntworten: 1Letzter Beitrag: 02.07.04, 18:30 -
BIOS - Zeit auslesen
Von lukasS im Forum C/C++Antworten: 2Letzter Beitrag: 09.10.03, 16:53





Zitieren


Login





