Vad krävs för att kompilera Linux på Arduino, om det är möjligt?

Är det möjligt att köra Linux på Arduino? Om ja, vilka steg och begränsningar måste övervägas? Om inte, vilka begränsningar hindrar detta?

Kommentarer

Svar

Linux är ett mycket komplext operativsystem, men det kan kanske passa på en Arduino. Saker att tänka på:

  • Det finns ingen aktuell AVR-port för källkoden.
  • Du skulle inte ha någon grafik, istället komma åt terminalen via UART.
  • Filsystemdrivrutinen måste skrivas om för att komma åt intern flash eller ett externt SD-kort.
  • Det skulle vara extremt långsamt! ATmega328 skulle köras vid 16 MHz, eller cirka 20 MHz max (överklockad). De flesta Linux-maskiner körs med minst 400 MHz och mer med grafik.
  • Du skulle förmodligen behöva lite extra RAM, förmodligen en bra idé att använda en ATmega2650 (den i Mega), som har 16 gånger RAM för Uno. Du kan också använda en Due (6 gånger så snabbt som Uno, mer RAM).
  • Du kan behöva skriva speciella USB-drivrutiner för OTG (på grund) eller MAX3421EE (Mega ADK, USB-värdsköld) .

Kort sagt, det skulle ta mycket tid och ansträngning och förmodligen skulle det vara för långsamt för daglig användning. Om du verkligen vill ha Arduino Linux, kolla in Yún.

Kommentarer

  • Du skulle inte ” troligen ” behöver extra ram, du gör behöver extra ram. Linux kräver 1 MB + ram. Bristen på en MMU skulle också betyda att du ’ måste räkna ut hur man kan emulera en (eller köra ucLinux). Realistiskt sett ’ i bästa fall efterliknar en mer kapabel processor i atmega, vilket skulle vara en storleksordning långsammare än den ursprungliga koden. Även arduino förfaller ’ t har någonstans nära den nödvändiga ram.
  • Dessutom har ATmega328P 2 KB SRAM, och ATmega2560P har bara 8 KB. Det är bara 4X ram, inte 16x.

Svar

Det har bara inte tillräckligt med RAM. Du måste också lära dig att starta från flashminnet, vilket skulle innebära att du måste skriva om bootloader.

Du kan istället använda en Arduino Yun eller en PCDuino ; även om de inte är ”vanliga” Arduinos stöder dessa Arduino-sköldar och kör Linux.

Eller så finns det alltid Raspberry Pi .

Kommentarer

  • Varför säger du att Yun inte är ” standard ” Arduino? Jag håller med om att det kanske inte är det vanligaste, men det är verkligen en Arduino.
  • @jfpoilpret De flesta Arduinos är atmega-kort som kör kompilerad C ++ via avr-gcc och har ett USB-hanteringschip. finns i olika former / storlekar / krafter, men de ’ är i stort sett desamma (Mega åt sidan). Det verkade ganska uppenbart att OP talade om dessa och inte Yun / etc, därav skillnaden.
  • Det finns ’ också den snart kommer att släppas Arduino Tre , åtminstone jag ’ jag hoppas att det ’ s snart 😉

Svar

Det korta svaret är nej.

Basicall y, du skulle behöva MYCKET mer ram än till och med den största ATmega har inbyggt.

Det är teoretiskt möjligt att lägga till extern hårdvara och programmera ATmega för att efterlikna en mer kraftfull CPU, och kör Linux på det. Men på en vanlig arduino är det inte möjligt.

Det skulle vara mycket mer realistiskt att köra Linux på en Arduino Due, som i grunden är en AT91SAM3X8E-processor. Men du behöver fortfarande lägga till ytterligare SRAM och lagring.

Det finns saker som Arduino Yun, men det är verkligen en helt separat linuxmodul på samma PCB som en ATmega32U4, så jag gör inte ”vet inte om du verkligen kan räkna det som en arduino.


Eventuellt relevant: Vad krävs för att köra inbäddad Linux?

Svar

