länge zur Laufzeit

Gast #145667
Hallo.

Ist es möglich, die länge eines im flash ROM abgelegten Datensatzes zur
laufzeit zu bestimmen ?
Bis jetzt verwende ich immer sizeof(), das wird aber (wenn ich es
richtig weiss) vom coprozessor schon rausgeschnissen und durch die zahl
ersetzt. Ich brauche aber die Länge zur Laufzeit, da das HEX File nach
dem compilieren und linken  noch bearbeitet wird (Der Flash ROM
bereich).

(ich verwende WINAVR-GCC auf einem ATMega16)
MfG Simon
Gast #145669
entweder wie schon beschrieben durch einen terminierenden char oder wenn
jeder char in den daten enthalten sein kann plane ein entsprechend
grosses size feld am anfang der daten ein, dass dann entsprechend
aktualisiert wird
Gast #145670
Hi

ich habs nicht verstanden. sizeof() bestimmt ja nur die Größe eines
Datentypes bzw. Arrays. Und was willst du jetzt genau zur Laufzeit
herausfinden?

BTW:
sizeof() wird AFAIK nicht vom Präprozessor ausgewertet. Zumindest wirft
es der GCC beim Aufruf mit -E noch mit aus. Wär auch schwierig denn der
Präprozessor weis eigentlich nichts über den Syntax der Sprache.

Matthias
Gast #145671
@Matthias

ich habe einen String im flash ROM und dessen (aktuelle) länge brauche
ich zur Laufzeit. (d.h. die Array Länge).

Ich weiss nicht genau von was der wert (mit der funktion sizeof() )
errechnet wird aber die hauptsacht ist ja, das sie nicht zur laufzeit
berechnet wird, was in den meisten fällen so auch gut ist.

Wird eigentlich im intelhex-format die gesamtlänge der datei irgendwie
festgehalten ? oder kann ich einfach im nachhinein die datei bearbeiten
und an der stelle wo mene flash daten stehen was anderes hin schreiben?
(denk mal so einfach gehts nicht, da sin ja sicher noch crc's oder so
drinn)


PS::hab grad bemerkt in meinem letzten thread hatte ich coprozessor
geschrieben, damit meinte ich natürlich den präprozessor. hatte mal
wieder was falsches im kopf ;)

MfG
Gast #145672
> ich habe einen String im flash ROM und dessen (aktuelle) länge
> brauche ich zur Laufzeit. (d.h. die Array Länge).

Dir ist die Funktion strlen bekannt?

(Beim Gebrauch die Harvard-Architektur der AVR-Prozessoren
berücksichtigen!)
Gast #145673
Hi

mit strlen_P kannst du die Länge eines nullterminierten Strings im
Flash zur Laufzeit bestimmen.

So einfach was ins Intel-Hex einzupflücken geht nicht. Wenn du damit
Teile deines Programmcodes verschiebst schon garnicht. Ich gehe
üblicherweise den Weg über eine Binärdatei. Mittels avr-objcopy aus dem
Intel-Hex eine Binärdatei machen, die wie gewünscht bearbeiten und dann
wieder mit avr-objcopy ein Intel-Hex erstellen.

Matthias
Gast #145674
@Matthias:
So würd ichs ja auch machen, wenn ich das nur 1x machen müsste. Aber
ich will ein Programm schreiben, dass das erledigt. Das will ich
wahrscheinlich später mal verkaufen und ich kann ja schlecht den
avr-objcopy verkaufen.

Mein Programm muss als aufgabe ein HEX file haben.

MfG
Gast #145676
Hi

du sollst ja nicht avr-objcopy verkaufen. Du steuerst mit deinem
Programm avr-objcopy und legst es einfach bei. Oder investierst zwei
Stunden und schreibst einen Parser für Intel-Hex und ein paar
Funktionen die Intel-Hex wieder schreiben,

Matthias
Gast #145677
Das mit avr-objcopy verkaufen war auch so gemeint. ich verkaufs ja
schließlich dann mit.
Ja, ich denk so werd ichs auch machen. kenntst du eine doku zum ihex
format ?

MfG

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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]
  • [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.