Hva skal til for å kompilere Linux på Arduino, hvis det er mulig?

Er det mulig å kjøre Linux på Arduino? Hvis ja, hvilke trinn og begrensninger må vurderes? Hvis ikke, hva er begrensningene som forhindrer dette?

Kommentarer

Svar

Linux er et veldig komplekst operativsystem, men det kan hende det passer på en Arduino. Ting du bør vurdere:

  • Det er ingen nåværende AVR-port på kildekoden.
  • Du ville ikke ha noen grafikk, i stedet få tilgang til terminalen via UART.
  • Filsystemdriveren må skrives om for å få tilgang til intern flash eller et eksternt SD-kort.
  • Det ville være ekstremt tregt! ATmega328 vil kjøre på 16 MHz, eller omtrent 20 MHz maks (overklokket). De fleste Linux-maskiner kjører med minimum 400 MHz, og mer med grafikk.
  • Du vil sannsynligvis trenge litt ekstra RAM, sannsynligvis en god ide å bruke en ATmega2650 (den i Mega), som har 16 ganger RAM til Uno. Du kan også bruke en Due (6 ganger så raskt som Uno, mer RAM).
  • Du må kanskje skrive spesielle USB-drivere for OTG (på grunn) eller MAX3421EE (Mega ADK, USB-vertskjerm) .

Kort sagt, det ville tatt mye tid og krefter, og sannsynligvis ville det være for sakte for daglig bruk. Hvis du virkelig vil ha Arduino Linux, sjekk ut Yún.

Kommentarer

  • Du ville ikke » sannsynligvis » trenger ekstra ram, du gjør trenger ekstra ram. Linux krever 1 MB + ram. Mangelen på MMU vil også bety at du ‘ trenger å finne ut hvordan du kan etterligne en (eller kjøre ucLinux). Realistisk sett ‘ realiserer du i beste fall en emulering av en mer dyktig prosessor i atmegaen, som vil være en størrelsesorden langsommere enn den opprinnelige koden. Selv arduino-forfallet har ikke ‘ t noen steder i nærheten av den nødvendige RAM.
  • ATmega328P har også 2 KB SRAM, og ATmega2560P har bare 8 KB. Det er bare 4 ganger rammen, ikke 16 ganger.

Svar

Den har bare ikke nok RAM. Du må også lære det å starte fra flash-minne, noe som vil innebære omskriving av bootloader.

Du kan i stedet bruke en Arduino Yun eller en PCDuino ; mens de ikke er «standard» Arduinos, støtter disse Arduino-skjold og kjører Linux.

Eller det er alltid Raspberry Pi .

Kommentarer

  • Hvorfor sier du Yun ikke er » standard » Arduino? Jeg er enig i at det kanskje ikke er den vanligste, men det er faktisk en Arduino.
  • @jfpoilpret De fleste Arduinos er atmega-kort som kjører kompilert C ++ via avr-gcc og har en USB-håndteringsbrikke. kommer i forskjellige former / størrelser / krefter, men de ‘ er i det vesentlige de samme (Mega til side). Det virket ganske åpenbart at OP snakket om disse og ikke Yun / etc, derav skillet.
  • Der ‘ er også den snart utgitte Arduino Tre , i det minste håper jeg ‘ m håper det ‘ s snart 😉

Svar

Det korte svaret er nei.

Basicall y, du trenger MYE mer ram enn selv den største ATmega har innfødt.

Det er teoretisk mulig å legge til ekstern maskinvare, og programmere ATmega for å etterligne en kraftigere CPU, og kjør linux på det. Imidlertid er det ikke mulig på en vanlig arduino.

Det ville være mye mer realistisk å kjøre Linux på en Arduino Due, som i utgangspunktet er en AT91SAM3X8E-prosessor. Imidlertid trenger du fortsatt å legge til litt ekstra SRAM og lagring.

Det er ting som Arduino Yun, men det er egentlig en helt egen linux-modul på samme PCB som en ATmega32U4, så det gjør jeg ikke «vet ikke om du virkelig kan telle det som en arduino.


Muligens relevant: Hva må til for å kjøre innebygd linux?

Svar

