lpc21xx newlib

Gast #1784212
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
Moderator Persönliche Seite #1784308
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 )
Angehängte Dateien:
Gast #1784951
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
Gast #1784970
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren