Co potrzeba, aby skompilować Linuksa na Arduino, jeśli to w ogóle możliwe?


Odpowiedzi:


19

Linux jest bardzo złożonym systemem operacyjnym, ale może być w stanie zmieścić się na Arduino. Rzeczy do rozważenia:

  • Brak bieżącego portu AVR kodu źródłowego.
  • Nie miałbyś grafiki, zamiast tego uzyskać dostęp do terminala przez UART.
  • Sterownik systemu plików musiałby zostać przepisany, aby uzyskać dostęp do wewnętrznej pamięci flash lub zewnętrznej karty SD.
  • Byłoby to bardzo wolne! ATmega328 działałby z częstotliwością 16 MHz lub około 20 MHz maks. (Podkręcona). Większość maszyn z systemem Linux działa z częstotliwością co najmniej 400 MHz i więcej z grafiką.
  • Prawdopodobnie potrzebujesz dodatkowej pamięci RAM, prawdopodobnie dobrym pomysłem jest użycie ATmega2650 (tej w Mega), która ma 16 razy więcej pamięci RAM niż Uno. Możesz także użyć Due (6 razy szybciej niż Uno, więcej pamięci RAM).
  • Być może będziesz musiał napisać specjalne sterowniki USB dla OTG (w terminie) lub MAX3421EE (Mega ADK, osłona hosta USB).

Krótko mówiąc, zajęłoby to dużo czasu i wysiłku i prawdopodobnie byłoby zbyt wolne do codziennego użytku. Jeśli naprawdę chcesz Arduino Linux, sprawdź Yún.


2
Byś nie „prawdopodobnie” potrzeba dodatkowy RAM, ty nie potrzebujesz dodatkowej pamięci RAM. Linux wymaga 1 MB + pamięci RAM. Ponadto brak MMU oznaczałby, że musisz wymyślić, jak go emulować (lub uruchomić ucLinux). Realistycznie, w najlepszym razie skończyłbyś emulowaniem bardziej wydajnego procesora w atmega, który byłby o rząd wielkości wolniejszy niż natywny kod. Nawet arduino nie ma nigdzie w pobliżu wymaganego barana.
Connor Wolf,

Ponadto ATmega328P ma 2 KB SRAM, a ATmega2560P ma tylko 8 KB. To tylko 4X pamięci RAM, a nie 16x.
Connor Wolf,

16

Po prostu nie ma wystarczającej ilości pamięci RAM. Musisz także nauczyć go uruchamiania z pamięci flash, co wiązałoby się z przepisaniem bootloadera.

Zamiast tego możesz użyć Arduino Yun lub PCDuino ; chociaż nie są „standardowymi” Arduino, obsługują one tarcze Arduino i działają pod Linuksem.

Lub zawsze jest Raspberry Pi .


Dlaczego mówisz, że Yun nie jest „standardowym” Arduino? Zgadzam się, że to może nie być najczęstsze, ale to rzeczywiście Arduino.
jfpoilpret

@jfpoilpret Większość Arduinos to płyty atmega, które działają w skompilowanym C ++ przez avr-gcc i mają układ do obsługi USB. Występują w różnych kształtach / rozmiarach / mocach, ale są zasadniczo takie same (poza Mega). Wydawało się dość oczywiste, że OP mówił o nich, a nie o Yun / etc, stąd rozróżnienie.
Manishearth

Jest też Arduino Tre , który wkrótce zostanie wydany , przynajmniej mam nadzieję, że wkrótce ;-)
Chris O

6

Krótka odpowiedź brzmi: nie.

Zasadniczo potrzebujesz DUŻO więcej pamięci RAM niż natywnie nawet największa ATmega.

Jest to teoretycznie możliwe dodanie urządzeń zewnętrznych i zaprogramować ATmega naśladować mocniejszy procesor i uruchomić Linuksa na tym. Jednak na zwykłym arduino nie jest to możliwe.

O wiele bardziej realistyczne byłoby uruchomienie Linuksa na Arduino Due, który jest w zasadzie procesorem AT91SAM3X8E. Jednak nadal będziesz musiał dodać trochę dodatkowej pamięci SRAM i pamięci.

Są rzeczy takie jak Arduino Yun, ale tak naprawdę jest to całkowicie oddzielny moduł linux na tej samej płytce drukowanej co ATmega32U4, więc nie wiem, czy naprawdę można to zaliczyć do arduino.


Być może istotne: czego potrzeba, aby uruchomić wbudowany system Linux?


1

Istnieje płyta o nazwie pcDuino, która może obsługiwać wiele wariantów Linuxa, takich jak Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (aby wymienić tylko kilka). Ta płyta nie jest natywnym Arduino, a raczej Arduino AtHeart , i jest wykonana przez LinkSprite .
pcDuino

Arduino ma kilka płyt, które obsługują wersję Linuksa o nazwie Linino :

  • Arduino Yun to płyta mikrokontroler oparty na ATmega32u4 i Atheros AR9331 z. Procesor Atheros obsługuje dystrybucję Linuksa opartą na OpenWrt o nazwie Linino OS. Płytka ma wbudowaną obsługę sieci Ethernet i WiFi, port USB-A, gniazdo kart micro-SD, 20 cyfrowych pinów wejścia / wyjścia (7 z nich można wykorzystać jako wyjścia PWM, a 12 jako wejścia analogowe), kryształ 16 MHz oscylator, złącze micro USB, nagłówek ICSP i 3 przyciski resetowania.
  • Nowa płyta Arduino Tian jest zasilana przez mikrokontroler SAMD21 firmy Atmel, zawierający 32-bitowy rdzeń ARM Cortex® M0 + i Qualcomm Atheros AR9342, który jest wysoce zintegrowanym procesorem MIPS pracującym z częstotliwością do 533 MHz i bogatym w funkcje IEEE802.11n 2x2 2.4 / Dwuzakresowy moduł WiFi 5 GHz. Qualcomm Atheros MIPS obsługuje dystrybucję Linuksa opartą na OpenWRT o nazwie Linino. Arduino Tian ma również wbudowaną pamięć eMMC o pojemności 4 GB, która może być pomocna przy tworzeniu projektów. Możliwe jest WŁĄCZANIE / WYŁĄCZANIE portu Linux z MCU, aby zmniejszyć zużycie energii.
  • Arduino Industrial 101 to płytka ewaluacyjna dla modułu Arduino 101 LGA. Mikrokontroler ATmega32u4 jest zintegrowany z płytą główną. Moduł obsługuje dystrybucję Linuksa opartą na OpenWRT o nazwie LininoOS. Płytka ma wbudowane WiFi (operacje IEEE 802.11b / g / n do 150 Mb / s 1x1 2,4 GHz), 3 GPIO (z których 2 można wykorzystać jako wyjścia PWM), 4 wejścia analogowe, 1 USB, 1 sygnał Ethernet na pinie nagłówki i wbudowany konwerter DC / DC. Sprawdź instrukcję montażu i po prostu podłącz swoją płytkę do komputera kablem micro USB, aby rozpocząć.

-1

Ma to kilka lat, ale może bardziej istotne, ponieważ Arduinos mają więcej pamięci RAM i 32-bitowe AVR ATMega itp. Istnieje oczywisty problem, szczególnie nie w najpopularniejszej odpowiedzi tutaj. Arduino korzysta z MIKROKONTROLERA AVR, a nie MIKROPROCESOR. Jest to główny powód, dla którego nie ma portu w systemie Linux. Mikrokontrolery są zaprojektowane do wykonywania określonych zadań, w aplikacjach, w których związek wejścia i wyjścia jest dobrze zdefiniowany. Mikroprocesory są zaprojektowane do uruchamiania różnych aplikacji w systemach operacyjnych. Pamiętaj, że od samego początku Linux potrzebował jednostki zarządzania pamięcią i nie mógł działać na komputerach 8088 lub 286. Potem był μClinux, który pierwotnie był skierowany do rodziny wbudowanych procesorów 688 Motorola DragonBall dla Palm Pilots. Nigdy nie był szczególnie udany. Możesz mieć więcej sukcesów w przenoszeniu FreeDOS lub nawet Minixa niż Linux, może coś w asemblerze, ale kompilacja systemu operacyjnego na mikrokontrolerze jest bardzo niepraktyczna. Być może jest to trudny problem akademicki,


-2

Jest to możliwe, ale byłby to problem, ponieważ musiałbyś napisać go w C. (nie wspominając o dodatkowym sprzęcie potrzebnym, takim jak osłona karty SD i dodatkowe układy pamięci). Coś jak Ontas, jądro, w którym napisałem C dla arduino, pomogłoby, ponieważ ma obsługę dodawania sterowników, kosztem spowolnienia powtarzania funkcji pętli próżni. (To nie jest tak wielka okazja, jak mogłoby się wydawać) (Ontas jest wciąż w fazie rozwoju i ciągle dodawane są nowe funkcje)

Kliknij tutaj, aby uzyskać link do pliku .ino i towarzyszących mu plików .h

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.