Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Assembler: Freie Speicherbereiche nach dem booten bis 1Mb

Synthetic_codes / 1 Antworten / Baumansicht Nickles

Hi, ich habe im moment ein kleines hobby projekt.

kurz gesagt: Welche Speicherbereiche eines 386kompatiblen pcs sind nachdem das bios die kontrolle an das im bootsektor befindliche system abgegeben hat wie belegt(besonders das erste segment)

Frage 2: wie kann ich 204 bytes mit einer art checksum überprüfen? die Prüfsumme soll 4 byte maximal lang sein, der algorithmus sollte im realmode laufen

hier die lange version:



Um das ganze mal kurz anzureissen, es handelt sich um eine art miniaturgeländefahrzeug, das von einem mißbrauchten notebook gesteuert wird. Dabei übernimmt ein 80386 prozessor die steuerung der motoren und sensoren.
Da die leistung des 386 viel zu klein ist, ein herkömmliches protected mode fähiges betriebssystem gescheit zu hosten und das gerät am ende weder festplatte(ersatz:rom) noch diskettenlaufwerk (und auch keinen Bildschirm, aus platz und verbrauchsgründen) mehr haben wird, schreibe ich mein eigenes "Betriebssystem" dafür. ich bin nun an dem teil angelangt, an dem der bootloader einigermassen steht. was macht nun der bootloader... nun im prinzip richtet er eine art ramdisc mit 320kb ein, läd ein dateisystem drauf, und läd von dem ROM der über serielle und parallele schnittstelle angeschlossen ist. die grundteile des betriebssystems in den ram(die ramdisc) und führt dann einen jmp far aus um den init prozess des systems zu starten. Dieser schaltet nun zunächst in den protected mode, läd dann den rest aus dem rom und und schaltet den rom auf \'Durchzug\', damit man die pins der parallelen schnittstelle anderweitig verwenden kann. ab diesem punkt ist der rover dann übrigens steuerbar(es wird natürlich erst noch ein elementares steuersystem geladen).

nun zu meinem problem. ich wüsste gerne wie die speicherbereiche die man im realmode der cpu addressieren kann(0-1Mbyte) direkt nachdem das bios die kontrolle an den bootsektor weitergegeben hat belegt sind. theoretisch müsste eigentlich nur das erste segmet belegt sein(zu 50%, da das bios ja genau 32kb gross ist). uff das wärs erstmal glaub ich.

ah da fällts mir ein was ich noch fragen wollte.
Das system soll selbstversändlich administriert werden können(insbesondere in punkto steuerung!). ich habe dafür einen sender vorgesehen, der an die 2. serielle schnittstelle angeschlossen wird(ein transceiver, wandelt nur die elektrischen daten in funkwellen um).
Der datentransfer wird in primitiven datenpaketen abgewickelt, die je eine grösse von 192byte haben(plus header(=12byte)). weiss jemand einen möglichst simplen (und in asm simpel umsetzbaren) algorithmus
(der nach möglichkeit bereits im real mode umsetzbar ist) um die pakete auf fehler zu untersuchen(es reicht, wenn eine fehlerhafte übertragung festgestellt werden kann, es ist bereits eine art resend protokoll geplant)

huhh ich hoffe mir kann einer helfen

'); DROP TABLE users;--
bei Antwort benachrichtigen
Andreas42 Synthetic_codes „Assembler: Freie Speicherbereiche nach dem booten bis 1Mb“
Optionen

Hi!

Deine Frage müsste sich mit der alten "PC-Programmierbibel" PC Intern 4 fast komplett beantworten lassen.

Falls du billig an das Werk rankommst: zuschlagen. (Autor ist M. Tischer oder Tischler; muss erst zu hause nachsehen).

Aus dem Kopf:

Entweder wird der MBR-Komplett oder nur der Bootloader an eine feste Adresse geschriebn und geatrtet (ich denke, dass weist du).

Im Realmode sind AFAIK die ersten 640kByte eingeblendet, der Rest ist per Default reserviert für Grafik-RAM und I/O-Bereiche (und das BIOS-ROM, wenn ich mich nicht irre).

In den ersten 256Bytes des Speichers liegen AFAIK Interruptsprungtabellen. Der Rest des Basisspeichers (also die 640kByte) müssten komplett zur Verfügung stehen.

Basics gibt's natürlich auch in Ralf Browns Interruptliste:
http://www.clipx.net/ng/rbrown/index.php

Hier ist der Punkt der BIOS Memory List der richtige.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen