Hvad skal der til for at kompilere Linux på Arduino, hvis det overhovedet er muligt?

Er det muligt at køre Linux på Arduino? Hvis ja, hvilke trin og begrænsninger skal der tages i betragtning? Hvis ikke, hvad er begrænsningerne der forhindrer dette?

Kommentarer

Svar

Linux er et meget komplekst operativsystem, men det kan muligvis passe på en Arduino. Ting at overveje:

  • Der er ingen nuværende AVR-port på kildekoden.
  • Du ville ikke have nogen grafik, i stedet få adgang til terminalen via UART.
  • Filsystemdriveren skal omskrives for at få adgang til intern flash eller et eksternt SD-kort.
  • Det ville være ekstremt langsomt! ATmega328 kører ved 16 MHz eller ca. 20 MHz max (overclocked). De fleste Linux-maskiner kører med mindst 400 MHz og mere med grafik.
  • Du vil sandsynligvis have brug for lidt ekstra RAM, sandsynligvis en god ide at bruge en ATmega2650 (den i Mega), som har 16 gange RAM for Uno. Du kan også bruge en Due (6x så hurtigt som Uno, mere RAM).
  • Du skal muligvis skrive specielle USB-drivere til OTG (på grund) eller MAX3421EE (Mega ADK, USB-værtsskjold) .

Kort sagt, det ville tage meget tid og kræfter og sandsynligvis være for langsomt til daglig brug. Hvis du virkelig vil have Arduino Linux, skal du tjekke Yún.

Kommentarer

  • Du ville ikke ” sandsynligvis ” har brug for ekstra ram, du gør brug for ekstra ram. Linux kræver 1 MB + ram. Manglen på en MMU ville også betyde, at du ‘ skulle finde ud af, hvordan man efterligner en (eller kører ucLinux). Realistisk set, i bedste fald, ‘ ender med at efterligne en mere kapabel processor i atmegaen, hvilket ville være en størrelsesorden langsommere end den oprindelige kode. Selv arduino-forfalden har ikke ‘ ikke nogen steder i nærheden af den krævede ram.
  • ATmega328P har også 2 KB SRAM, og ATmega2560P har kun 8 KB. Det er kun 4X ram, ikke 16x.

Svar

Det har bare ikke nok RAM. Du skal også lære det at starte fra flash-hukommelse, hvilket vil indebære omskrivning af bootloaderen.

Du kan i stedet bruge en Arduino Yun eller en PCDuino ; mens de ikke er “standard” Arduinos, understøtter disse Arduino-skjolde og kører Linux.

Eller der er altid Raspberry Pi .

Kommentarer

  • Hvorfor siger du, at Yun ikke er ” standard ” Arduino? Jeg er enig i, at det måske ikke er den mest almindelige, men det er faktisk en Arduino.
  • @jfpoilpret De fleste Arduinos er atmega-kort, der kører kompileret C ++ via avr-gcc og har en USB-håndteringschip. kommer i forskellige former / størrelser / kræfter, men de ‘ er stort set de samme (Mega til side). Det syntes ret åbenlyst, at OP talte om disse og ikke Yun / etc, deraf sondringen.
  • Der ‘ er også den snart frigivne Arduino Tre , i det mindste ‘ m håber det ‘ s snart 😉

Svar

Det korte svar er nej.

Basicall y, du har brug for MEGET mere ram, end selv den største ATmega har indbygget.

Det er teoretisk muligt at tilføje ekstern hardware og programmere ATmega til at efterligne en mere kraftfuld CPU, og kør linux på det. Men på en almindelig arduino er det ikke muligt.

Det ville være meget mere realistisk at køre linux på en Arduino Due, som grundlæggende er en AT91SAM3X8E CPU. Du skal dog stadig tilføje noget ekstra SRAM og lagerplads.

Der er ting som Arduino Yun, men det er virkelig et helt separat linux-modul på samme PCB som en ATmega32U4, så det gør jeg ikke “ved ikke, om du virkelig kan tælle det som en arduino.


Muligvis relevant: Hvad skal der til for at køre indlejret linux?

Svar