Det er et tavle som heter pcDuino som kan kjøre flere varianter av Linux som Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (bare for å nevne noen få). Dette brettet er ikke en innfødt Arduino, heller Arduino AtHeart , og er laget av LinkSprite .
pcDuino

Arduino har et par tavler som støtter å kjøre en variant av Linux kalt Linino :

  • Arduino Yún er et mikrokontrollerkort basert på ATmega32u4 og Atheros AR9331.Atheros-prosessoren støtter en Linux-distribusjon basert på OpenWrt med navnet Linino OS. Brettet har innebygd Ethernet- og WiFi-støtte, en USB-A-port, micro-SD-kortspor, 20 digitale inngangs- / utgangspinner (7 av dem kan brukes som PWM-utganger og 12 som analoge innganger), en 16 MHz krystall oscillator, en mikro-USB-tilkobling, en ICSP-header og 3 reset-knapper.
  • Det nye Arduino Tian -kortet er drevet av Atmels SAMD21 MCU, med en 32-bit ARM Cortex® M0 + -kjerne og en Qualcomm Atheros AR9342 , som er en høyt integrert MIPS-prosessor som opererer på opptil 533MHz og funksjonsrik IEEE802.11n 2×2 2,4 / 5 GHz dual-band WiFi-modul. Qualcomm Atheros MIPS støtter en Linux-distribusjon, basert på OpenWRT med navnet Linino. Arduino Tian har også et innebygd 4 GB eMMC-minne som kan være nyttig for å bygge prosjektene dine. Det er mulig å slå PÅ / AV Linux-porten fra MCU for å redusere strømforbruket.
  • Arduino Industrial 101 er et evalueringskort for Arduino 101 LGA-modul. ATmega32u4 mikrokontrolleren er integrert i baseboardet. Modulen støtter en Linux-distribusjon basert på OpenWRT med navnet LininoOS. Brettet har innebygd WiFi (IEEE 802.11b / g / n-operasjoner opp til 150 Mbps 1×1 2,4 GHz), 3 GPIOer (hvorav 2 kan brukes som PWM-utganger), 4 analoge innganger, 1 USB, 1 Ethernet-signal på pin topptekster og en innebygd DC / DC-omformer. Sjekk ut monteringsveiledningen og bare koble kortet til en datamaskin med en mikro-USB-kabel for å komme i gang.

Svar

Dette er flere år gammelt, men kanskje mer aktuelt ettersom Arduinos får mer RAM og 32 bit ATMega AVR, etc. Det er et åpenbart problem, spesielt ikke i det mest populære svaret her. Arduino bruker en AVR MICROCONTROLLER , ikke en MICROPROCESSOR. Dette er en viktig årsak til at det ikke er noen port for linux. Mikrokontrollere er designet for å utføre en bestemt oppgave, applikasjoner der forholdet mellom inngang og utgang er veldefinert. Mikroprosessorer er designet for å kjøre en rekke apper på operativsystemer. Husk at Linux helt fra begynnelsen trengte en minnehåndteringsenhet og ikke kunne kjøre på 8088 eller 286 PC-er. Så var det μClinux, som opprinnelig målrettet mot Motorola DragonBall-familien av innebygde 68 000 prosessorer, for Palm Pilots Det var aldri spesielt vellykket. Du kan ha mer suksess med å portere FreeDOS eller til og med Minix enn Linux, kanskje noe i assembler, men co å mpile et operativsystem på en mikrokontroller er veldig upraktisk. Kanskje det er et utfordrende akademisk problem, men spesielt mot hensikten med å bruke en mikrokontroller i stedet for en mikroprosessor.

Svar

Det er mulig, men det vil være vondt fordi du må skrive det i C. (for ikke å nevne den ekstra maskinvaren som trengs som et SD-kortskjold og ekstra minnebrikker) Noe som Ontas, en kjerne jeg skrev i C for arduino, vil hjelpe ettersom det har støtte for å legge til drivere, på bekostning av å gjøre ugyldig sløyfefunksjon gjentatt langsommere. (Dette er ikke så stor en avtale som du kanskje tror det er) (Ontas er fortsatt under utvikling og nye funksjoner blir lagt til hele tiden)

Klikk her for lenke til .ino og tilhørende .h-filer

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *