ARM Cortex-M3 serisi üzerinde Linux


29

ARM için yeniyim ve diğer tüm serilerle biraz kafam karıştı.

Düşük güçlü bir ağ geçidi (ethernet, wifi ...) inşa etmem gerekiyor , bu nedenle bir korteks-M veya korteks-R'nin iyi bir başlangıç ​​noktası olacağını tahmin ediyorum. Ancak, Linux'u destekleyen bir korteks-m3 (oldukça popüler gibi görünüyor) diyen herhangi bir geliştirme kurulu bulamadı.

Mümkün görünüyor linuxM3 Bir etrafında hiçbir linux projesi var neden acaba bu yüzden, mBED veya LPCXpresso örneğin?

Biri beni aradığım geliştiriciye gösterebilir ya da neden "cortex m" + linux'un daha fazla cevapla gelmediğini açıklayabilir mi?


NXP, belirli bir işlemden emin olmayan diğer işlemciler için bazı linux desteğine sahiptir.
kenny

2
Ne kadar düşük güç olması gerekiyor? Freescale iMX283'ü temel alan 1/2 watt tam bir Linux sistemi kurmayı başardım. Ethernet olmadan normal yükleme sırasında 1 / 2W, Ethernet ile 1W, tam yükle <1,5W Ethernet ... Ethernet PHY normal yükte sistemin gücünün yarısı kadardır.
Darron

Yanıtlar:


18

ARM Cortex-M3 ile ilgili olarak:

Linux bir MMU (Bellek Yönetimi Birimi) gerektirir. ARM Cortex-M3'te bir tane yok. Ana çekirdeği Linux çekirdeğini ARM Cortex-M3'te çalıştırmak imkansızdır.

Ancak denilen MMUless işlemciler için Linux çekirdeğinin bir varyantı vardır uClinux'a .

M3 Kılavuzu üzerinde Linux

ST'nin uCLinux Üzerine Uygulama Notu

Bununla birlikte, başkalarının da belirttiği gibi, Linux'un M3'te pratik olması pek mümkün değildir. Harici RAM olmadan çalışmaz. En büyük Cortex-M3 parçalarının bile sadece 1MB flaş olduğuna inanıyorum, bu nedenle büyük olasılıkla fazladan depolamaya da ihtiyacınız olacak.


12

Cortex-M işinize bağlı değil, ARM926EJ-S'ye ihtiyacınız var

Cortex-M Linux için tasarlanmadığından, “Cortex-M + Linux” için yapılan bir arama pek fazla cevabı bulmaz. Linux gibi tam bir işletim sistemi çalıştırabileceği düşünülen en az güçlü ARM , ARMv5 mimarisini kullanan ARM926EJ-S serisidir . Bu geniş bir evlat edinme (birçok NAS kutusunda, eski akıllı telefonlarda ve Chumby Classic'te bulunur) ve çok sayıda desteğe sahip klasik bir işlemcidir, ancak haleflerinden biraz daha az etkilidir. Bir ARMv5 mimarisine sahiptir ve birkaç yüz MHz'de çalışır.

Gerçekten istediğin bu ama buna sahip olamazsın

Gerçekten istediğiniz işlemci, sanırım, Cortex-A5: ARM11'in yerini almak (ve biraz daha güçlü olmak üzere) tasarlandı, ancak daha verimli ve daha modern bir işlem için tasarlandı. (Not: Apple A5 ile ilgisi yok, bu özel bir Cortex-A9) 2009 yılında açıklandı ve silikonu "her gün" görmeyi bekliyoruz. Henüz hiç kimse bu işlemci için genel amaçlı bir SoC üretmedi, çünkü akıllı telefonlar pazarı ve pazarı daha güçlü bir A9 ve daha eski bir ARM11 arasında kullanıyor. Daha fazla ayrıntı için bu tartışmaya bakın: http://forum.beyond3d.com/archive/index.php/t-60145.html

Daha güçlü seçenekler

ARM11'deki ARMv6 biraz daha verimli, ama aynı zamanda daha güçlü (bu nedenle, güç bütçenizde tasarruf görmeyebilirsiniz). IPhone 3G, iPod Touch, Kindle ve Zune gibi daha az eski akıllı telefonlara güç veriyor ve 500-800 MHz'de çalışıyor. En yeni mimari ARMv7, Cortex serisidir. Cortex-A8 ve -A9 en son akıllı telefonlara ve tabletlere 800MHz - 1.2GHz’de güç veriyor, eğer minimalist bir tasarım istiyorsanız daha küçük, daha yavaş işlemcilerle takılmak isteyeceksiniz. Bu işlemcilerin watt başına performans sayıları harika, ancak sadece ARMv5 parçalarını kullanmak daha güvenli (ve kesinlikle daha az karmaşık olacak) olabilir.


2
Not: Cortex-A5 şimdi satışa sunuldu
pjc50

10

Lütfen Linux'u (uClinux) destekleyen bazı Cortex-M3 platformları için bu siteyi kontrol edin:

http://www.emcraft.com/

Aşağıdaki Cortex-M3 MCU'larında başarıyla uClinux kullanıyoruz: NXP’nin LPC1788’i, STmicro’nun STM32F2’si, Actel’in SmartFusion’ı ve bir çiftine daha fazla destek ekleme süreci devam ediyor: Freescale Kinetis, STM32F4 (bu ikisi Cortex-M3 yerine Cortex-M4 .

Doğru, Linux (uClinux dahil) çalışmak için harici RAM gerektirir - Cortex-M'nin entegre SRAM'i ultra küçük bir Linux yapılandırması için bile yeterince büyük değildir; pratik yapılandırmalar için en az 4 MB harici RAM gerekir. Aslında, daha iyi, aslında - eğer uygulamanızın "özelliklere" ihtiyacı varsa, Linux her şeyi desteklemektedir ve daha az değil, daha fazla RAM eklediğiniz için üzülmeyeceksiniz.

Harici RAM için kullanılacak belirli cihazlarla ilgili olarak, hepsi belirli bir MCU tarafından sağlanan harici bellek arayüzü ile tanımlanır. STM32F ve SmartFusion yalnızca SRAM'ı destekler; 6-7 dolara 16 MB 70ns PSRAM (daha hızlı işlem için Sayfa Modu ile) alabileceksiniz; LPC1788 daha hızlı SDRAM hafızalarını destekler; Kinetis K70, DDR2'yi (64 MB'lık bir cihaz için 5 $), vb. Destekler. Tüm bu anılar statik zamanlarda sadece uA seviyelerinde güç çekiyor.

Önyüklenebilir bir Linux yüklemek için bir şeye ihtiyacınız var, ancak bu herhangi bir konuda olabilir - ağ, SD Kart, SPI EEPROM, NOR veya NAND Flash, vb.

Genel olarak, Linux'un bir Cortex-M3 tasarımı için tamamen pratik bir seçenek olduğunu düşünüyorum.

Güncelleştirme

Cihazınızın çoğu zaman boşta olduğu birçok güce duyarlı uygulama vardır, ancak çalışırken küçük bir RTOS kullanarak elde edilmesi kolay olmayacak birçok şeyi yapabilmesi gerekir. Güvenli bağlantılar, VLAN, TCP / IP tüneli, SNMP, SD Kart, USB aygıtı / ana bilgisayarı, WiFI, vb.

Daha küçük bir RTOS ile bu özelliklerden bazıları mevcut olacak, bazıları olmayacak, ancak hikayenin sadece bir kısmı. Müşterilerimizle gittikçe daha fazla gördüğümüz şey, Cortex-M3 kullanan gömülü tasarımların bu gelişmiş özelliklerin sadece 1 veya 2'sine ihtiyaç duymaması, birçoğunun tek bir cihazdan ihtiyaç duymasıdır. Bir RTOS bir tasarımın ihtiyaç duyduğu tüm özellikleri sağlasa bile, hepsini çipte belleğe sıkıştırmak zor olacak. uClinux veya değil, benim tahminim trendin gittikçe daha fazla Cortex-M tabanlı tasarımların harici bellek kullanacağı şeklinde olacağı yönünde. Tabii ki, tasarımınızda harici RAM aldığınızda, uClinux daha mantıklı olmaya başlar.

Cortex-M tarafından sağlanan düşük işlem gücüyle ilgili olarak (Linux çekirdeğinin gereksinimlerine göre ölçüldüğü gibi), son bir deneyim olarak, Freescale K70 MCU'da uClinux'ü yeni etkinleştirdik. Bu bir Cortex-M4'tür (Cortex-M3 plus donanım FP ve DSP üniteleri ile aynıdır); 2x8KB çip üzerinde önbellekleri olan yüksek yoğunluklu RAM (DDR2) ve Flash (NAND) ile çip üzerinde arabirimler. 120MHz Cortex-M çekirdeği, yakında 150MHz parçaları geliyor.

Linux (uClinux) bu cihazda çok güzel çalışıyor. 'Dhrystone' kullanarak, 250Mhz Freescale PowerPC kutusunda elde ettiğimiz% 50 civarında performans elde ediyoruz. Hızlı başlatma, çok sayıda RAM (TWR-K70 modülü 128 MB RAM ve 256 MB NAND Flash sağlar), ağ iletişimi, JFFS2, framebuffer, SSH, HTTPD, Qt / E - tüm bunlar K70 üzerinde gayet iyi çalışıyor. Genel kullanıcı deneyimi, MMU dolu bir mikroişlemcideki normal "gömülü Linux" unuzdur.

İşte Freescale Kinetis K70 Cortex-M4 MCU’da çalışan canlı bir uClinux oturumunun videosu:

http://www.youtube.com/watch?v=UZjJrLG9CeA


5

Harici bellek için bir tür destek olmadan (hem RAM hem de Flash), söz konusu aygıtların yerleşik kaynaklarına en küçük linux dağıtımını (örneğin, uclinux) bile sığdırmanız mümkün değildir.

Bu, tipik olarak, ilave yongaları bağlamak için 32 bitlik bir veri yolunun ortaya çıktığı anlamına gelir. Bu nedenle linux çalıştırmak için kullanılan megabayt aralığında ek RAM ve flash yongalarla linux tek kartlı bilgisayarların (SBC) görülmesi daha yaygındır. Listelediğiniz mikro denetleyiciler bunu sunmuyor. Gördüğüm kadarıyla, korteks-m0 / m3, 8 bitlik bir mikroda (veya zar zor) yeterli olmayan uygulamalar için daha fazla ifade eder - bu nedenle ihtiyacınız olan tüm kaynaklar çipin içine yerleştirilmiştir.

Bu soruyu daha iyi yanıtlamak için gömülü linux gereksinimlerini analiz etmek akıllıca olacaktır. Bu genellikle bir önyükleyici, çekirdek ve dosya sistemine - ve elbette onu çalıştırmak için gereken gerçek kullanıcı uygulamasına ve kitaplıklarına sığabilme anlamına gelir. Bunları toplayın, yakında yararlı bir şeyler yapmak için birkaç megabayt RAM ve Flash uygulamasına ihtiyacınız olduğunu göreceksiniz.


3

Stm32'de MMU bulunmadığından, ucLinux kullanmanız gerekir.

UcLinux için hızlı bir google sizi doğru yöne gönderir. https://www.google.com/search?q=stm32+uclinux

Ancak diğer taraftan, Linux bu tür küçük mcularda pek de kullanışlı değil ve çoğu zaman çalışabilmesi için harici koç ve bir SD kartına ihtiyacınız var. Ve sonra fiyat etiketi Rasperry PI gibi projelere yaklaşıyor, bu yüzden ihtiyaçlarınızı neler olduğunu düşünmeniz gerekiyor.

Belki başka bir küçük işletim sistemi daha iyi bir seçimdir? Her yerde Linux olması güzel olsa bile ...


3

Linux kullanan harici Bellek ile Cortex-M3'ü kullanmanın gerçekten yararlı olduğu akıllı meetering gibi bazı düşük güçlü uygulamalar var. Toplam maliyet açısından değil (panolar daha hızlı bir Core'la olduğu kadar maliyetli olacaktır) değil, enerji tüketimi açısından düşünün.

Bir batarya ile yaşıyorsanız ve çoğu zaman boş moddaysanız, her dakika ya da öylesine bir ölçüm alarak ve ardından bir ağ üzerinden gönderirseniz, TCP için linux'un size sunduğu altyapıyı kullanmanız güzel olabilir. / IP, şifreleme vb.

Bu yılki gömülü Dünya Sergisinde Pengutronix, EnergyMicro'dan prototip kartı üzerinde bir linux gösterdi ve Cortex-M3 üzerinde harici RAM ve boş moddayken 1,6 mW güç tüketiyordu. Energy Micro, RAM kodunu çalıştırırken 32MHz'de çalışırken yaklaşık 16mW Güç gerektiren aprox 16mW Güç gerektiren düşük güç uygulamaları için özel olarak optimize edilmiş portföylerinde inanılmaz derecede düşük güçlü Cortex-M3 ve M4 MCU'lara sahiptir. Bu, Linux'u daha büyük ve daha hızlı işlemcilerin sadece enerji bütçenize uymadığı çeşitli pille çalışan aygıtlarda etkinleştirebilir. Öte yandan, bunlardan çok fazla işlem gücü elde edemezsiniz ...

Temel olarak, eğer bir batarya yaşıyorsanız ve çok fazla işlem gücüne ihtiyacınız yoksa, bu sizin için bir çözüm olabilir, eğer MMU ile daha büyük bir ARM Core kullanmayacaksanız.


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.