Aufschlüsselung des uCLinux-Fußabdrucks?

Eine andere Frage, die ich gestellt habe, veranlasste mich, diese Frage zu stellen. Die vorherige Frage betraf das Einpassen von Linux in Cortex M3. Ein paar gute Antworten bewiesen, dass es nicht machbar ist. Jemand schlug ucLinux vor. Ich habe uClinux als Alternative recherchiert.

Ich habe eine entscheidende Frage, den Fußabdruck von uClinux. Ich habe mich umgesehen, um eine Aufschlüsselung der Anforderungen zu finden, es gibt keine netten Infos im Netz. Die interessierenden Module sind:

  • Kernel
  • TCPIP-Stack
  • Serieller Treiber
  • DHCP
  • WiFi-Unterstützung (alle Stacks von Anbietern sind in Ordnung)

Ich suche nach RAM/Flash-Aufschlüsselung. Ich brauche kein Dateisystem, aber es besteht die Möglichkeit, dass ich es aufgrund des Treibermodells von Linux brauche.

Bonusfrage: - Portierung von Treibern von Linux nach uClinux. Ich weiß, dass die Speicherarchitektur anders ist. In Anbetracht der Tatsache, dass der Treiber nichts Besonderes im Hinblick auf den Speicher tut, könnte ich den Treiber einfach neu kompilieren und erwarten, dass er unter uClinux funktioniert?

Ich habe in STM32-Foren einige Informationen gefunden, dass das komprimierte Bild etwa 300 KB und das unkomprimierte etwa 600 KB groß ist. RAM-Bedarf ist unklar..
Die genauen Zahlen hängen von Ihrem Compiler ab. Was benutzt du? GCC?
@Kevin-vermeer ja, ich benutze GCC. Eigentlich kann ich Keil oder etwas anderes verwenden. Für die Zwecke dieser Diskussion können wir jedoch gcc annehmen.

Antworten (1)

Beachten Sie, dass uClinux eng mit Linux verwandt ist; Vom Kernel her ist es nur ein Patch gegen den Standard-Linux-Quellbaum.

Ab Version 2.6.26 fügt der Patch Maschinenunterstützung für einige der m68k-Boards sowie einige Änderungen an einigen Treibern hinzu, die für diese Boards relevant sind. Für ARM-Plattformen wird Ihnen der uClinux-Patch jedoch wahrscheinlich keinen Nutzen bringen, da er keinen ARM-Code berührt.

Die für einen Standard-Linux-Kernel angegebenen Zahlen gelten also auch für uClinux.

Sie finden genau die gleichen Treiber wie für den Standard-Linux-Kernel, sodass Sie keine Portierung vornehmen müssen.

Bonus-Bonus-Antwort: Wenn Sie nicht auf ein externes Speichergerät zugreifen (und Ihr Root-Dateisystem in das Kernel-Image integriert haben), benötigen Sie kein Dateisystem.

vielen Dank. Die Idee ist, vorhandene Linux-Treiber zu verwenden und sich nicht mit der Portierung auf das von uns verwendete RTOS zu beschäftigen. Deshalb beschäftige ich mich mit Linux. Es scheint jedoch, dass die Größe von uClinux mit den On-Chip-Ressourcen von Cortex M3 unerschwinglich ist.
@Frank - Ja, Cortex M3 ist nicht für Linux konzipiert und Linux ist nicht für Cortex M3 konzipiert. Gibt es einen besonderen Grund, warum Sie wirklich an dieser Klasse von Chips hängen? Es scheint ein wenig klein für Ihre Anwendung....
@ Kevin-vermeer, im Grunde zwei Gründe, warum ich diese Chips mag. Der ADC auf ihnen ist wirklich gut, 12bit, 2Msamples/sec. Ich konnte keinen angemessenen Preis für meine App finden. Der ADC war wirklich der treibende Faktor. Ich verwende STM32F2. Allerdings muss ich einen WiFi-Treiber auf diese Plattform portieren und es stellt sich heraus, dass es ein Schmerz im Rücken ist. Ich suche einen einfachen Ausgang. Daher fummele ich mit ucLinux herum, weil all diese Treiber unter Linux verfügbar sind und es einige Zeit dauern wird, sie auf rtos zu portieren.