Forum: Mikrocontroller und Digitale Elektronik lpc21xx newlib


von julian (Gast)


Lesenswert?

Hallo zusammen,

ich schreibe gerade ein wenig Software für einen lpc2103. Als Compiler 
setze ist den cross-arm-elf-gcc ein. Das funktioniert soweit auch ganz 
gut, allerdings würde ich jetzt gerne einige libc Funktionen (snprintf 
z.B.) benutzen.
Dafür bin ich auf die newlib gestoßen. Da scheint es ja eine anpassung 
newlib-lpc zu geben: 
http://www.aeolusdevelopment.com/Articles/download.html
Blöderweise sind die Download-Links tot. Weiß jemand, ob es die sonst 
noch irgendwo gibt, oder was man alternativ verwenden könnte?

Gruß,
Julian

von Martin T. (mthomas) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

julian schrieb:
> Hallo zusammen,
>
> ich schreibe gerade ein wenig Software für einen lpc2103. Als Compiler
> setze ist den cross-arm-elf-gcc ein. Das funktioniert soweit auch ganz
> gut, allerdings würde ich jetzt gerne einige libc Funktionen (snprintf
> z.B.) benutzen.
> Dafür bin ich auf die newlib gestoßen.
Je nach Paket, ist die newlib schon installiert (als libc/libm). Was 
wahrscheinlich fehlt sind die syscalls (sbrk, write u.s.w.). Falls nur 
snprinf benötigt wird, kann man die syscalls auch selbst implementieren 
und braucht keinen weiteren Code.

> Da scheint es ja eine anpassung
> newlib-lpc zu geben:
> http://www.aeolusdevelopment.com/Articles/download.html
> Blöderweise sind die Download-Links tot.

newlib-lpc ist nicht wirklich eine "Anpassung" sondern eine Erweiterung. 
Im Kern sind es Implementierungen der syscalls (siehe newlib 
Dokumentation).

Vorab eine Kopie der newlib-lpc rel5a Quellen im Anhang. Entspricht 
nicht vollständig dem Original, hatte für WinARM ein paar Kleinigkeiten 
angepasst. Vor allem Makefiles. Besser: E-Mail an Aeolus schreiben und 
sie darum bitten, den Link zu reparieren.

Vorsicht bei arm-eabi toolchain: newlib-lpc hat hier nicht auf Anhieb 
damit funktioniert. arm-elf toolchain sollte keine Probleme bereiten. 
Irgendwo habe ich eine angepasste Version für arm-eabi, bei Bedarf 
nochmal melden, suche die dann aus dem Archiv.

> Weiß jemand, ob es die sonst
> noch irgendwo gibt, oder was man alternativ verwenden könnte?

z.B. libsysbase aus DevkitARM/DevkitPro (sf.net SVN) (siehe auch 
http://sourceware.org/ml/newlib/2006/msg00451.html )

von julian (Gast)


Lesenswert?

Danke, ich habe inzw. das Original-File noch im Web gefunden.

Mittels make -f example2.mak wird auch eine libnewlib-lpc.a gebaut. 
Allerdings bin ich mir noch nicht so ganz sicher, wie ich das Makefile 
meines Programms anpassen muss um gegen libnewlib(-lpc) zu linken?
Hat da vielleicht noch jemand einen Tipp für mich?

Gruß,
Julian

von julian (Gast)


Lesenswert?

Um nochmal etwas zu konkretisieren, wie ich es bisher versucht habe:
Die kompilierte libnewlib-lpc.a habe ich zu den anderen libs nach 
/usr/arm-elf/lib/ kopiert.
In meinem Makefile habe ich die LDFLAGS gesetzt:
1
LDFLAGS = -L/usr/arm-elf/lib -lc -lnewlib-lpc

Der linker-Aufruf sieht dann so aus:
1
arm-elf-ld -L/usr/arm-elf/lib/ -lc -lnewlib-lpc -o main.elf crt.o console.o at45_flash.o lpc_handler.o peripherals.o slip_io.o main.o -T lpc2103_flash.cmd \
2
  -Map main.map

Liefert aber leider immernoch unresolved symbols auf alle libc 
Funktionen.

Gruß,
Julian

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.