Co je potřeba ke kompilaci Linuxu na Arduinu, pokud je to vůbec možné?

Je možné spustit Linux na Arduinu? Pokud ano, jaké kroky a omezení je třeba vzít v úvahu? Pokud ne, jaká omezení tomu brání?

Komentáře

Odpověď

Linux je velmi složitý operační systém, ale může být vhodný i pro Arduino. Co je třeba zvážit:

  • Ve zdrojovém kódu není aktuálně žádný port AVR.
  • Neměli byste žádnou grafiku, místo toho byste měli přístup k terminálu přes UART.
  • Ovladač souborového systému by musel být přepsán, aby se získal přístup k internímu blesku nebo externí SD kartě.
  • Bylo by to extrémně pomalé! ATmega328 by běžel na 16 MHz, nebo asi 20 MHz max (přetaktováno). Většina strojů s Linuxem pracuje na minimálně 400 MHz a více s grafikou.
  • Pravděpodobně byste potřebovali nějakou další RAM, pravděpodobně dobrý nápad použít ATmega2650 (ten v Mega), který má 16 krát RAM Uno. Můžete také použít Due (6x rychlejší než Uno, více RAM).
  • Možná budete muset napsat speciální USB ovladače pro OTG (na Due) nebo MAX3421EE (Mega ADK, USB hostitelský štít) .

Stručně řečeno, trvalo by to hodně času a úsilí a pravděpodobně by to bylo příliš pomalé pro každodenní použití. Pokud opravdu chcete Arduino Linux, podívejte se na Yún.

Komentáře

  • Nechtěli byste “ pravděpodobně “ potřebujete dalšího berana, potřebujete dalšího berana. Linux vyžaduje 1 MB + RAM. Nedostatek MMU by také znamenal, že musíte ‚ d přijít na to, jak ho emulovat (nebo spustit ucLinux). Realisticky, v nejlepším případě, ‚ d skončíte napodobením schopnějšího procesoru v atmega, což by bylo řádově pomalejší než nativní kód. Dokonce ani arduino kvůli nemá ‚ t kdekoli v blízkosti požadovaného RAM.
  • ATmega328P má také 2 KB SRAM a ATmega2560P má pouze 8 KB. To je pouze 4násobek berana, ne 16x.

Odpověď

Prostě nemá dostatek paměti RAM. Musíte jej také naučit bootovat z flash paměti, což by znamenalo přepsat bootloader.

Místo toho můžete použít Arduino Yun nebo PCDuino ; i když nejsou „standardní“ Arduinos, podporují štíty Arduino a používají Linux.

Nebo vždy existuje Raspberry Pi .

Komentáře

  • Proč říkáte, že Yun není “ standardní “ Arduino? Souhlasím, že to nemusí být nejběžnější, ale je to opravdu Arduino.
  • @jfpoilpret Většina Arduinos jsou atmega desky, které běží zkompilovaný C ++ přes avr-gcc a mají USB manipulační čip. přicházejí v různých tvarech / velikostech / schopnostech, ale ‚ jsou v podstatě stejné (Mega stranou). Zdálo se docela zřejmé, že OP hovoří o nich a ne o Yun / atd. proto ten rozdíl.
  • Existuje ‚ také brzy vydané Arduino Tre , alespoň ‚ doufám, že ‚ s brzy 😉

Odpověď

Krátká odpověď je ne.

Basicall y, budete potřebovat O hodně více RAM, než nativně má i největší ATmega.

Je teoreticky možné přidat externí hardware a naprogramovat ATmega tak, aby emulovala výkonnější CPU, a spustit na tom linux. Na obyčejném arduinu to však není možné.

Bylo by mnohem realističtější spustit linux na Arduino Due, což je v podstatě CPU AT91SAM3X8E. Stále však musíte přidat nějaké další SRAM a úložiště.

Existují věci jako Arduino Yun, ale to je opravdu úplně samostatný linuxový modul na stejné PCB jako ATmega32U4, takže ne „Nevím, jestli to opravdu můžete počítat jako arduino.


Možná relevantní: Co je potřeba ke spuštění vloženého linuxu?

Odpověď

Existuje deska s názvem pcDuino které mohou provozovat více variant Linuxu, jako jsou Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (abych zmínil několik). Tato deska není nativním Arduino, spíše Arduino AtHeart a je vyrobena společností LinkSprite .
pcDuino

Arduino má několik desek, které podporují provozování varianty systému Linux s názvem Linino :

  • The Arduino Yún je deska mikrokontroléru založená na ATmega32u4 a Atheros AR9331.Procesor Atheros podporuje distribuci Linuxu založenou na OpenWrt s názvem Linino OS. Deska má vestavěnou podporu Ethernetu a WiFi, port USB-A, slot pro kartu micro-SD, 20 digitálních vstupních / výstupních pinů (7 z nich lze použít jako PWM výstupy a 12 jako analogové vstupy), 16 MHz krystal oscilátor, připojení micro USB, záhlaví ICSP a 3 resetovací tlačítka.
  • Nová deska Arduino Tian je poháněna Atmelem SAMD21 MCU s 32bitovým jádrem ARM Cortex® M0 + a Qualcomm Atheros AR9342 , což je vysoce integrovaný procesor MIPS pracující až na 533 MHz a na funkce bohatý dvoupásmový WiFi modul IEEE802.11n 2×2 2,4 / 5 GHz. Qualcomm Atheros MIPS podporuje distribuci Linuxu založenou na OpenWRT s názvem Linino. Arduino Tian má také vestavěnou 4GB eMMC paměť, která vám může pomoci při vytváření vašich projektů. Je možné zapnout / vypnout port Linuxu z MCU, aby se snížila spotřeba energie.
  • Arduino Industrial 101 je vyhodnocovací deska pro modul Arduino 101 LGA. Mikrokontrolér ATmega32u4 je integrován do základní desky. Modul podporuje distribuci Linuxu založenou na OpenWRT s názvem LininoOS. Deska má vestavěné WiFi (IEEE 802.11b / g / n operace až do 150Mbps 1×1 2,4 GHz), 3 GPIO (z nichž 2 lze použít jako PWM výstupy), 4 analogové vstupy, 1 USB, 1 ethernetový signál na pinu záhlaví a vestavěný převodník DC / DC. Podívejte se na průvodce sestavením a začněte jednoduše připojit desku k počítači pomocí kabelu micro USB.

Odpověď

Je to několik let staré, ale možná vhodnější, protože Arduinové dostávají více RAM a 32bitovou ATMegu AVR atd. Existuje zjevný problém, zejména ne v nejpopulárnější odpovědi zde. Arduino používá AVR MICROCONTROLLER , nikoli MIKROPROCESOR. To je hlavní důvod, proč neexistuje žádný port linuxu. Mikrokontroléry jsou určeny k provádění konkrétních úkolů, aplikací, kde je dobře definován vztah vstupu a výstupu. Mikroprocesory jsou navrženy tak, aby fungovaly řada aplikací v operačních systémech. Pamatujte si, že Linux od začátku potřeboval jednotku správy paměti a nemohl běžet na počítačích 8088 nebo 286. Pak tu byl μClinux, který byl původně zaměřen na rodinu Motorola DragonBall s vestavěnými 68k procesory, pro Palm Pilots Nikdy to nebylo nijak zvlášť úspěšné. Můžete mít větší úspěch při přenosu FreeDOSu nebo dokonce Minixu než Linuxu, možná něco v assembleru, ale co mpiling OS na mikrokontroléru je velmi nepraktické. Možná je to „náročný akademický problém, ale konkrétně v rozporu s účelem použití mikrokontroléru místo mikroprocesoru.

Odpověď

Je to možné, ale byla by to bolest, protože byste to museli psát v C. (nemluvě o dalším potřebném hardwaru, jako je štít SD karty a další paměťové čipy) Něco jako Ontas, jádro, ve kterém jsem psal C pro arduino, pomohlo by to, protože má podporu pro přidání ovladačů, na úkor pomalejšího opakování funkce void loop. (To není tak velký problém, jak si možná myslíte) (Ontas je stále ve vývoji a nové funkce jsou přidávány stále)

Kliknutím sem zobrazíte odkaz na soubory .ino a doprovodné soubory .h

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *