Mümkünse Linux'u Arduino'da derlemek için ne gerekiyor?


Yanıtlar:


19

Linux çok karmaşık bir işletim sistemidir, ancak bir Arduino'ya sığabilir. Düşünülmesi gereken şeyler:

  • Kaynak kodun geçerli bir AVR portu yok.
  • Grafik yok, bunun yerine UART üzerinden terminale erişin.
  • Dahili flaş veya harici bir SD karta erişmek için dosya sistemi sürücüsünün yeniden yazılması gerekir.
  • Bu olurdu derece yavaş! ATmega328, 16 MHz'de veya yaklaşık 20 MHz'de (hızaşırtma) çalışır. Çoğu Linux makinesi asgari 400 MHz'de ve dahası grafiklerle çalışıyor.
  • Uno'nun RAM'inin 16 katı olan ATmega2650'yi (Mega'da olanı) kullanmak için muhtemelen ekstra RAM'e ihtiyacınız olacak. Ayrıca bir Due kullanabilirsiniz (Uno kadar 6x, daha fazla RAM).
  • OTG (Due) veya MAX3421EE (Mega ADK, USB host shield) için özel USB sürücüleri yazmanız gerekebilir.

Kısacası, çok zaman ve çaba gerektirecek ve muhtemelen günlük kullanım için çok yavaş olacaktır. Eğer gerçekten Arduino Linux istiyorsanız, Yún'a bir göz atın.


2
Sen "muhtemelen" ihtiyaç ekstra ram, sen olmaz ekstra ram gerekir. Linux 1 MB + RAM gerektirir. Ayrıca, bir MMU’nun olmayışı, birini nasıl taklit edeceğinizi (veya ucLinux’u çalıştıracağınızı) bulmak zorunda kalacağınız anlamına gelir. Gerçekçi olarak, en iyi ihtimalle, atmega'da daha yetenekli bir işlemciyi taklit edersiniz ki bu, yerel koddan daha yavaş bir büyüklük sırası olur. Arduino nedeniyle bile gerekli koç yakınında hiçbir yerde yok.
Connor Wolf

Ayrıca, ATmega328P 2 KB SRAM'a sahiptir ve ATmega2560P sadece 8 KB'a sahiptir. Bu sadece 4X koç, 16x.
Connor Wolf

16

Sadece yeterli RAM yok. Ayrıca, önyükleyiciyi yeniden yazmayı da içeren flash bellekten önyüklemeyi öğretmeniz gerekir.

Bunun yerine bir Arduino Yun veya bir PCDuino kullanabilirsiniz ; Arduinos "standart" olmasa da Arduino kalkanlarını destekliyor ve Linux kullanıyor.

Ya da her zaman ahududu pi vardır .


Neden Yun'un "standart" Arduino olmadığını söylüyorsun? En yaygın olamayacağı konusunda hemfikirim, ama gerçekten de bir Arduino.
jfpoilpret

@jfpoilpret Çoğu Arduinos, derlenmiş C ++ 'yı avr-gcc aracılığıyla çalıştıran ve bir USB işleme yongasına sahip olan atmega kartlardır. Çeşitli şekillerde / boyutlarda / güçlerde gelirler, ancak esas olarak aynıdırlar (Mega bir yana). OP'nin Yun / etc değil, bunlardan bahsettiğinden, ayrımcılıktan bahsettiği oldukça açıktı.
Manishearth

Ayrıca yakında piyasaya sürülecek olan Arduino Tre var , en azından yakında olmasını umuyorum ;-)
Chris O

6

Kısa cevap hayır.

Temel olarak, en büyük ATmega'nın bile sahip olduğu LOTS'a daha fazla koç gerekir.

İse dış donanım ekleyin ve daha güçlü bir CPU taklit ATMEGA programlamak ve bu konuda linux çalıştırmak için teorik olarak mümkün. Ancak, düz bir arduinoda mümkün değildir.

Bir AT91SAM3X8E işlemci olan Arduino Due üzerinde linux çalıştırmak çok daha gerçekçi olurdu. Ancak, yine de ek SRAM ve depolama alanı eklemeniz gerekir.

Arduino Yun gibi şeyler var, ama bu ATmega32U4 ile aynı PCB'deki tamamen ayrı bir linux modülü. Bu yüzden gerçekten bir arduino olarak sayabiliyor musunuz bilmiyorum.


Muhtemel alakalı: Gömülü linux çalıştırmak için ne gerekiyor?


