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

Czy można uruchomić Linuksa na Arduino? Jeśli tak, jakie kroki i ograniczenia należy wziąć pod uwagę? Jeśli nie, jakie ograniczenia to uniemożliwiają?

Komentarze

Odpowiedź

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

  • Brak aktualnego portu AVR kodu źródłowego.
  • Nie miałbyś żadnej grafiki, zamiast tego miałbyś 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 bardzo wolne! ATmega328 działałby z częstotliwością 16 MHz lub maksymalnie około 20 MHz (po podkręceniu). Większość komputerów z systemem Linux działa z częstotliwością co najmniej 400 MHz, a więcej z grafiką.
  • Prawdopodobnie będziesz potrzebować dodatkowej pamięci RAM, prawdopodobnie dobrym pomysłem jest użycie ATmega2650 (tego w Mega), który ma 16 razy ilość pamięci RAM Uno. Możesz także użyć Due (6x szybciej niż Uno, więcej pamięci RAM).
  • Być może będziesz musiał napisać specjalne sterowniki USB dla OTG (na Due) 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.

Komentarze

  • Nie ” prawdopodobnie ” potrzebujesz dodatkowej pamięci RAM, potrzebujesz dodatkowej pamięci RAM. Linux wymaga 1 MB + pamięci RAM. Ponadto brak MMU oznaczałby, że ' musiałabyś wymyślić, jak ją emulować (lub uruchomić ucLinux). Realistycznie, co najwyżej, ' d kończysz emulowanie bardziej wydajnego procesora w atmega, co byłoby o rząd wielkości wolniejsze niż kod natywny. Nawet arduino nie ma ' nigdzie w pobliżu wymaganej pamięci RAM.
  • Ponadto ATmega328P ma 2 KB SRAM, a ATmega2560P ma tylko 8 KB. To tylko 4 razy więcej pamięci RAM, a nie 16 razy.

Odpowiedź

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

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

Albo zawsze jest Raspberry Pi .

Komentarze

  • Dlaczego mówisz, że Yun nie jest ” standardowym ” Arduino? Zgadzam się, że może nie jest to najczęściej spotykane, ale rzeczywiście jest to Arduino.
  • @jfpoilpret Większość Arduino to płyty firmy Atmega, które działają w skompilowanym C ++ przez avr-gcc i mają układ obsługujący USB. mają różne kształty / rozmiary / moce, ale ' są zasadniczo takie same (poza mega). Wydawało się dość oczywiste, że OP mówił o nich, a nie o Yunach / itd., stąd rozróżnienie.
  • Istnieją również ', które wkrótce zostaną wydane Arduino Tre , przynajmniej ja ' mam nadzieję, że ' wkrótce 😉

Odpowiedź

Krótka odpowiedź brzmi: nie.

Wszystko podstawowe y, potrzebowałbyś DUŻO więcej pamięci RAM niż nawet największy ATmega, który ma natywnie.

Teoretycznie jest dodanie zewnętrznego sprzętu i zaprogramowanie ATmega tak, aby emulowało mocniejszy procesor, i uruchom na tym Linuksa. 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 musisz dodać trochę dodatkowej pamięci SRAM i pamięci.

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


Prawdopodobnie istotne: Co jest potrzebne do uruchomienia osadzonego systemu Linux?

Odpowiedź

Istnieje tablica o nazwie pcDuino który może obsługiwać wiele wariantów Linuksa, takich jak Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (żeby 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 obsługujących różne warianty Linuksa o nazwie Linino :

  • The Arduino Yún to płytka mikrokontrolera oparta na ATmega32u4 i Atheros AR9331.Procesor Atheros obsługuje dystrybucję Linuksa opartą na OpenWrt o nazwie Linino OS. Płytka ma wbudowaną obsługę Ethernet i WiFi, port USB-A, slot na kartę micro-SD, 20 cyfrowych pinów wejścia / wyjścia (7 z nich może służyć jako wyjścia PWM i 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, wyposażony w 32-bitowy rdzeń ARM Cortex® M0 + i Qualcomm Atheros AR9342 , który jest wysoce zintegrowanym procesorem MIPS działającym z częstotliwością do 533 MHz i bogatym w funkcje dwupasmowym modułem WiFi IEEE802.11n 2×2 2,4 / 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łączenie / wyłączenie portu Linuksa z MCU w celu zmniejszenia zużycia energii.
  • Arduino Industrial 101 to płyta ewaluacyjna dla modułu Arduino 101 LGA. Mikrokontroler ATmega32u4 jest zintegrowany z listwą przypodłogową. Moduł obsługuje dystrybucję Linuksa opartą na OpenWRT o nazwie LininoOS. Płytka ma wbudowane WiFi (IEEE 802.11b / g / n do 150Mbps 1×1 2,4 GHz), 3 GPIO (z czego 2 mogą być używane jako wyjścia PWM), 4 wejścia analogowe, 1 USB, 1 sygnał Ethernet na pinie nagłówki i wbudowany przetwornik DC / DC. Zapoznaj się z instrukcją montażu i po prostu podłącz swoją płytę do komputera za pomocą kabla micro USB, aby rozpocząć.

Odpowiedź

To ma kilka lat, ale może bardziej trafne, ponieważ Arduino mają więcej pamięci RAM i 32-bitową ATMega AVR itp. Jest oczywisty problem, w szczególności nie w najpopularniejszej odpowiedzi tutaj. Arduino używa AVR MICROCONTROLLER , a nie MIKROPROCESOR. To jest główny powód, dla którego nie ma portu linux. Mikrokontrolery są zaprojektowane do wykonywania określonego zadania, aplikacji, w których relacje wejścia i wyjścia są dobrze zdefiniowane. Mikroprocesory są zaprojektowane do działania różne aplikacje w systemach operacyjnych. Pamiętaj, że od samego początku Linux potrzebował jednostki zarządzającej pamięcią i nie mógł działać na komputerach 8088 lub 286. Następnie pojawił się μClinux, który pierwotnie był przeznaczony dla rodziny wbudowanych procesorów 68k Motorola DragonBall, dla Palm Pilots . Nigdy nie był szczególnie udany. Mógłbyś odnieść większy sukces przy przenoszeniu FreeDOS lub nawet Minix niż Linuksa, może coś w asemblerze, ale co Umieszczenie systemu operacyjnego na mikrokontrolerze jest bardzo niepraktyczne. Być może jest to „trudny problem akademicki, ale w szczególności sprzeczny z celem używania mikrokontrolera zamiast mikroprocesora.

Odpowiedź

Jest to możliwe, jednak byłoby to uciążliwe, ponieważ musiałbyś napisać to w C. (nie wspominając o dodatkowym sprzęcie potrzebnym, takim jak osłona karty SD i dodatkowe chipy pamięci) Coś jak Ontas, jądro, które napisałem w C dla arduino, pomogłoby, ponieważ obsługuje dodawanie sterowników kosztem spowalniania powtarzania funkcji pętli void (nie jest to tak wielka sprawa, jak mogłoby się wydawać) (Ontas jest wciąż w fazie rozwoju i nowe funkcje są dodawane cały czas)

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *