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


von Lasse S. (cowz) Benutzerseite


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
1
000028c8 <_binary_splash_bin_start>:

ich kann allerdings im C-Code nicht auf _binary_splash_bin_start 
zugreifen.
1
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

von Εrnst B. (ernst)


Lesenswert?

Lasse S. wrote:
> Im .lss steht
>
1
000028c8 <_binary_splash_bin_start>:

>
>
1
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äß:
1
extern void _binary_splash_bin;
2
3
void* binary_splash_bin_start=&_binary_splash_bin;
Statt "void" halt besser was passendes nehmen, z.B. ein uint8_t - Array.

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Ah, super!

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

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

Vielen Dank!

Gruß, Lasse

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.