1

Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL gibi birden fazla Linux türevi çalıştırabilen pcDuino adında bir tahta var . Bu anakart yerli bir Arduino değil, Arduino AtHeart ve LinkSprite tarafından yapılmıştır .
pcDuino

Arduino, Linino adında bir Linux türevi çalıştırmayı destekleyen birkaç panele sahip :

  • Arduino yun ATmega32u4 ve Atheros AR9331 dayalı bir mikroişlemci kartıdır. Atheros işlemci, Linino OS adlı OpenWrt tabanlı bir Linux dağıtımını desteklemektedir. Kartta dahili Ethernet ve WiFi desteği, bir USB-A portu, micro-SD kart yuvası, 20 dijital giriş / çıkış pimi (bunlardan 7'si PWM çıkışı ve 12'si analog giriş olarak kullanılabilir), 16 MHz kristali var. osilatör, bir mikro USB bağlantısı, bir ICSP başlığı ve 3 sıfırlama düğmesi.
  • Yeni Arduino Tian anakartı, 32 bit ARM Cortex® M0 + çekirdeği ve 533 MHz'e kadar çalışan ve zengin özelliklere sahip IEEE802.11n 2x2 2.4 / 100'e kadar çalışan bir yüksek kaliteli MIPS işlemcisi olan Qualcomm Atheros AR9342 içeren Atmel SAMD21 MCU tarafından desteklenmektedir. 5 GHz çift bantlı WiFi modülü. Qualcomm Atheros MIPS, Linino adlı OpenWRT'yi temel alan bir Linux dağıtımını destekler. Arduino Tian ayrıca, projelerinizi inşa etmenize yardımcı olacak 4GB eMMC hafızasına sahiptir. Güç tüketimini azaltmak için, Linux portunu MCU'dan açmak / kapatmak mümkündür.
  • Arduino Industrial 101 , Arduino 101 LGA modülü için bir Değerlendirme kurulu. ATmega32u4 mikrodenetleyici, temel kartına entegre edilmiştir. Modül, LininoOS adlı OpenWRT'yi temel alan bir Linux dağıtımını desteklemektedir. Kartta yerleşik WiFi (IEEE 802.11b / g / n, 150Mbps 1x1 2.4 GHz'e kadar işlemler), 3 GPIO (bunların 2'si PWM Çıkışı olarak kullanılabilir), 4 Analog Giriş, 1 USB, pin üzerinde 1 Ethernet sinyali var başlıklar ve dahili bir DC / DC dönüştürücü. Montaj kılavuzunu kontrol edin ve başlamak için anakartınızı mikro USB kablosuyla bir bilgisayara bağlayın.

-1

Bu birkaç yaşında, ancak Arduinos daha fazla RAM ve 32 bit ATMega AVR, vb. Aldıkça belki de daha ilgili. Arduino bir AVR MICROCONTROLLER kullanıyor, bir MİKRO İŞLEMCİ değil. Bu, linux limanı bulunmamasının ana nedenidir. Mikrodenetleyiciler, girdi ve çıktı ilişkisinin iyi tanımlandığı uygulamalar olan belirli bir görevi yerine getirmek için tasarlanmıştır. Mikroişlemciler, işletim sistemlerinde çeşitli uygulamaları çalıştırmak için tasarlanmıştır. Unutma, en başından beri Linux'un bir bellek yönetim ünitesine ihtiyacı vardı ve 8088 ya da 286 PC'lerde çalışamıyordu. Daha sonra Palm Pilotlar için aslen 68k işlemcilerin Motorola DragonBall ailesini hedef alan μClinux vardı. Asla özellikle başarılı olmadı. FreeDOS'u ve hatta Minix'i Linux'tan daha fazla başarıya sahip olabilirsiniz, belki bir montörde bir işletim sistemi kurmak, ancak bir mikrodenetleyicide bir işletim sistemi oluşturmak çok pratik değildir. Belki de zor bir akademik problem,


-2

Bu mümkün, ancak bir acı olurdu çünkü C'ye yazmak zorunda kalacaksınız (bir sd kart kalkanı ve ekstra bellek yongası (ları) gibi ihtiyaç duyulan ekstra donanımdan bahsetmediğinizden) Ontas gibi bir şey yazdım Arduino için C, boş döngü fonksiyonunun yavaşlamasının tekrarlanması pahasına sürücü ekleme desteğine sahip olduğu için yardımcı olacaktır. (Bu, düşündüğünüz kadar büyük bir anlaşma değil) (Ontaş hala geliştirilme aşamasındadır ve her zaman yeni özellikler eklenmektedir)

.İno ve beraberindeki .h dosyalarına bağlantı için buraya tıklayın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.