Was braucht es, um Linux auf Arduino zu kompilieren, wenn es überhaupt möglich ist?

Ist es möglich, Linux auf Arduino auszuführen? Wenn ja, welche Schritte und Einschränkungen müssen berücksichtigt werden? Wenn nicht, welche Einschränkungen verhindern dies?

Kommentare

Antwort

Linux ist ein sehr komplexes Betriebssystem, das jedoch möglicherweise auf ein Arduino passt. Zu beachtende Punkte:

  • Es gibt keinen aktuellen AVR-Port des Quellcodes.
  • Sie hätten keine Grafiken, greifen stattdessen über UART auf das Terminal zu.
  • Der Dateisystemtreiber müsste neu geschrieben werden, um auf internen Flash oder eine externe SD-Karte zugreifen zu können.
  • Es wäre extrem langsam! Der ATmega328 würde mit 16 MHz oder maximal 20 MHz (übertaktet) betrieben. Die meisten Linux-Maschinen laufen mit mindestens 400 MHz und mehr mit Grafik.
  • Sie würden wahrscheinlich zusätzlichen RAM benötigen, wahrscheinlich eine gute Idee, um einen ATmega2650 (den im Mega) mit 16 zu verwenden mal das RAM des Uno. Sie können auch einen Due verwenden (6x so schnell wie der Uno, mehr RAM).
  • Möglicherweise müssen Sie spezielle USB-Treiber für OTG (auf dem Due) oder MAX3421EE (Mega ADK, USB-Hostschild) schreiben. .

Kurz gesagt, es würde viel Zeit und Mühe kosten und wäre wahrscheinlich zu langsam für den täglichen Gebrauch. Wenn Sie Arduino Linux wirklich wollen, schauen Sie sich das Yún an.

Kommentare

  • Sie würden nicht “ wahrscheinlich “ benötigen Sie zusätzlichen RAM, benötigen Sie zusätzlichen RAM. Linux benötigt 1 MB + RAM. Das Fehlen einer MMU würde auch bedeuten, dass Sie ‚ herausfinden müssen, wie Sie eine emulieren (oder ucLinux ausführen). Realistisch gesehen würden Sie bestenfalls ‚ einen leistungsfähigeren Prozessor in der Atmosphäre emulieren, der um eine Größenordnung langsamer wäre als nativer Code. Selbst das fällige Arduino ‚ hat nicht annähernd den erforderlichen RAM.
  • Außerdem verfügt der ATmega328P über 2 KB SRAM und der ATmega2560P nur über 8 KB. Das ist nur 4X der RAM, nicht 16x.

Antwort

Es hat einfach nicht genug RAM. Sie müssen ihm auch das Booten aus dem Flash-Speicher beibringen, was das Umschreiben des Bootloaders erfordern würde.

Sie können stattdessen ein Arduino Yun oder ein PCDuino ; Obwohl dies keine „Standard“ -Arduinos sind, unterstützen diese Arduino-Shields und führen Linux aus.

Oder es gibt immer den Raspberry Pi .

Kommentare

  • Warum ist Yun nicht “ Standard “ Arduino? Ich bin damit einverstanden, dass es nicht das häufigste ist, aber es ist in der Tat ein Arduino.
  • @jfpoilpret Die meisten Arduinos sind Atmega-Boards, die kompiliertes C ++ über avr-gcc ausführen und über einen USB-Handling-Chip verfügen kommen in verschiedenen Formen / Größen / Kräften, aber sie ‚ sind im Wesentlichen gleich (Mega beiseite). Es schien ziemlich offensichtlich, dass das OP über diese sprach und nicht über Yun / etc, daher die Unterscheidung.
  • Es gibt ‚ auch die bald erscheinende Arduino Tre , zumindest ich ‚ hoffe, dass ‚ bald ist 😉

Antwort

Die kurze Antwort lautet Nein.

Basicall y, Sie würden VIEL mehr RAM benötigen, als selbst der größte ATmega nativ hat.

Es ist theoretisch möglich, externe Hardware hinzuzufügen und den ATmega so zu programmieren, dass er eine leistungsstärkere CPU emuliert. und Linux darauf ausführen. Auf einem einfachen Arduino ist dies jedoch nicht möglich.

Es wäre viel realistischer, Linux auf einem Arduino Due auszuführen, bei dem es sich im Grunde um eine AT91SAM3X8E-CPU handelt. Sie müssten jedoch noch zusätzlichen SRAM und Speicher hinzufügen.

Es gibt Dinge wie das Arduino Yun, aber das ist wirklich ein völlig separates Linux-Modul auf derselben Platine wie ein ATmega32U4, also ziehe ich an „Ich weiß nicht, ob Sie es wirklich als Arduino zählen können.


Möglicherweise relevant: Was ist erforderlich, um Embedded Linux auszuführen?

Antwort

Es gibt eine Karte mit dem Namen pcDuino das mehrere Linux-Varianten wie Debian, Ubuntu, Open WRT, LEDE und Raspian PIXEL ausführen kann (um nur einige zu nennen). Dieses Board ist kein natives Arduino, sondern Arduino AtHeart und wird von LinkSprite erstellt.
pcDuino

Arduino verfügt über einige Boards, die das Ausführen einer Variante unterstützen von Linux mit dem Namen Linino :

  • Die Arduino Yún ist eine Mikrocontroller-Karte, die auf dem ATmega32u4 und dem Atheros AR9331 basiert.Der Atheros-Prozessor unterstützt eine Linux-Distribution auf Basis von OpenWrt mit dem Namen Linino OS. Die Karte verfügt über integrierte Ethernet- und WiFi-Unterstützung, einen USB-A-Anschluss, einen Micro-SD-Kartensteckplatz, 20 digitale Ein- / Ausgangspins (7 davon können als PWM-Ausgänge und 12 als analoge Eingänge verwendet werden) und einen 16-MHz-Quarz Oszillator, eine Micro-USB-Verbindung, ein ICSP-Header und 3 Reset-Tasten.
  • Das neue Arduino Tian Board wird von Atmels SAMD21 MCU mit einem 32-Bit ARM Cortex® M0 + Kern und einem Qualcomm Atheros AR9342 angetrieben Dies ist ein hochintegrierter MIPS-Prozessor mit bis zu 533 MHz und einem funktionsreichen IEEE802.11n 2×2 2,4 / 5-GHz-Dualband-WLAN-Modul. Qualcomm Atheros MIPS unterstützt eine Linux-Distribution, die auf OpenWRT namens Linino basiert. Der Arduino Tian verfügt außerdem über einen integrierten 4-GB-eMMC-Speicher, der beim Erstellen Ihrer Projekte hilfreich sein kann. Es ist möglich, den Linux-Port von der MCU aus ein- und auszuschalten, um den Stromverbrauch zu senken.
  • Arduino Industrial 101 ist eine Evaluierungskarte für Arduino 101 LGA Modul. Der ATmega32u4-Mikrocontroller ist in das Baseboard integriert. Das Modul unterstützt eine auf OpenWRT basierende Linux-Distribution namens LininoOS. Die Karte verfügt über integriertes WLAN (IEEE 802.11b / g / n-Betrieb bis zu 150 Mbit / s 1×1 2,4 GHz), 3 GPIOs (von denen 2 als PWM-Ausgänge verwendet werden können), 4 Analogeingänge, 1 USB- und 1 Ethernet-Signal an Pin Header und ein eingebauter DC / DC-Wandler. Lesen Sie die Montageanleitung und schließen Sie Ihr Board einfach mit einem Micro-USB-Kabel an einen Computer an, um loszulegen.

Antwort

Dies ist mehrere Jahre alt, aber möglicherweise relevanter, da Arduinos mehr RAM und 32-Bit-ATMega erhalten AVRs usw. Es gibt ein offensichtliches Problem, insbesondere nicht in der beliebtesten Antwort. Der Arduino verwendet einen AVR MICROCONTROLLER , kein MIKROPROZESSOR. Dies ist ein Hauptgrund, warum es keinen Linux-Port gibt. Mikrocontroller sind für die Ausführung einer bestimmten Aufgabe ausgelegt, Anwendungen, bei denen das Verhältnis von Eingabe und Ausgabe genau definiert ist. Mikroprozessoren sind für die Ausführung ausgelegt Eine Vielzahl von Apps auf Betriebssystemen. Denken Sie daran, dass Linux von Anfang an eine Speicherverwaltungseinheit benötigte und nicht auf 8088- oder 286-PCs ausgeführt werden konnte. Dann gab es μClinux, das ursprünglich auf die Motorola DragonBall-Familie eingebetteter 68k-Prozessoren für Palm Pilots abzielte Es war nie besonders erfolgreich. Sie haben vielleicht mehr Erfolg beim Portieren von FreeDOS oder sogar Minix als Linux, vielleicht etwas in Assembler, aber co Das Speichern eines Betriebssystems auf einem Mikrocontroller ist sehr unpraktisch. Vielleicht ist es ein herausforderndes akademisches Problem, aber es widerspricht speziell dem Zweck, einen Mikrocontroller anstelle eines Mikroprozessors zu verwenden.

Antwort

Es ist möglich, aber es wäre ein Schmerz, weil Sie es in C schreiben müssten (ganz zu schweigen von der zusätzlichen Hardware, die wie ein SD-Kartenschild und zusätzliche Speicherchips benötigt wird). So etwas wie Ontas, ein Kernel, in den ich geschrieben habe C für das Arduino würde helfen, da es das Hinzufügen von Treibern unterstützt, auf Kosten einer langsameren Wiederholung der Void-Loop-Funktion. (Dies ist keine so große Sache, wie Sie vielleicht denken) (Ontas befindet sich noch in der Entwicklung und Es werden ständig neue Funktionen hinzugefügt.

Klicken Sie hier, um den Link zum .ino und den zugehörigen .h-Dateien zu erhalten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.