Wat is er nodig om Linux op Arduino te compileren, als het enigszins mogelijk is?

Is het mogelijk om Linux op Arduino te draaien? Zo ja, welke stappen en beperkingen moeten worden overwogen? Zo nee, wat zijn de beperkingen die dit voorkomen?

Reacties

Antwoord

Linux is een zeer complex besturingssysteem, maar het kan mogelijk op een Arduino passen. Dingen om te overwegen:

  • Er is geen huidige AVR-poort van de broncode.
  • Je zou geen afbeeldingen hebben, in plaats daarvan toegang krijgen tot de terminal via UART.
  • Het stuurprogramma van het bestandssysteem zou moeten worden herschreven om toegang te krijgen tot de interne flash of een externe SD-kaart.
  • Het zou extreem traag zijn! De ATmega328 zou werken op 16 MHz, of ongeveer 20 MHz max (overklokt). De meeste Linux-machines draaien op minimaal 400 MHz, en meer met grafische kaarten.
  • Je hebt waarschijnlijk wat extra RAM nodig, waarschijnlijk een goed idee om een ATmega2650 te gebruiken (die in de Mega), die 16 maal de RAM van de Uno. U kunt ook een Due gebruiken (6x zo snel als de Uno, meer RAM).
  • Mogelijk moet u speciale USB-stuurprogrammas schrijven voor OTG (op de Due) of MAX3421EE (Mega ADK, USB-hostschild) .

Kortom, het zou veel tijd en moeite kosten, en zou waarschijnlijk te traag zijn voor dagelijks gebruik. Als je echt Arduino Linux wilt, bekijk dan de Yún.

Reacties

  • Je zou niet ” waarschijnlijk ” heeft extra ram nodig, u wel heeft extra ram nodig. Linux vereist 1 MB + RAM. Ook zou het ontbreken van een MMU betekenen dat je ‘ moet uitzoeken hoe je er een moet emuleren (of ucLinux moet draaien). Realistisch gezien zou je ‘ op zijn best eindigen met het emuleren van een beter capabele processor in de atmega, wat een orde van grootte langzamer zou zijn dan native code. Zelfs de Arduino heeft geen ‘ het vereiste RAM-geheugen.
  • Ook heeft de ATmega328P 2 KB SRAM en de ATmega2560P heeft slechts 8 KB. Dat is maar 4x de ram, niet 16x.

Antwoord

Het heeft gewoon niet genoeg RAM. Je “zou het ook moeten leren om op te starten vanuit flash-geheugen, wat zou betekenen dat de bootloader moet worden herschreven.

Je kunt in plaats daarvan een Arduino Yun a gebruiken. > of een PCDuino ; hoewel het geen “standaard” Arduinos zijn, ondersteunen deze Arduino-schilden en draaien ze Linux.

Of er is altijd de Raspberry Pi .

Reacties

  • Waarom zeg je dat Yun niet ” standaard ” Arduino? Ik ben het ermee eens dat het misschien niet de meest voorkomende is, maar het is inderdaad een Arduino.
  • @jfpoilpret De meeste Arduinos zijn atmega-boards die gecompileerde C ++ draaien via avr-gcc en hebben een USB-chip. zijn er in verschillende vormen / maten / vermogens, maar ze ‘ zijn in wezen hetzelfde (Mega terzijde). Het leek vrij duidelijk dat het OP het hierover had en niet de Yun / etc, vandaar het onderscheid.
  • Daar ‘ zijn ook de binnenkort te verschijnen Arduino Tre , ik ‘ m hoop dat het binnenkort ‘ s 😉

Antwoord

Het korte antwoord is nee.

Basicall y, je zou VEEL meer ram nodig hebben dan zelfs de grootste ATmega native heeft.

Het is theoretisch mogelijk om externe hardware toe te voegen, en de ATmega te programmeren om een krachtigere CPU te emuleren, en draai daar linux op. Op een gewone arduino is dit echter niet mogelijk.

Het zou veel realistischer zijn om linux te draaien op een Arduino Due, wat in feite een AT91SAM3X8E CPU is. Je moet echter nog steeds wat extra SRAM en opslag toevoegen.

Er zijn dingen zoals de Arduino Yun, maar dat is echt een volledig aparte linux-module op dezelfde printplaat als een ATmega32U4, dus ik “Ik weet niet of je het echt als een arduino kunt tellen.


Mogelijk relevant: Wat is er nodig om embedded linux te draaien?

Antwoord

Er is een bord genaamd de pcDuino die meerdere varianten van Linux kunnen draaien, zoals Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (om er maar een paar te noemen). Dit bord is geen native Arduino, maar Arduino AtHeart , en is gemaakt door LinkSprite .
pcDuino

Arduino heeft een aantal kaarten die het uitvoeren van een variant ondersteunen van Linux genaamd Linino :

  • De Arduino Yún is een microcontroller board gebaseerd op de ATmega32u4 en de Atheros AR9331.De Atheros-processor ondersteunt een Linux-distributie gebaseerd op OpenWrt genaamd Linino OS. Het bord heeft ingebouwde Ethernet- en WiFi-ondersteuning, een USB-A-poort, micro-SD-kaartsleuf, 20 digitale invoer- / uitvoerpinnen (waarvan 7 kunnen worden gebruikt als PWM-uitgangen en 12 als analoge ingangen), een 16 MHz-kristal oscillator, een micro-USB-aansluiting, een ICSP-header en 3 resetknoppen.
  • Het nieuwe Arduino Tian -bord wordt aangedreven door Atmels SAMD21 MCU, met een 32-bits ARM Cortex® M0 + -kern en een Qualcomm Atheros AR9342 , een sterk geïntegreerde MIPS-processor die werkt op maximaal 533 MHz en een IEEE802.11n 2×2 2,4 / 5 GHz dual-band WiFi-module boordevol functies. Qualcomm Atheros MIPS ondersteunt een Linux-distributie, gebaseerd op OpenWRT genaamd Linino. De Arduino Tian heeft ook een ingebouwd 4GB eMMC-geheugen dat nuttig kan zijn bij het bouwen van uw projecten. Het is mogelijk om de Linux-poort van de MCU AAN / UIT te zetten om het stroomverbruik te verminderen.
  • Arduino Industrial 101 is een evaluatiebord voor Arduino 101 LGA-module. De ATmega32u4-microcontroller is geïntegreerd in de plint. De module ondersteunt een Linux-distributie gebaseerd op OpenWRT genaamd LininoOS. Het bord heeft ingebouwde wifi (IEEE 802.11b / g / n-bewerkingen tot 150 Mbps 1×1 2,4 GHz), 3 GPIOs (waarvan 2 kunnen worden gebruikt als PWM-uitgangen), 4 analoge ingangen, 1 USB, 1 Ethernet-signaal op pin headers en een ingebouwde DC / DC-converter. Bekijk de montagehandleiding en sluit je bord eenvoudig aan op een computer met een micro-USB-kabel om aan de slag te gaan.

Antwoord

Dit is een aantal jaren oud, maar misschien relevanter omdat Arduinos meer RAM en 32 bit ATMega krijgen AVRs, etc. Er is een duidelijk probleem, met name niet in het meest populaire antwoord hier. De Arduino gebruikt een AVR MICROCONTROLLER , geen MICROPROCESSOR. Dit is een belangrijke reden waarom er geen Linux-poort is. Microcontrollers zijn ontworpen om een specifieke taak uit te voeren, toepassingen waarbij de relatie tussen invoer en uitvoer goed is gedefinieerd. Microprocessors zijn ontworpen om te draaien een verscheidenheid aan apps op besturingssystemen. Onthoud dat Linux vanaf het begin een geheugenbeheereenheid nodig had en niet kon draaien op 8088 of 286 pcs. Toen was er μClinux, dat oorspronkelijk gericht was op de Motorola DragonBall-familie van ingebouwde 68k-processors, voor Palm Pilots . Het was nooit bijzonder succesvol. Misschien heb je meer succes met het porten van FreeDOS of zelfs Minix dan Linux, misschien iets in assembler, maar co Een besturingssysteem op een microcontroller installeren is erg onpraktisch. Misschien “een uitdagend academisch probleem, maar specifiek in strijd met het doel van het gebruik van een microcontroller in plaats van een microprocessor.

Antwoord

Het is mogelijk, maar het zou vervelend zijn omdat je het in C zou moeten schrijven (om nog maar te zwijgen van de extra hardware die nodig is zoals een sd-kaartschild en extra geheugenchip (en)) Iets als Ontas, een kernel waarin ik schreef C voor de arduino, zou helpen omdat het ondersteuning heeft om stuurprogrammas toe te voegen, ten koste van het langzamer herhalen van de void loop-functie. (Dit is niet zon groot probleem als je misschien denkt dat het is) (Ontas is nog in ontwikkeling en er worden voortdurend nieuwe functies toegevoegd)

Klik hier voor de link naar de .ino en bijbehorende .h-bestanden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *