Hi, ich programmiere schon einige Jahre AVR µCs und hab nun schon seit einer geraumen Zeit einen Raspberry hier herum liegen. Nun wollte ich das Ding auch mal in Gebrauch nehmen. Das auf dem Raspberry Linux läuft ist mir bewusst, ich habe leider mit Linux noch nicht so viel Erfahrungen sammeln können. Wäre es denn möglich, wie bei einem AVR oder einem anderen µC den ARM Cortex-A7 auch direkt Hardwarenah zu programmieren? Was benötige ich da? Gibt es im Nutz einige Ressourcen wo ich mich da ein wenig einlesen kann? Oder bin ich da immer zwingend auf ein "Betriebssystem" angewiesen? Vielen Dank schon mal im vor raus.:-D
Warum willst du auf das Betriebssystem verzichten? Crosscompilieren und ein Bootimage erstellen ist doch wesentlich komplizierter, als sich einzuloggen und gcc aufzurufen. Ob du nun einen Editor unter Windows aufrufst, oder unter Linux, dass ist doch gehupft wie gesprungen. Selbst die Tataturkürzel sind gleich. Es gibt Anleitungen für Bare Metal im Netz. Doch wenn du nicht einmal Linux bedienen kannst, könnte das auch schon zu kompliziert sein. Lern Linux, das ist was fürs Leben. Ich benutze das schon 23 Jahre lang.
Danke Pitty für den Hinweis, jedoch würde ich Linux erstmal bei Seite lassen wollen. Ich will die Grundzüge des ARM lernen. Bare Metall war aber der richtige Hinweis, danke dafür. Crosscompiling und Image-Erstellung sehe ich erstmal nicht so kompliziert. Da nimmt einen ARM-GCC schon sehr viel ab. Gewisse Grundzüge von Linux kenne ich ja, so ist das nicht, da kommt man ja nicht drumherum (bin nun auch seit 89 vorm Rechner), aber außer Server aufzusetzen und zu warten mache ich da eigentlich nicht viel. Produktiv setze ich das System nicht ein, und möchte es eigentlich auch nicht.
Draco schrieb: > Das auf dem Raspberry Linux läuft ist mir bewusst, ich habe leider mit > Linux noch nicht so viel Erfahrungen sammeln können. > > Wäre es denn möglich, wie bei einem AVR oder einem anderen µC den ARM > Cortex-A7 auch direkt Hardwarenah zu programmieren? Was benötige ich da? > Gibt es im Nutz einige Ressourcen wo ich mich da ein wenig einlesen > kann? Unter Linux nah an der Hardware zu programmieren bedeutet schlicht und einfach Module bzw. Treiber für den Kernel zu schreiben. Leider ist das nicht so übersichtlich wie bei den AVRs, was unter anderem dem Umstand geschuldet ist, dass der Kernel von der 200Mhz MIPS-Kiste über Mehrkern Cortex-A oder AMD64 bis hin zu irgendwelchen Clustern mit zigtausend Prozessoren läuft, d.h. die Abstraktionsebene ist entsprechend größer. Es gibt von Greg Kroah-Hartmann ein sehr umfassendes Buch namens "Linux Device Drivers" was online frei erhältlich ist. Es ist leider mittlerweile deutlich veraltet und einige Dinge haben sich seitdem (2005!) geändert, wenn auch nicht alle. Es geht jedoch keineswegs auf den Raspberry Pi im speziellen ein (wie auch?). Dafür kann ich aber persönlich das Buch "Embedded Linux lernen mit dem Raspberry Pi" von Jürgen Quade empfehlen. Dort wird alles vom Grundlegenden Aufbau von Linux, über etwaige Bootloader wie U-Boot bis hin zum Crosscompiling des ersten eigenen Kernels erklärt. Das Buch ist relativ kurz aber dafür knackig geschrieben. Es ist sicher nichts für Lieschen Müller die mit Python mal eine LED blinken lassen möchte aber wenn du Erfahrung mit C auf AVR und/oder ARM hast und bereit bist dich da reinzulesen, dann sollte das schon passen. Von Bare-Metal auf Cortex-A würde ich jedoch erstmal Abstand nehmen und wenn überhaupt, dann eher auf einem Beaglebone als auf einem RPi. Da ist der Prozzi einfach deutlich besser dokumentiert. Dort hat man jedoch wieder zwei 32bit Coprozessoren (PRUs) die am gleichen DDR3 hängen wie der Cortex-A und die sich prima wie ein AVR "bare metal" programmieren lassen. Über shared memory kannst du dann mit niedriger Latenz über die PRUs Daten (aus GPIO, I2C, SPI, CAN, usw) in den RAM schieben oder aus dem RAM auf die Schnittstellen schicken. Dafür musst du dann jedoch auch wieder eigene Kerneltreiber schreiben ;) PittyJ schrieb: > Lern Linux, das ist was fürs Leben. Ich benutze das schon 23 Jahre lang. Dem kann ich mich nur anschließen, auch wenn es bei mir erst ca. 5 Jahre sind. Es gibt nicht viele Dinge in der IT-Welt die so konstant sind wie Linux. Mit den Linuxkenntnissen von heute kannst du auch garantiert in 10 Jahren noch was anfangen. Edit: Wenn du den Cortex-A "bare metal" betreibst schmeißt du meiner Meinung nach einfach zu viele Dinge weg, die du mit Linux quasi geschenkt bekommst, wie z.B. Unterstützung für verschiedenste Dateisysteme, einen brauchbaren Netzwerkstack, einen Scheduler sowie die Speicherverwaltung und das alles um im besten Fall eine bessere Latenz zu bekommen. Das lohnt sich aus meiner Sicht einfach nicht. Wenn du eine niedrige Latenz haben willst, dann nimm einen Cortex-M und programmiere ohne OS. Mit den preempt-rt Patches sind aber auch beim Linux Kernel maximale Latenzen von 140µs machbar. Für den Beaglebone gibt es da schon fertige Images und seit kurzem (soweit ich weiß) auch für den RPi.
:
Bearbeitet durch User
Draco schrieb: > Ich will die Grundzüge des ARM lernen. Bare Metall Das geht zwar irgendwie mit dem RPi, aber ich denke so ein billiges STM32-Discovery ist dafür um Welten besser geeignet. der RPi-Prozessor ist eigentlich ein Video- und Grafik-Prozessor mit einem ARM-Hilfsrechenknecht nebendrann, und damit schon von der Hardware bald soweit von "Bare Metal ARM" entfernt, wie nur irgendwie möglich.
Planlos schrieb: > der RPi-Prozessor ist eigentlich ein Video- und Grafik-Prozessor mit > einem ARM-Hilfsrechenknecht nebendrann, und damit schon von der Hardware > bald soweit von "Bare Metal ARM" entfernt, wie nur irgendwie möglich. Zickt nicht auch der Hersteller bzgl. Support rum? STM32 sind doch ganz schön verbreitet...
STK500-Besitzer schrieb: > Zickt nicht auch der Hersteller bzgl. Support rum? > STM32 sind doch ganz schön verbreitet... Ja da hat sich Broadcom bisher nicht gerade mit Ruhm bekleckert. Ebenfalls ein Grund, den BB dem RPi vorzuziehen, wenn man irgendetwas mit Hardware machen möchte. STM32 wäre bei bare metal jedoch meine erste Wahl. Die F7 haben zum Teil sogar native 64bit FPUs am Start.
Mit dem Raspi würde ich sowas auch nicht angehen; wenn schon, dann wie andere schon schrieben auf Linux Treiberebene. Sich da Wissen anzueignen ist sicherlich nicht verkehrt und Zukunftsweisender als jedes Detail über den ARM selbst zu lernen. Alternativ zu einem STM32 Board, kannst Du auch das MSP432 Launchpad von TI nehmen (MSP432 hat einen ARM Cortex M4F Kern drin): http://www.ti.com/tool/msp-exp432p401r Kostet um die USD 12.- und hat alles drauf was man so braucht zum einsteigen (RGB LED, Taster, JTAG interface, Speisung (per USB), Debugger, Strommessung, I/O's herausgeführt, Back-channel UART via USB zum PC...)
Es gibt nichts, was es nicht gibt: http://www.valvers.com/open-software/raspberry-pi/step01-bare-metal-programming-in-cpt1/ Ob's sinnvoll ist, ist eine andere Frage. Die stellt sich m.E. bei einem Hobby nicht. Wenn's aber doch sein muß, würde ich persönlich Raspi-Bare-Metal-Programmierung jedenfalls bezüglich der Sinnhaftigkeit noch über Briefmarkensammeln und Angeln einordnen.
Markus F. schrieb: > Ob's sinnvoll ist, ist eine andere Frage. > > Die stellt sich m.E. bei einem Hobby nicht. Naja, auch bei einem Hobby verfolgt man ja ein bestimmtes Ziel. Sinnvoll ist dann, das zu tun, mit dem man diesem Ziel zumindest näher kommt. > Wenn's aber doch sein muß, würde ich persönlich Raspi-Bare-Metal- > Programmierung jedenfalls bezüglich der Sinnhaftigkeit noch über > Briefmarkensammeln und Angeln einordnen. Beim Angeln kann man das Ergebnis wenigstens grillen und verspeisen.
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.