www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Abbruchbedingung


Autor: VHDL-Rookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann auch einfach das erste Byte als längenangabe interpretieren.

Autor: 32-bit-CPU (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> das erste Byte als längenangabe

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: 32-bit-CPU (Gast)
Datum:

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

32-bit-CPU...

Wer lesen kann ist klar im Vorteil.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 32-bit-CPU...
Der PC hat auch eine 32 Bit Architektur, und trotzdem:
Zitat aus og. Quelle
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.

Autor: 32-bit-CPU (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: 32-bit-CPU (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der Begriff Word (bzw. Wort) wird auch in der Windows API

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ROTFL

Autor: 32-bit-CPU (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.