[bios,assembler] geheugen detecteren*

Pagina: 1
Acties:

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 17-11-2025
Ik ben hier bezig met een programma te schrijven die ingeladen wordt door de bootsector van een flop, dus dit werkt zonder dos/windows/linux of wat ever voor OS.
Dit programma moet mij gaan laten zien hoeveel geheugen in een computer of laptop zit.
Opzich werkt dit allemaal al, hij vraagt netjes aan de bios de memory map en deze dumpt ie netjes naar het scherm. Dit werkt via interupt 15h functie 0xE820.
Het probleem wat ik nu echter heb is dat als er een geintergreerde videokaart in zit dat het video geheugen eraf gehaalt wordt.
Dus een computer met 256MB geheugen en een 'videokaart' van 64MB geeft een geheugen weer van 192MB.
Als ik nu ook het videogeheugen ga detecteren (moet ik nog doen maar dat lukt me vast wel) zie ik dat dit 64MB is.
Maar nu is de vraag, hoe zie ik dat er dus echt 192MB in zit, dus 128MB + 64MB dimm en een kaart van 64MB of dat er dus eigenlijk 256MB dimm in zit en dus een 'kaart' die er dus weer 64MB vanaf snoept.

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


  • dominic
  • Registratie: Juli 2000
  • Laatst online: 08-02 14:55

dominic

will code for food

Heeft niets te maken met de AGP Arperture size? Misschien wordt die er automatisch vanaf getrokken. Als je die eenmaal weet uit te lezen weet je wat het totale physieke geheugen is.. Gokje hoor..

Download my music on SoundCloud


Verwijderd

ik denk dat het ook niet anders kan, noch windows noch linux laat shared video memory zien bij de geheugengrootte

  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

PiepPiep schreef op 29 januari 2004 @ 12:40:
Maar nu is de vraag, hoe zie ik dat er dus echt 192MB in zit, dus 128MB + 64MB dimm en een kaart van 64MB of dat er dus eigenlijk 256MB dimm in zit en dus een 'kaart' die er dus weer 64MB vanaf snoept.
Waarom wil je dit weten ? Het shared memory wordt gewoon gemapped naar de videokaart, en als applicatie zijnde heb je daar niets mee te maken. Indien je het wel wil weten : Er zijn geen standaard functies voor, en de implementatie is chipset afhankelijk. Het meest simpele is memtet86 te downen, en kijken hoe daar de memory detectie wordt gedaan.

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 17-11-2025
De AGP arperture size is het niet, op systemen zonder shared memory heb je namelijk ook zo'n AGP arperture size.
Ik heb net ff in de VESA doc's gezocht die ik hier heb, videomemory size is iig makkelijk uit te lezen.
Maar om te kijken of het shared of niet shared is heb ik het vermoeden dat het dan bij elke chipset met geintergreerde videokaart anders is.
Ik denk dat de beste oplossing dan maar is om af te drukken hoeveel geheugen er voor het OS is er vlakbij op het scherm hoeveel er aan video geheugen is.

/edit
Ik ga ff memtest86 bekijken hoe die het doet.

P.S. Ik heb het nodig omdat hier op werk computers die van de 256MB 64MB geshared hebben worden verkocht als 256MB en als we kijken wat de specs zijn wil ik dus 256MB zien en niet 192MB omdat ze dan als 192MB weg zouden gaan.

[ Voor 23% gewijzigd door PiepPiep op 29-01-2004 13:04 ]

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


  • TheGhostInc
  • Registratie: November 2000
  • Niet online
Je kent ze vast wel, de programmatjes die ook die strings van je geheugen uitlezen, daarin staat vaak aangegeven hoe groot de module is.
Als je dat erin bakt dan zie je meteen welke geheugenconfig je hebt.

Wat als je shared mem hebt, dan heb je toch gewoon niks aan je videogeheugen, waarom wil je dan toch weten wat erin zit? Je kunt immers aan 1 zo'n getal niet aflezen of er 1 of misschien wel 4 dimms in zitten.
192MB kan ook 1x 128 en 2x 32 MB zijn. of 3x 64MB

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 17-11-2025
Of er 1x 256MB of 4x 64MB in zit maakt niet zoveel uit, de klant koopt het als 256MB en dat moet er dan inzitten.

Maar wat bedoel je met dat soort programmatjes?

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


Verwijderd

Even googlen leverde me dit op.Misschien kun je er iets mee.

[ Voor 20% gewijzigd door Verwijderd op 30-01-2004 12:40 ]


  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 17-11-2025
Ik heb er een paar geprobeert maar ze geven allemaal aan dat er 192MB geheugen is als er eigenlijk 256MB is met 64MB geshared.

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:25

.oisyn

Moderator Devschuur®

Demotivational Speaker

PiepPiep schreef op 29 januari 2004 @ 13:01:
De AGP arperture size is het niet, op systemen zonder shared memory heb je namelijk ook zo'n AGP arperture size.
Ik heb net ff in de VESA doc's gezocht die ik hier heb, videomemory size is iig makkelijk uit te lezen.
Bij niet shared geheugen staat dat videogeheugen op een heel ander adres, meestal ergens in een hele hoge range, zeg 0xE0000000 oid. Geen idee hoe dat bij shared mem zit, maar als je met Vesa opvraagt waar het geheugen zit en het retourneert een waarde dat binnen je geheugenbereik ligt (zeg 0-256M), dan moet dat wel shared zijn.

Overigens is die BIOS functie vrij onaccuraat, zit geloof ik ook een limiet aan. Je kunt beter met de hand gaan tellen (kwestie van waarde wegschrijven en weer uitlezen, en datzelfde nog een keer proberen met een andere waarde. Als de uitgelezen waarde niet klopt met wat je weg hebt geschreven, dan staat daar dus geen geheugenchip achter (of het is corrupt :P)).

Dat tellen doe je natuurlijk niet byte-voor-byte, maar bijv. met stapjes van 1M oid

Het is natuurlijk wel van belang dat je hiervoor in 32-bits mode werkt (protected dan wel real, maar 32 bit real mode is undocumented geloof ik, dus protected ligt het meest voor de hand)

[ Voor 8% gewijzigd door .oisyn op 30-01-2004 15:44 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1