www.mikrocontroller.net

Forum: Compiler & IDEs Auf gelinkte Binärdaten zugreifen (avr-gcc)


Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe mit dem Linker Binärdateien in meinen Code gelinkt (Per 
Eclipse-Einstellungen->Linker->Andere Objekte (.o)).

Ich kann auch ohne Probleme auf die Daten (Bilder) zugreifen, wenn ich 
die Adresse direkt angebe. Das möchte ich natürlich ändern und 
irgendeine Art Symbol/"Variable" verwenden.

Wie kann ich dies anstellen?

Im .lss steht
000028c8 <_binary_splash_bin_start>:

ich kann allerdings im C-Code nicht auf _binary_splash_bin_start 
zugreifen.
extern void* _binary_splash_bin_start;
Scheint zunächst zu funktionieren, allerdings steht da dann nicht 0x28C8 
drin, sondern 0x0B0B.


Wie kann ich in C auf die hinzugelinkten Daten zugreifen?

Gruß, Lasse

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lasse S. wrote:
> Im .lss steht
>
000028c8 <_binary_splash_bin_start>:

>
>
extern void* _binary_splash_bin_start;
> Scheint zunächst zu funktionieren, allerdings steht da dann nicht 0x28C8
> drin, sondern 0x0B0B.

Und dein "binary splash" fängt zufällig mit 0x0B 0x0B an, oder?

> Wie kann ich in C auf die hinzugelinkten Daten zugreifen?

Sinngemäß:
extern void _binary_splash_bin;

void* binary_splash_bin_start=&_binary_splash_bin;
Statt "void" halt besser was passendes nehmen, z.B. ein uint8_t - Array.

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, super!

Hätte gedacht, dass er das Symbol direkt als Pointer übernimmt, aber 
macht so ja auch mehr Sinn :)

Mit
extern uint16_t _binary_splash_bin_start;
und als Zugriff
foo(&_binary_splash_bin_start)
macht er jetzt genau das, was er soll :)

Vielen Dank!

Gruß, Lasse

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]
  • [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.