Hallo, ich habe erst vor kurzem einmal den ARM none eabi GCC runtergeladen von hier: https://launchpad.net/gcc-arm-embedded/+download Ich benutze Linux, daher habe ich das entsprechende .tar.bz2 genommen und entpackt (nach opt). Die Toolchain funktioniert bestens; man kann sogar ein Makefile von den Yagarto-Examples nehmen, und das Projekt wird erfolgreich und fehlerfrei compiliert. Nun habe ich dazu Frage 1: Wenn man printf() benutzt - wo geht der Output dann hin? Kriege ich irgendwo einen Callback oder sowas? Dann Frage 2: Nun möchte ich noch was mit einem Blackfin programmieren. Ich habe ein fertiges Board, wo uCLinux drauf läuft. Als SDK zu dem Board kriegt man ein Image, das man in VirtualBox auf dem PC einbiden kann, wo ein Linux gebootet wird und die Toolchain bereits eingerichtet ist. Da ich nun aber schon normalerweise auf Linux arbeite, wäre es schön, wenn ich mir die VM ersparen könnte. Kurz und gut also: ich lade mir die bfin-uclinux-gcc Toolchain herunter (.tar.bz2 wie gehabt) und entpacke sie nach opt. Leider scheint bei dem GCC die C-Library nicht dabei zu sein: ein Hello world lässt sich nicht compilieren mit bfin-uclinuc-gcc, mit arm-none-eabi-gcc geht es aber! Die Frage ist: wo muss ich die Blackfin C-Library ablegen, damit der bfin-gcc diese findet? Interessanterweise musste ich bei der arm-none-eabi Toolchain überhaupt nichts einrichten, das hat 'out of the box' funktioniert, müsste bei Blackfin also auch möglich sein. Gruss
Tobias Plüss schrieb: > Wenn man printf() benutzt - wo geht der Output dann hin? Das hängt von der mitgelieferten C-Bibliothek ab. Ich geh' mal davon aus, dass es sich um eine newlib handelt. Diese implementiert das Unix-Modell, sodass du die zugehörigen Unix-Syscalls selbst in deiner Applikation liefern musst. Das ist für printf() in erster Linie ein write(), aber vermutlich wird stdio für die Pufferung der Daten außerdem mindestens noch eine Implementierung von sbrk() benötigen. Dies fordert eine Vergrößerung des Datensegments an (normalerweise vom Betriebssystem, aber du musst hier halt so tun als ob) und stellt die Basis für malloc() dar. Beispiele dafür solltest du im Netz finden. > Die Frage ist: wo > muss ich die Blackfin C-Library ablegen, damit der bfin-gcc diese > findet? Interessanterweise musste ich bei der arm-none-eabi Toolchain > überhaupt nichts einrichten, das hat 'out of the box' funktioniert, Der Bibliothekspfad wird normalerweise beim Aufruf des ./configure beim Compilieren des GCC abgeleitet aus dem dort angegebenen Installationspräfix. Wenn du den Compiler mal mit -v aufrufst, dann zeigt er dir die einzelnen Backend-Aufrufe einschließlich der benutzten Pfade.
Hallo Jörg, danke. Es hat funktioniert. Was habe ich gemacht? einfach die C-Library im Ornder lib ablegen, dann funktioniert es. :-) Gruss Tobias
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.