Der er et kort kaldet pcDuino der kan køre flere varianter af Linux som Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (bare for at nævne et par stykker). Dette kort er ikke en indfødt Arduino, snarere Arduino AtHeart , og er lavet af LinkSprite .
pcDuino

Arduino har et par tavler, der understøtter kørsel af en variant af Linux kaldet Linino :

  • Arduino Yún er et mikrocontrollerkort baseret på ATmega32u4 og Atheros AR9331.Atheros-processoren understøtter en Linux-distribution baseret på OpenWrt ved navn Linino OS. Kortet har indbygget Ethernet- og WiFi-understøttelse, en USB-A-port, micro-SD-kortspor, 20 digitale input / output-pins (7 af dem kan bruges som PWM-udgange og 12 som analoge indgange), en 16 MHz krystal oscillator, en mikro-USB-forbindelse, en ICSP-header og 3 reset-knapper.
  • Det nye Arduino Tian -kort er drevet af Atmels SAMD21 MCU med en 32-bit ARM Cortex® M0 + -kerne og en Qualcomm Atheros AR9342 , som er en meget integreret MIPS-processor, der fungerer ved op til 533MHz og funktionsrige IEEE802.11n 2×2 2,4 / 5 GHz dual-band WiFi-modul. Qualcomm Atheros MIPS understøtter en Linux-distribution baseret på OpenWRT ved navn Linino. Arduino Tian har også en indbygget 4 GB eMMC-hukommelse, der kan være nyttigt at opbygge dine projekter. Det er muligt at tænde / slukke Linux-porten fra MCU for at reducere strømforbruget.
  • Arduino Industrial 101 er et evalueringskort til Arduino 101 LGA-modul. ATmega32u4 mikrokontrolleren er integreret i baseboardet. Modulet understøtter en Linux-distribution baseret på OpenWRT ved navn LininoOS. Kortet har indbygget WiFi (IEEE 802.11b / g / n-operationer op til 150 Mbps 1×1 2,4 GHz), 3 GPIOer (hvoraf 2 kan bruges som PWM-udgange), 4 analoge indgange, 1 USB, 1 Ethernet-signal på pin headere og en indbygget DC / DC-konverter. Tjek samlevejledningen og tilslut blot dit kort til en computer med et mikro-USB-kabel for at komme i gang.

Svar

Dette er flere år gammelt, men måske mere relevant, da Arduinos får mere RAM og 32 bit ATMega AVRer osv. Der er et åbenlyst problem, især ikke i det mest populære svar her. Arduino bruger en AVR MICROCONTROLLER , ikke en MICROPROCESSOR. Dette er en væsentlig årsag til, at der ikke er nogen port til Linux. Mikrocontrollere er designet til at udføre en bestemt opgave, applikationer, hvor forholdet mellem input og output er veldefineret. Mikroprocessorer er designet til at køre en række apps på operativsystemer. Husk, Linux havde fra starten brug for en hukommelsesadministrationsenhed og kunne ikke køre på 8088 eller 286 pcer. Derefter var der μClinux, som oprindeligt målrettede Motorola DragonBall-familien af indlejrede 68k-processorer til Palm Pilots Det var aldrig særlig vellykket. Du har muligvis mere succes med at porte FreeDOS eller endda Minix end Linux, måske noget i samleren, men co at opstille et operativsystem på en mikrocontroller er meget upraktisk. Måske er det et udfordrende akademisk problem, men specifikt i modstrid med formålet med at bruge en mikrocontroller i stedet for en mikroprocessor.

Svar

Det er muligt, men det ville være smertefuldt, fordi du bliver nødt til at skrive det i C. (for ikke at nævne den ekstra hardware, der er nødvendig som et SD-kortskjold og ekstra hukommelseschip (er)) Noget som Ontas, en kerne jeg skrev i C for arduino, ville hjælpe, da det har støtte til at tilføje drivere på bekostning af at få ugyldig sløjfefunktion til at gentages langsommere. (Dette er ikke så stort af en aftale, som du måske tror det er) (Ontas er stadig under udvikling og nye funktioner tilføjes hele tiden)

Klik her for linket til .ino og tilhørende .h-filer

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *