Hallo zusammen, ich soll in einem älteren Arm7-Projekt einen Fehler suchen. Die damals verwendete Umgebung eclipse-yagarto-openOCD ist nicht mehr verfügbar. Deshalb habe die OlimexODS-Version benutzt. Mit dem alten Makefile funktionierte das gar nicht, da nach einen ARM-Elf-Compiler gesucht wird. Habe die Files in ein Beispielprojekt mit nahezu gleichem Hardwareaufbau eingebaut (AT91sam7s256). Nun bekomme ich beim Compilieren den Fehler: undefined reference to `_sbrk'. Das scheint an einem fehlenden newlib-library zu liegen, dass ich aber nirgends finde. Oder bin ich auf dem Holzweg. Hat jemand einen Tip, wo ich suchen soll? Ich habe wenig Erfahrung in der embedded Programmierung. Viele Grüße Fred
dunkelbunt schrieb: > undefined reference to `_sbrk'. Das bedeutet normalerweise, dass du irgendwo dynamischen Speicher benutzt ("malloc", "new", Exceptions, printf, ...), aber eben keine _sbrk Funktion zur Verfügung gestellt hast. Die wird aber gebraucht, um neuen Speicher anzufordern, typischerweise vom Betriebssystem. Also entweder auf dynamischen Speicher verzichten, oder _sbrk implementieren. dunkelbunt schrieb: > Das scheint an einem fehlenden newlib-library zu liegen, dass ich aber > nirgends finde. Oder bin ich auf dem Holzweg. Im Gegenteil, die newlib ist vorhanden, denn die braucht das _sbrk. Die Dokumentation zur newlib, die typischerweise beim Compiler mitgeliefert ist, findest du hier: https://sourceware.org/newlib/
was es mit dem _sbrk auf sich hat (und anderen funktionen), kannst du in diesem Thread nachlesen: Beitrag "ARM - Probleme mit sprintf (Linkerfehler)" Noch genauer, in diesen Beiträgen: Beitrag "Re: ARM - Probleme mit sprintf (Linkerfehler)" Beitrag "Re: ARM - Probleme mit sprintf (Linkerfehler)"
Vielen Dank, Ihr habt mir und meinem Verständnis für die Sache, sehr weiter geholfen. Grüße Fred
off topic sry, hab damit gerne gearbeitet, ES WAR WEINE ERSTE eRFAHRUNG MIT ATMEL ARM 32 BIT, war echt cool. ATMEL haben die ARM cors µC gerecht gemacht!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.