Det finns ett kort som heter pcDuino som kan köra flera varianter av Linux som Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (för att bara nämna några). Detta bräde är inte en infödd Arduino, snarare Arduino AtHeart , och är gjord av LinkSprite .
pcDuino

Arduino har ett par styrelser som stöder körning av en variant av Linux som heter Linino :

  • Arduino Yún är ett mikrokontrollkort baserat på ATmega32u4 och Atheros AR9331.Atheros-processorn stöder en Linux-distribution baserad på OpenWrt med namnet Linino OS. Kortet har inbyggt Ethernet- och WiFi-stöd, en USB-A-port, micro-SD-kortplats, 20 digitala ingångs- / utgångsstift (7 av dem kan användas som PWM-utgångar och 12 som analoga ingångar), en 16 MHz kristall oscillator, en mikro-USB-anslutning, ett ICSP-huvud och 3 återställningsknappar.
  • Det nya Arduino Tian -kortet drivs av Atmels SAMD21 MCU, med en 32-bitars ARM Cortex® M0 + -kärna och en Qualcomm Atheros AR9342 , som är en mycket integrerad MIPS-processor som arbetar med upp till 533MHz och funktionsrik IEEE802.11n 2×2 2,4 / 5 GHz dual-band WiFi-modul. Qualcomm Atheros MIPS stöder en Linux-distribution, baserad på OpenWRT med namnet Linino. Arduino Tian har också ett inbyggt 4 GB eMMC-minne som kan vara till hjälp för att bygga dina projekt. Det är möjligt att slå på / stänga av Linux-porten från MCU för att minska strömförbrukningen.
  • Arduino Industrial 101 är en utvärderingskort för Arduino 101 LGA-modul. ATmega32u4-mikrokontrollern är integrerad i basbordet. Modulen stöder en Linux-distribution baserad på OpenWRT med namnet LininoOS. Kortet har inbyggt WiFi (IEEE 802.11b / g / n-operationer upp till 150 Mbps 1×1 2,4 GHz), 3 GPIO (varav 2 kan användas som PWM-utgångar), 4 analoga ingångar, 1 USB, 1 Ethernet-signal på stift headers och en inbyggd DC / DC-omvandlare. Kolla in monteringsguiden och anslut bara ditt kort till en dator med en mikro-USB-kabel för att komma igång.

Svar

Detta är flera år gammalt, men kanske mer relevant eftersom Arduinos får mer RAM och 32-bitars ATMega AVR, etc. Det finns ett uppenbart problem, särskilt inte i det mest populära svaret här. Arduino använder en AVR MICROCONTROLLER , inte en MICROPROCESSOR. Det här är en viktig anledning till att det inte finns någon port för Linux. Mikrokontroller är utformade för att utföra en specifik uppgift, applikationer där förhållandet mellan input och output är väl definierat. Mikroprocessorer är utformade för att köras en mängd olika appar på operativsystem. Kom ihåg, från början behövde Linux en minneshanteringsenhet och kunde inte köras på 8088 eller 286 datorer. Sedan fanns det μClinux, som ursprungligen riktade sig till Motorola DragonBall-familjen av inbäddade 68 000 processorer, för Palm Pilots Det var aldrig särskilt framgångsrikt. Du kanske har större framgång med att porta FreeDOS eller till och med Minix än Linux, kanske något i assembler, men co att lägga till ett operativsystem på en mikrokontroller är väldigt opraktiskt. Kanske är det ett utmanande akademiskt problem, men specifikt motverkar syftet med att använda en mikrokontroller istället för en mikroprocessor.

Svar

Det är möjligt, men det skulle vara ont eftersom du skulle behöva skriva det i C. (för att inte tala om den extra hårdvaran som behövs som ett SD-kortskydd och extra minneskretsar) Något som Ontas, en kärna jag skrev i C för arduino, skulle hjälpa eftersom det har stöd för att lägga till drivrutiner, på bekostnad av att tömningsslingans funktion upprepas långsammare. (Detta är inte så stort av en affär som du kanske tror det är) (Ontas är fortfarande under utveckling och nya funktioner läggs till hela tiden)

Klicka här för länken till .ino och tillhörande .h-filer

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *