012
29.04.2004, 14:59 Uhr
~Unwissende
Gast
|
...aaaaalso, jetzt nochmal gaaaaaaaaaaaaaanz langsam für mich (zum mitdenken, den meine geistigen Fähigkeiten verhalten sich im Moment umgegekehrt proportional zur Umgebungstemperatur...) Also gut, hier nochmal Code; dieses Mal hab ich meine Vermutungen gleich in den Quelltext reingeschrieben, auch wenns vielleicht unübersichtlich wird... :
C++: |
UINT8 RAM_test(UINT32 *adr, UINT32 rng, FILE *fp) //*adr ist ein ach-so-geliebtes-Pointerchen auf die sogenannte Base-Adress, //also eine Start-Adresse, ab da wird halt der RAM getestet... // rng ist die Gesamtanzahl der Datenworte (jeweils 32Bit/4Bytes), //also 32MB/4B=8M Datenworte { UINT32 i, ii, i_fail; UINT32 *v_p; UINT32 test_pattern; UINT32 rc; UINT32 bit_sample; UINT8 ret_rc; UINT8 break_fl;
ret_rc = 0; // RAM-Test: Schreiben und Lesen ab Basisadresse if(fp) fprintf(fp,"\nRAM-Test Start (Please get RAM base address at the end of the test!)\n"); i_fail = 0; break_fl = 0; v_p = adr; //so, ab hier wird mir unheimlich...das heißt doch: der Pointer v_p zeigt nun auf die gleiche Speicherzelle wie der Pointer adr, ODER? for(i=0; i<rng; i++) //alle Datenworte werden durchgemacht { test_pattern = 0; bit_sample = 0; *v_p = 0; //wird hier der Inhalt, auf den der Pointer v_p zeigt "0" gesetzt??? das heißt doch auch, dass der Inhalt, auf den der Pointer adr zeigt, der gleiche sein muss, also "0"?!??! Wir haben ja 2 Pointer auf eine Zelle... if((rc = *v_p) != 0) { sprintf(c_textpegel, "Clear Offs = 0x%x, read 0x%.08x - expected 0\n", i*4, *v_p); //hier wird nochmal getest, ob der Inhalt, auf den v_p zeigt, wirklich "0" ist...
} else { test_pattern = 0; for(ii=0; ii<32; ii++) { // set bit nr. ii bit_sample = 1 << ii; *v_p |= bit_sample; test_pattern |= bit_sample; // und hier wird jetzt in die Datenwörter reingegangen..und mit einer Bitmaske den Inhalt, auf den der Pointer v_p zeigt, "0" gesetzt, ODER?
if((rc = *v_p) != test_pattern) { sprintf(c_textpegel, "Offs = 0x%x, read 0x%.08x - expected 0x%.08x\n", i*4, *v_p, test_pattern); } } } v_p++; } }
|
So, also, wenn das heute noch jemand blickt, dann bin ich echt froh
Bearbeitung von Pablo: |
Du hast vergessen, cpp tag zu schliessen
|
Dieser Post wurde am 29.04.2004 um 15:20 Uhr von Pablo editiert. |