Otázka:
Co je potřeba ke kompilaci Linuxu na Arduinu, pokud je to vůbec možné?
Jakub Arnold
2014-02-12 05:44:47 UTC
view on stackexchange narkive permalink

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í?

http://hackaday.com/2012/03/28/building-the-worst-linux-pc-ever/
Místo toho použijte RPi.
šest odpovědi:
TheDoctor
2014-02-12 06:11:58 UTC
view on stackexchange narkive permalink

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

  • Neexistuje žádný aktuální port zdrojového kódu 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 měl 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 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.

„Pravděpodobně“ nepotřebujete dalšího berana, potřebujete ** dalšího berana. Linux vyžaduje 1 MB + RAM. Nedostatek MMU by také znamenal, že budete muset přijít na to, jak ho emulovat (nebo spustit ucLinux). Realisticky byste přinejlepším skončili napodobením schopnějšího procesoru v atmega, což by bylo řádově pomalejší než nativní kód. Dokonce ani arduino díky nemá nikde poblíž požadovaného berana.
ATmega328P má také 2 KB SRAM a ATmega2560P má pouze 8 KB. To je pouze 4násobek berana, ne 16x.
Manishearth
2014-02-12 06:13:00 UTC
view on stackexchange narkive permalink

Prostě nemá dostatek paměti RAM. Také byste jej museli 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 běží na Linuxu.

Nebo vždy existuje Raspberry Pi.

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 mluví o nich, a ne o Yun / atd., Proto rozdíl.
K dispozici je také brzy vydané [Arduino Tre] (http://arduino.cc/en/Main/ArduinoBoardTre), alespoň doufám, že to bude brzy ;-)
Connor Wolf
2014-02-12 12:24:58 UTC
view on stackexchange narkive permalink

Krátká odpověď je ne.

V zásadě byste potřebovali O hodně více RAM, než nativně má i největší ATmega.

Je to 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 budete muset 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é desce plošných spojů jako ATmega32U4, takže nevím, jestli to opravdu můžete počítat jako arduino.


Možná relevantní: Co je potřeba ke spuštění integrovaného systému Linux?

sa_leinad
2017-06-02 09:48:17 UTC
view on stackexchange narkive permalink

Existuje deska s názvem pcDuino, která může provozovat více variant Linuxu, jako je Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (zmíním jen několik). Tato deska není nativním Arduinem, spíše Arduino AtHeart a je vytvořena společností LinkSprite.
pcDuino

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

  • Arduino Yún je deska s mikrokontroléry 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 fungující až na 533MHz a dvoupásmový WiFi modul IEEE802.11n 2x2 2,4 / 5 GHz s bohatými funkcemi. 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 1x1 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.
Cuvtixo
2018-06-01 03:38:37 UTC
view on stackexchange narkive permalink

Je to několik let staré, ale možná vhodnější, protože Arduinos získává více RAM a 32bitové ATMega AVR atd. Zjevný problém, zejména ne v nejpopulárnější odpovědi, je zde. Arduino používá AVR MICROCONTROLLER , nikoli MICROPROCESSOR. To je hlavní důvod, proč neexistuje žádný linuxový port. Mikrokontroléry jsou navrž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 pro provozování různých aplikací v operačních systémech. Nezapomeňte, ž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 FreeDOS nebo dokonce Minix než Linux, možná něco v assembleru, ale kompilace 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.

Luke Tindale
2017-06-02 08:11:07 UTC
view on stackexchange narkive permalink

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 Napsal jsem v 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á dohoda, jak si možná myslíte) (Ontas je stále ve vývoji a stále se přidávají nové funkce)

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



Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...