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
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 )
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.