Abbruchbedingung

Gast #1133400
Hallo zusammen,

jetzt hätte ich noch eine andere Frage: Ich schreibe hier gerade einen 
Bootloader, der bei Reset die Pipeline anhält, alle Daten aus dem Flash 
ins RAM kopiert, dann die Pipe wieder startet. Danach wird aller Code 
aus dem RAM ausgefüht.

Mein einziges Problem ist die Abbruchbedingung: Wie würdet Ihr eine 
entsprechende Abbruchbedingung verfassen, damit der Bootloader erkennt, 
dass das Programm zuende ist und er mit Kopieren aufhören kann? Im 
Moment werden einfach die ersten 20 x 32Bit aus dem Flash ins SDRAM 
kopiert (die Programme haben momentan einfach nicht länger zu sein ;-) ) 
Aber wie könnte ich das Programmende erkennen?

Danke für Eure Hilfe und viele Grüße

Martin
Moderator (Firma: Titel) Persönliche Seite #1133409
> Aber wie könnte ich das Programmende erkennen?
Das wird ganz gern über irgendwelche Magic-Codes gemacht, z.B. zwei 
32-bit-Integer mit 0xDEADBEEF 0xBADCABlE
Siehe auch: http://en.wikipedia.org/wiki/Hexspeak
und: http://en.wikipedia.org/wiki/Magic_number_(programming)
Wenn dieser Code kommt, ist der Bootloader zuende. Du mußt allerdings 
beim Build-Prozess des Bootloaders diesen Magic-Code hinten mit 
dazulinken.
Moderator (Firma: Titel) Persönliche Seite #1133434
> und dann mußt du noch verhindern das keine "Magic-Codes" im normalen
> Kontext vorkommen...
Scheint trotzdem weltweit recht gut zu funktionieren  ;-)
Da kann man eigentlich nur mit Wahrscheinlichkeiten operieren. Je länger 
der Magic-Code, umso unwahrscheinlicher wird der fall, dass er im 
"normalen" Programm vorkommt.
Moderator (Firma: Titel) Persönliche Seite #1133627
> 32-bit-CPU...
Der PC hat auch eine 32 Bit Architektur, und trotzdem:
Zitat aus og. Quelle
1
Der Begriff Word (bzw. Wort) wird auch in der Windows API für eine 16-Bit-Zahl verwendet.

> Wer lesen kann ist klar im Vorteil.
Zur Abwechslung diese Quelle:
http://en.wikipedia.org/wiki/Integer_(computer_science)
Und hier ist word gleichwertig bei 16 und 32 Bit angegeben.

BTW:
bei mir ist ein Wort immer so breit, wie ich das gerade brauche. Ich 
arbeite hier im Augenblick mit 18-Bit-Worten.
Gast #1133660
> BTW:
> bei mir ist ein Wort immer so breit, wie ich das gerade brauche. Ich
> arbeite hier im Augenblick mit 18-Bit-Worten.

Es lebe die selige BESM-6. Die hatte 48-Bit-Worte.
Wie breit war da wohl ein Wort...

Richtig... 48 Bit...

Und nun rate mal, wie breit ein Wort bei einer 32-bit-CPU ist.
Moderator (Firma: Titel) Persönliche Seite #1133704
32-bit-CPU wrote:
> BTW: Den IT-Oberblindfisch Bill Gate$ heranzuziehen, wär mir ja peinlich.
Du hast den Namen zuerst ins Gespräch gebracht, wie peinlich ... ;-)

Nicht Microsoft hat den Begriff word für 16-Bit Register auf einer 
32-Bit-CPU ins Spiel gebracht, sondern Intel mit Registern wie EAX, AX, 
Al und AH, und Befehlen wie CBW und CWD. Was blieb M$ da schon anderes 
übrig, als die vermurkste Definition zu übernehmen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.