Ce este necesar pentru a compila Linux pe Arduino, dacă este posibil?

Este posibil să rulați Linux pe Arduino? Dacă da, ce pași și limitări trebuie luate în considerare? Dacă nu, care sunt limitările care împiedică acest lucru?

Comentarii

Răspundeți

Linux este un sistem de operare foarte complex, dar poate fi capabil să se potrivească pe un Arduino. Lucruri de luat în considerare:

  • Nu există un port AVR actual al codului sursă.
  • Nu ați avea grafică, în schimb accesați terminalul prin UART.
  • Driverul sistemului de fișiere ar trebui rescris pentru a accesa flash-ul intern sau un card SD extern.
  • Ar fi extrem de lent! ATmega328 ar funcționa la 16 MHz, sau aproximativ 20 MHz maxim (overclockat). Majoritatea mașinilor Linux rulează la minimum 400 MHz și mai mult cu grafică.
  • Probabil ai avea nevoie de memorie RAM suplimentară, probabil o idee bună să folosești un ATmega2650 (cel din Mega), care are 16 de ori mai mare decât RAM-ul Uno. Puteți utiliza și un Due (de 6 ori mai rapid ca Uno, mai mult RAM).
  • Este posibil să fie necesar să scrieți drivere USB speciale pentru OTG (pe Due) sau MAX3421EE (Mega ADK, USB host shield) .

Pe scurt, ar fi nevoie de mult timp și efort și probabil ar fi prea lent pentru utilizarea zilnică. Dacă doriți cu adevărat Arduino Linux, consultați Yún.

Comentarii

  • Nu ați ” probabil ” aveți nevoie de ram suplimentar, aveți nevoie de ram suplimentar. Linux necesită 1 MB + RAM. De asemenea, lipsa unui MMU ar însemna că ‘ ar trebui să vă dați seama cum să emulați unul (sau să rulați ucLinux). În mod realist, în cel mai bun caz, ‘ încheiați emulând un procesor mai capabil în atmega, care ar fi un ordin de mărime mai lent decât codul nativ. Chiar și arduino datorat nu are ‘ nu are nicăieri lângă memoria RAM necesară.
  • De asemenea, ATmega328P are 2 KB SRAM, iar ATmega2560P are doar 8 KB. Adică doar 4X RAM, nu 16x.

Răspuns

Pur și simplu nu are suficient RAM. De asemenea, ar trebui să-l învățați să pornească din memoria flash, ceea ce ar implica rescrierea încărcătorului de încărcare.

În schimb, puteți utiliza un Arduino Yun sau un PCDuino ; în timp ce nu sunt Arduinos „standard”, acestea acceptă scuturile Arduino și rulează Linux.

Sau există întotdeauna Raspberry Pi .

Comentarii

  • De ce spuneți că Yun nu este ” standard ” Arduino? Sunt de acord că poate să nu fie cel mai comun, dar este într-adevăr un Arduino.
  • @jfpoilpret Majoritatea Arduino-urilor sunt plăci atmega care rulează C ++ compilat prin avr-gcc și au un cip de manipulare USB. vin în diferite forme / dimensiuni / puteri, dar ele ‘ sunt în esență aceleași (Mega deoparte). Părea destul de evident că OP vorbea despre acestea și nu despre Yun / etc, de aici distincția.
  • Există și ‘ și cel care va fi lansat în curând Arduino Tre , cel puțin ‘ sper să ‘ în curând 😉

Răspuns

Răspunsul scurt este nu.

Basicall da, ai avea nevoie de mult mai mult RAM decât chiar și cel mai mare ATmega are în mod nativ.

Este teoretic posibilă adăugarea de hardware extern și programarea ATmega pentru a emula un procesor mai puternic, și rulați Linux pe asta. Cu toate acestea, pe un arduino simplu, nu este posibil.

Ar fi mult mai realist să rulați Linux pe un Arduino Due, care este în esență un procesor AT91SAM3X8E. Cu toate acestea, ar trebui să adăugați încă SRAM și stocare suplimentară.

Există lucruri precum Arduino Yun, dar acesta este într-adevăr un modul linux complet separat pe același PCB ca un ATmega32U4, așa că nu „Nu știu dacă îl puteți numi într-adevăr ca un arduino.


Posibil de relevant: Ce este necesar pentru a rula Linux încorporat?

Răspuns

Există o placă numită pcDuino care poate rula mai multe variante de Linux, cum ar fi Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (doar pentru a menționa câteva). Această placă nu este un Arduino nativ, mai degrabă Arduino AtHeart și este realizată de LinkSprite .
pcDuino

Arduino are câteva plăci care acceptă rularea unei variante din Linux numit Linino :

  • Arduino Yún este o placă de microcontroler bazată pe ATmega32u4 și Atheros AR9331.Procesorul Atheros acceptă o distribuție Linux bazată pe OpenWrt numită Linino OS. Placa are suport Ethernet și WiFi încorporat, un port USB-A, slot pentru card micro-SD, 20 pini de intrare / ieșire digitale (7 dintre aceștia pot fi folosiți ca ieșiri PWM și 12 ca intrări analogice), un cristal de 16 MHz oscilator, o conexiune micro USB, un antet ICSP și 3 butoane de resetare.
  • Noua placă Arduino Tian este alimentată de MCU Atmel SAMD21, cu un nucleu ARM Cortex® M0 + pe 32 de biți și un Qualcomm Atheros AR9342 , care este un procesor MIPS extrem de integrat care funcționează la până la 533 MHz și modul IEEE802.11n 2×2 2.4 / 5 GHz dual-band WiFi bogat în caracteristici. Qualcomm Atheros MIPS acceptă o distribuție Linux, bazată pe OpenWRT numită Linino. Arduino Tian are, de asemenea, o memorie eMMC de 4 GB care vă poate fi utilă pentru a vă construi proiectele. Este posibil să porniți / opriți portul Linux de la MCU pentru a reduce consumul de energie.
  • Arduino Industrial 101 este o placă de evaluare pentru modulul Arduino 101 LGA. Microcontrolerul ATmega32u4 este integrat în placă. Modulul acceptă o distribuție Linux bazată pe OpenWRT numită LininoOS. Placa are WiFi încorporat (operații IEEE 802.11b / g / n până la 150Mbps 1×1 2,4 GHz), 3 GPIO (dintre care 2 pot fi utilizate ca ieșiri PWM), 4 intrări analogice, 1 USB, 1 semnal Ethernet pe pin anteturi și un convertor DC / DC încorporat. Consultați ghidul de asamblare și pur și simplu conectați placa la un computer cu un cablu micro USB pentru a începe.

Răspuns

Acest lucru este vechi de câțiva ani, dar poate mai pertinent, deoarece Arduinos obține mai mult RAM și 32 biți ATMega AVR-uri, etc. Există o problemă evidentă, în special nu în cel mai popular răspuns aici. Arduino utilizează un AVR MICROCONTROLLER , nu un MICROPROCESOR. Acesta este un motiv major pentru care nu există un port Linux. Microcontrolerele sunt proiectate pentru a efectua o sarcină specifică, aplicații în care relația de intrare și ieșire este bine definită. Microprocesoarele sunt proiectate să ruleze o varietate de aplicații pe sistemele de operare. Amintiți-vă, de la început, Linux avea nevoie de o unitate de gestionare a memoriei și nu putea rula pe PC-uri 8088 sau 286. Apoi a existat μClinux, care inițial viza familia Motorola DragonBall de procesoare încorporate 68k, pentru Palm Pilots Nu a avut niciodată un succes deosebit. S-ar putea să aveți mai mult succes în portarea FreeDOS sau chiar Minix decât Linux, poate ceva în asamblare, dar co Mpilarea unui sistem de operare pe un microcontroler este foarte impracticabilă. Poate că este o problemă academică dificilă, dar în mod specific contrară scopului utilizării unui microcontroler în locul unui microprocesor.

Răspuns

Este posibil, totuși ar fi o durere pentru că ar trebui să-l scrieți în C. (ca să nu mai vorbim de hardware-ul suplimentar necesar, cum ar fi un scut de card SD și cipuri de memorie suplimentare) Ceva de genul Ontas, un kernel în care am scris C pentru arduino, ar ajuta deoarece are suport pentru a adăuga drivere, în detrimentul faptului că funcția de buclă nulă se repetă mai lent (acest lucru nu este atât de mare pe cât ați putea crede că este) (Ontas este încă în curs de dezvoltare și funcții noi sunt adăugate tot timpul)

Faceți clic aici pentru linkul către fișierul .ino și fișierele .h însoțitoare

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *