Forum: FPGA, VHDL & Co. Abbruchbedingung


von VHDL-Rookie (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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.

von ... .. (docean) Benutzerseite


Lesenswert?

und dann mußt du noch verhindern das keine "Magic-Codes" im normalen 
Kontext vorkommen...

Sonst wird nachher nur die Hälfte geschrieben...

Man kann auch mit Paketen fester Länge arbeiten.

1. Paket: "Ich schicke jetzt x pakete mit Länge y

2. bis x: Daten

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Man kann auch einfach das erste Byte als längenangabe interpretieren.

von 32-bit-CPU (Gast)


Lesenswert?

> das erste Byte als längenangabe

Sowas kommt bei zuviel AVR-Frickelei raus.
Wenn dann vielleicht das erste Wort.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Wenn dann vielleicht das erste Wort.
Wie breit ist ein Wort?  ;-)

Ein Byte kann auch ein Wort sein:
http://de.wikipedia.org/wiki/Datenwort

von 32-bit-CPU (Gast)


Lesenswert?

> > Wenn dann vielleicht das erste Wort.
> Wie breit ist ein Wort?  ;-)

32-bit-CPU...

Wer lesen kann ist klar im Vorteil.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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.

von 32-bit-CPU (Gast)


Lesenswert?

> 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.

von 32-bit-CPU (Gast)


Lesenswert?

> Der Begriff Word (bzw. Wort) wird auch in der Windows API

BTW: Den IT-Oberblindfisch Bill Gate$ heranzuziehen, wär mir ja 
peinlich.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Ich korrigiere mich auf "Man kann auch die ersten 32bit als Längenangabe 
interpretieren" ;)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

ROTFL

von 32-bit-CPU (Gast)


Lesenswert?

> sondern Intel mit Registern wie EAX, AX, Al und AH, und Befehlen wie CBW > und 
CWD.

Diese Designkrüppel gehören m.E. auf den Müllhaufen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.