Hallo, ich hab hier ein paar ältere STM32-Boards, bspw. STM32F429I-Discovery. Soweit ich gesehen habe, kann man da auch Linux (natürlich abgespeckt) verwenden. Als Windows-User fehlt mir nun das Wissen wie ich da am besten vorgehe. Was ich (zum Schluss) gerne hätte wäre eine Umgebung, aus der heraus ich das Linux selbst als auch dann entsprechend Programme für die Boards erstellen kann. Wobei sich das vermutlich automatisch ergibt. Zu erwähnen ist vielleicht noch, dass ich mich dann gaaanz am Ende der Lernkurve mit Linux-Treiberentwickung für eingebettete Systeme beschäftigen möchte. Den Artikel zu Linux auf STM32 hier in der Artikelsammlung kenne ich und er ist wohl auch für das o.g. Board verwendbar. Aber der Artikel ist m.E. leider nur sehr rudimentär und aufgrund des Alters vielleicht auch überholt, das kann ich mangels Wissens leider nicht beurteilen. Wie gehe ich da nun vor? Soweit ich es verstanden habe, benötige ich eine Linux-Umgebung zum compilieren, etc. Hierzu habe ich (bisher) zwei Möglichkeiten gefunden, um das unter Windows zu machen: 1) virtuelle Maschine mit einer Linux-Installation 2) CygWin unter Windows Hab ich das soweit richtig verstanden? In Variante 1 hätte ich den Vorteil, dass alles gekapselt ist und ich in der VM machen kann was ich will. Bei #2 bin ich mir nicht sicher, ob da dann noch weitere Programme unter Windows zu installieren sind. Wie gut es dann funktioniert, über die VM auch zu debuggen, weil ja der STLink durchgeschleift werden muss, weiß ich nicht. Den Nachteil habe ich vermutlich bei #2 nicht, weil das ja "direkt" unter Windows läuft, oder? Eine dritte Variante, die mir durch den Kopf ging, wäre ein Raspberry PI. Den hab ich kürzlich geschenkt bekommen und da läuft ja auch Linux drauf. Hatte ich allerdings (erstmal) verworfen. Wenn es damit aber auch gehen würde, sehe ich den Vorteil darin, dass ich auch gleich Pogramme für den PI schreiben könnte, also alles auf einer Plattform. Um das Linux selbst dann bauen zu können, habe ich Tools wie z.B. Yocto oder buildroot gefunden. Mit denen soll es wohl auch gehen, Linux für STM32 zu bauen. Eine bestimmte IDE habe ich bisher nicht im Sinn, speziell für STM32 nutze ich unter Windows STM32CubeIDE. Ich weiß, dass ich unter Linux wohl besser dran bin, wenn ich mich gleich mal mit der Konsole vertraut mache :) Das scheint wohl der übliche Weg zu sein - also MakeFiles und Compiler-/Linkerscripte etc. selber zu schreiben. Das was unter Windows bzw. früher DOS eben die Batchdatei ist. Da sehe ich auch kein (großes) Problem, nur wäre es evtl. geschickt, wenn ich trotzdem eine IDE "oben drüber" habe, mit der ich zumindest am Anfang um die Konsole drumrum komme. Also kurzum, ist das o.g. ein praktikabler Weg bzw. gibt's Empfehlungen dafür/dagegen oder weitere Alternativen? Was brauch ich noch alles dazu, um ans Ziel zu kommen? Gruß Ralf
Willst du jetzt Linux auf dem stm32 laufen lassen oder einen stm32 von Linux aus programmieren?
Hier ist eine Auflistung nützlicher Referenzen. https://elinux.org/STM32 Benutze auf jeden Fall ein Linuxsystem zum bauen, ob auf dem RasPi (dauert sehr lange) oder als Virtuelle Machine. Besser wäre natürlich wenn du dich von Windows verabschiedest. CygWin verursacht mehr Probleme als es löst. Buildroot ist das mittel der Wahl, yocto ist deutlich komplexer. Für den Einstieg würde ich an deiner Stelle mit Buildroot erstmal Images für deinen RasberryPi bauen, da das besser unterstützt ist. Buildroot hat meines Wissens nach Upstream auch Support für eine STM32. Bevor du dich um die Entwicklung eigener Software Gedanken machst, und die dazu passende IDE, versuche erstmal nur das Linuxsystem zu booten. Wenn es dein Anspruch ist mehr über embedded Linux zu erfahren, insb. im Hinblich auf Treiberentwicklung, würde ich dir explizit nicht den STM32 empfehlen. Da den kleinen Cortex-M Cores die MMU fehlt und der Speicher doch extrem knapp ist, hat das nicht wirklich mit "normalen" embedded linux system zu tun. Da ist die Klasse der Single-Board-Computer mit Cortex-A Kernen der Standard.
Ralf schrieb: > Soweit ich gesehen habe, kann man da auch Linux (natürlich abgespeckt) > verwenden. Können kann man schon. Wollen will man aber nicht.
xyz schrieb: > Willst du jetzt Linux auf dem stm32 laufen lassen... Ja. > ... oder einen stm32 von Linux aus programmieren? Ohne Linux auf dem STM32: nein. Für bare-metall hab ich ja schon die Windows-Umgebung :) Mit Linux auf dem STM32 macht es aber m.E. keinen Sinn, die Programme dann separat auf Windows zu erstellen, also auch ja. samuel schrieb: > Hier ist eine Auflistung nützlicher Referenzen. > https://elinux.org/STM32 Danke :) > Benutze auf jeden Fall ein Linuxsystem zum bauen, ob auf dem RasPi > (dauert sehr lange) oder als Virtuelle Machine. Besser wäre natürlich > wenn du dich von Windows verabschiedest. Nur dafür von Windows verabschieden ist keine Option ;) Dann lieber VM. > CygWin verursacht mehr Probleme als es löst. Oh, so schlimm? > Buildroot ist das mittel der Wahl, yocto ist deutlich komplexer. Für den > Einstieg würde ich an deiner Stelle mit Buildroot erstmal Images für > deinen RasberryPi bauen, da das besser unterstützt ist. Buildroot hat > meines Wissens nach Upstream auch Support für eine STM32. Okay. > Bevor du dich um die Entwicklung eigener Software Gedanken machst, und > die dazu passende IDE, versuche erstmal nur das Linuxsystem zu booten. Ja, das ist freilich der erste Schritt, alles andere macht keinen Sinn. > Wenn es dein Anspruch ist mehr über embedded Linux zu erfahren, insb. im > Hinblich auf Treiberentwicklung, würde ich dir explizit nicht den STM32 > empfehlen. Da den kleinen Cortex-M Cores die MMU fehlt und der Speicher > doch extrem knapp ist, hat das nicht wirklich mit "normalen" embedded > linux system zu tun. Da ist die Klasse der Single-Board-Computer mit > Cortex-A Kernen der Standard. Okay. Ich dachte eben, ein kleines System zu haben, auf dem man mal einfach mal Linux anschauen kann, ist hilfreich. Ich könnte ja später dann auf Raspberry PI umsteigen und dort dann die Treiberentwicklung angehen, wenn ich deinen Hinweis umsetze. Frank schrieb: >> Soweit ich gesehen habe, kann man da auch Linux (natürlich abgespeckt) >> verwenden. > Können kann man schon. Wollen will man aber nicht. Als jemand der Linux kaum kennt bin ich da erstmal neutral unterwegs ;) Gruß Ralf
Nochmal zur Klarstellung. Linux auf dem STM32 ist möglich, aber nicht sinnvoll. Der einzige Grund so was zu machen, ist der Anspruch Linux auf einer nicht dafür entworfenden Plattform gestartet zu bekommen. Sinnvoll nutzen kann man es nicht. Daher ist es um Linux kennenzulernen keine gute Idee. Viele Funktionen stehen auch gar nicht zu Verfügung. Zu reinen Lernzwecken nimm doch bitte ein gut unterstütztes Board, z.B. ein Beaglebone Black oder deinen Raspberry Pi. Da ist dann auch die Nutzung von Qemu während der Entwicklung einfacher.
viele hier haben ja schon ein Problem damit Herstellerbibliotheken auf dem µC einzusetzen, und dann auch noch Linux... Dafür sind doch die Cortex-A, von den Abmessungen her auch nicht viel grösser aber dafür können die noch mehr Speicher und den auch mit MMU verwalten. MicroPython hat eine wachsende Fangemeinde, ist zwar kein komplettes OS, geht schon so in die Richtung. Und es gibt viele für Cortex-M passende OS die dann auch einer Applikation noch Luft lassen.
@samuel: Hmmm... okay, wie lautet nun also die Empfehlung? 1) Linux in VM => um den Kernel & Co i.V.m. mit buildroot bauen zu können => welche Distribution? => QEMU als VM verwenden? Ich kenne bisher nur VirtualBox 2) Als Plattform Raspberry & gleichwertiges verwenden Wäre das deine Empfehlung? So hab ich es zumindest rausgehört. @Johannes S. > viele hier haben ja schon ein Problem damit Herstellerbibliotheken auf > dem µC einzusetzen, und dann auch noch Linux... Dafür sind doch die > Cortex-A, von den Abmessungen her auch nicht viel grösser aber dafür > können die noch mehr Speicher und den auch mit MMU verwalten. Definiere "Problem": Schwierigkeiten oder Abneigung? > Und es gibt viele für Cortex-M passende OS die dann auch einer > Applikation noch Luft lassen. Du meinst bspw. FreeRTOS und Co.? Ralf
Ralf schrieb: > Definiere "Problem": Schwierigkeiten oder Abneigung? Du liest hier noch nicht lange mit? STM HAL, ein gerne diskutiertes Thema hier. Eher Abneigung weil diese Software auch ihre Entwicklungsgeschichte hat. Ralf schrieb: > Du meinst bspw. FreeRTOS und Co.? Jepp. Persönlich bin ich mit Mbed glücklich, das läuft auf den meisten Cortex-M und ist nicht wie FreeRTOS nur der RT Kernel, sondern hat auch die Treiber für Peripherie und höhere Level wie Dateisysteme, Ethernet, USB. Für die STM32 nutzt Mbed auch die HAL/LL, da kann man Code für fehlende Teile per CubeMX generieren lassen und integrieren. Mbed hat ein C++ API, da ist es nur etwas Arbeit wenn man den CubeMX Code in Klassen umwandeln möchte.
Johannes S. schrieb: >> Definiere "Problem": Schwierigkeiten oder Abneigung? > Du liest hier noch nicht lange mit? Oh doch :) > STM HAL, ein gerne diskutiertes Thema hier. Eher Abneigung weil diese > Software auch ihre Entwicklungsgeschichte hat. Genau die ST HAL ging mir durch den Kopf, als ich es gelesen hatte, aber ich war mir nicht sicher ob du genau das meinst - ich hatte mit der HAL schon diverse Male mein Vergnügen. >> Du meinst bspw. FreeRTOS und Co.? > Jepp. Persönlich bin ich mit Mbed glücklich, das läuft auf den meisten > Cortex-M und ist nicht wie FreeRTOS nur der RT Kernel, sondern hat auch > die Treiber für Peripherie und höhere Level wie Dateisysteme, Ethernet, > USB. > Für die STM32 nutzt Mbed auch die HAL/LL, da kann man Code für fehlende > Teile per CubeMX generieren lassen und integrieren. Mbed hat ein C++ > API, da ist es nur etwas Arbeit wenn man den CubeMX Code in Klassen > umwandeln möchte. Hört sich interessant an. Und meine STM32-Boards hätten deiner Aussage immerhin noch eine Chance :) Ralf
Ralf schrieb: > 1) Linux in VM > => um den Kernel & Co i.V.m. mit buildroot bauen zu können > => welche Distribution? > => QEMU als VM verwenden? Ich kenne bisher nur VirtualBox > 2) Als Plattform Raspberry & gleichwertiges verwenden > > Wäre das deine Empfehlung? So hab ich es zumindest rausgehört. 1) Eine Linux VM, Betriebssystem ist fast egal. Mit Ubuntu kann man nichts falsch machen. Gerne mit Virtualbox, ist die simpelste Lösung. Damit kannst du dann rootfs und kernel in Buildroot bauen. Mit Qemu bezog ich mich auf die Möglichkeit den mit Buildroot erstellen Kernel + Rootfs erst mal in einer VM mit Qemu zu testen. Dann muss man nicht jedes mal die Hardware neu starten, bei kleinen Änderungen. Als Zielsystem würde ich für die ersten Versuche anstatt des STM32 Boards den RasberryPi nutzen. Wenn du dann in Buildroot fit bist, und auch eigenen Software damit entwickelt hast, kannst du es anschließend mit dem STM32 versuchen.
32F429IDISCOVERY : 2Mbytes Flash, 256KBytes Ram. Dazu noch 8Mbytes SD-Ram. Und damit möchstest du als Anfänger Linux laufen lassen? Nimm den Raspi, beschäftige dich ein bis zwei Jahre damit. Auch auf dem Raspi kann man Treiber-Entwicklung machen. Und wenn du dann die Anforderungen kennst, überlege noch einmal, ob du Linux wirklich auf einem 32F429 installieren möchtest. Das ist was für Profis und Spezialisten.
von Frank (Gast) 04.07.2020 11:06 >Ralf schrieb: >> Soweit ich gesehen habe, kann man da auch Linux (natürlich abgespeckt) >> verwenden. >Können kann man schon. Wollen will man aber nicht. Ach komm, jetzt sei doch nicht so kleinlich, wo das ganze doch locker auf einem Atmega läuft: https://hackaday.com/2012/03/28/building-the-worst-linux-pc-ever/
Wenn es denn ein STM32 sein soll, kannst du dich auch an den verhältnismäßig neuen STM32MPxxx versuchen. Die haben einen Cortex-A, darauf läuft Linux generisch. Allerdings sind die Demoboards für ST-Verhältnisse teuer: https://www.st.com/en/evaluation-tools/stm32mp157c-ev1.html#sample-and-buy Was ist denn wichtig? * Der Mikrocontroller? Dann wäre es sinnvoll, einen Blick auf die diversen Embedded OS zu werfen (FreeRTOS, EmbOS, ChibiOS, ...). * Linux? Dann entweder wie oben empfohlen den RPi verwenden oder ein anderes Board mit einem Rechner, der eine MMU hat (ARM7, Cortex-A oder auch x86 - ja, es gibt noch viel mehr). Die von dir beschriebene Kombi ist eher die elektronische Version von https://www.quaeldich.de/ (die Seite gibt es!).
samuel schrieb: > Nochmal zur Klarstellung. > Linux auf dem STM32 ist möglich, aber nicht sinnvoll. Der einzige Grund > so was zu machen, ist der Anspruch Linux auf einer nicht dafür > entworfenden Plattform gestartet zu bekommen. Sinnvoll nutzen kann man > es nicht. Daher ist es um Linux kennenzulernen keine gute Idee. Viele > Funktionen stehen auch gar nicht zu Verfügung. hier würde mich mal folgendes interessieren: wenn es unbrauchbar ist, wieso existiert es denn? warum macht sich jemand die Mühe? offenbar gab oder gibt es einen use case. Oder ist es nur zum Spielen? aber was will man damit anfangen wenn es nicht nutzbar ist? mich würde das Thema auch interessieren. Habe vor über 10 Jahren auf einem ARM7TDMI-S selbstbau Board mit 70MHz ein Linux 2.6 zum laufen gebracht. Weil ich Filesysteme und Netzwerk nutzen wollte. Leider weiss ich die einzelnen Schritte nicht mehr und müsste wieder auf der grünen Matte beginnen :-(
Tobias P. schrieb: > hier würde mich mal folgendes interessieren: wenn es unbrauchbar ist, > wieso existiert es denn? warum macht sich jemand die Mühe? offenbar gab > oder gibt es einen use case. Oder ist es nur zum Spielen? aber was will > man damit anfangen wenn es nicht nutzbar ist? Als "Beweis" was so alles möglich ist.
Max G. schrieb: > Wenn es denn ein STM32 sein soll, kannst du dich auch an den > verhältnismäßig neuen STM32MPxxx versuchen. Die haben einen Cortex-A, > darauf läuft Linux generisch. > Allerdings sind die Demoboards für ST-Verhältnisse teuer: > https://www.st.com/en/evaluation-tools/stm32mp157c-ev1.html#sample-and-buy > Gibbet auch billiger: https://www.st.com/en/evaluation-tools/stm32mp157a-dk1.html#sample-buy
Tobias P. schrieb: > wenn es unbrauchbar ist, wieso existiert es denn? Vor vielen, vielen Monden gab es mit uClinux eine Portierung von Linux auf MMU-lose Architekturen, zum Beispiel m68k, ARM7 oder i960. Eine bekannte Hardware war das uCsimm (m68k, 2 MB Flash, 8 MB RAM). Irgendwann wurde diese Funktionalität als NOMMU in den normalen Kernel integriert, allerdings ist die damalige Hardware einfach zu klein für heutige Kernel. Die moderne Basishardware für die NOMMU-Entwicklung sind eben die STM32, weil sie einfach verfügbar und groß genug für moderne Kernel sind. Man kann darauf sinnvoll Linux laufen lassen (zumindest so sinnvoll, wie NOMMU eben ist). Tobias P. schrieb: > Habe vor über 10 Jahren auf einem ARM7TDMI-S selbstbau Board > mit 70MHz ein Linux 2.6 zum laufen gebracht. Weil ich Filesysteme > und Netzwerk nutzen wollte. Und genau da hast du deinen Usecase. Daran hat sich seit uClinux mit Kernel 2.0 nichts geändert. Außer vielleicht, dass heutzutage billige und schnelle MMU-Hardware verfügbar ist, die es damals nicht gab.
:
Bearbeitet durch User
S. R. schrieb: > Tobias P. schrieb: >> Habe vor über 10 Jahren auf einem ARM7TDMI-S selbstbau Board >> mit 70MHz ein Linux 2.6 zum laufen gebracht. Weil ich Filesysteme >> und Netzwerk nutzen wollte. > > Und genau da hast du deinen Usecase. > Daran hat sich seit uClinux mit Kernel 2.0 nichts geändert. > > Außer vielleicht, dass heutzutage billige und schnelle MMU-Hardware > verfügbar ist, die es damals nicht gab. Ich finde man muss fairerweise dazu sagen, dass es zu "Kernel 2.0"-Zeiten auch noch nicht so viele Alternativen gab. Heute gibt es z.B. Nuttx, was gewissermaßen ein Mini-Linux für NOMMU-Hardware ist. Dateisysteme, Netzwerk, usw. sind da ebenfalls mit dabei. Habe letztens erst einen Vortrag eines Sony-Mitarbeiters gesehen, der für Rust die libstd von Linux auf Nuttx portiert hatte. Das war ohne größere Verrenkungen möglich.
Christopher J. schrieb: > Ich finde man muss fairerweise dazu sagen, dass es zu "Kernel > 2.0"-Zeiten auch noch nicht so viele Alternativen gab. Da hast du natürlich vollkommen recht.
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.