Bir ARM'nin harici bellekle arabirim oluşturması için iyi bir seçim nedir?


13

LPC2132 yongasını kullanarak bir projeyi yeni tamamladım, ancak 64kb RAM'in tamamını kullanmakla sorun yaşadım.

Bir sonraki projem için, harici, çok daha büyük bir bellek yongasına başvurabilecek bir şey kullanmak istiyorum. Bunu nasıl bir ARM yapabilir ve iki cihazın konuşmasını sağlamak için ne yapmam gerekir?


1
SRAM, SDRAM, DDR, DDR2, DDR3 hakkında ne tür bir hafızadan bahsediyoruz?
Jay Atkinson

1
Özellikle tür yok. 64k'den daha büyük bir şey ...
samoz

Yanıtlar:


10

Harici RAM belleği için bir MMU'ya ihtiyacınız yoktur, ihtiyacınız varsa belirleyici faktör, sadece daha fazla alana ihtiyaç duymaktan tamamen ayrı bir konudur. Doğrudan metali kodluyorsanız, hayatınızı bir MMU'ya sahip olmamayı kolaylaştırabilir. Bir MMU'nun neredeyse hiç harici bir bileşen olmadığını, SoC kalıplarında olduğunu da belirtmek isterim.

ARM7'yi birçok ailede ARM7'den harici belleğe izin veren birçok aile içinde bulabilirsiniz, örneğin NXP LPC2212 Serisi en iyisi demiyor, sadece google'da harici bir bellek arayüzü ile gelen ilk ARM7 SoC, birçok seçenek var .

Hemen hemen hepsini harici bellek denetleyicilerine sahip SoC'larda bulabileceğiniz için ARM ailelerindeki çeşitli çekirdeklerin özelliklerine daha fazla dikkat ediyorum.

Şimdi, ne tür bir belleğe ihtiyacınız olduğu ve nasıl çalışacağı hakkında, seçtiğiniz SoC'ye ve harici bellek denetleyicisinin hangi belleği desteklediğine bağlı. Örneğin, ARM7 SoC i bağlantılı harici SRAM'ı, flaşları ve romları destekler ve 4 16MB'ye kadar bankayı destekler, böylece aynı anda harici flaş ve SRAM'yi bağlayabilirsiniz.

Ayrı RAM ve flash IC'leri kullanabilirsiniz, ayrıca 1 pakette hem flash hem de ram içerebilen MCP (Çoklu Yonga Paketi) adı verilen paketler vardır. Bu cihazları nasıl seçtiğiniz birçok faktöre bağlıdır, uygulamanız hakkında daha spesifik olmanız gerekir.

Bağlamanın ne kadar kolay olduğu, ihtiyacınız olan hıza bağlıdır. Çoğu harici bellek denetleyicisinin programlanabilir saat hızı vardır. Bellek arayüzü saat hızları en az 10MHz ve muhtemelen çok daha yüksek olabilir. Kısacası böyle bir şey yapmamanız muhtemeldir, bir PCB tasarlamanız ve bu hatlar için sinyal bütünlüğü sorunlarına özellikle dikkat etmeniz gerekir.

En iyi seçeneğiniz, oynamak istediğiniz bir çekirdeği seçmek ve üzerinde harici bellek bulunan birçok geliştirme kartından birini bulmaktır.


Cevabınız için teşekkürler Mark. Bir MMU'nun gerekli olup olmadığı konusunda kafam karışmıştı. Sparkfun'a baktığımızda, şu anda satışta bir harici bellek veriyoluna sahip bir LPC 2294 var. Sanırım bununla gideceğim.
samoz

4
MMU, sanal adres alanını fiziksel aygıtlarla eşlemek için kullanılır. İşletim sistemleri tarafından farklı işlemlerin belleğini izole etmek için kullanılır, sayfalama, bellek parçalanması sorunlarını çözme, bellek haritalama dinamik donanım aygıtları, vb. Bellek alt sistemini sanallaştırır. Çoğu durumda bir MMU'ya yalnızca çok işlemcili tam özellikli bir işletim sistemi çalıştırmak istiyorsanız ihtiyacınız olacaktır. Örneğin, tüm linux çekirdeğini çalıştırmak için bir MMU'ya ihtiyacınız vardır, ancak MMU olmadan çalışmak üzere değiştirilmiş uClinux vardır.
Mark

SPI / IIC modunda çalışan harici bir eeprom denemek mümkün mü? MCC'nin flash belleğini 24c64 IC kullanarak genişletmeyi dört gözle bekliyorum.
0xakhil

Zor olurdu; iyi bir breadboard, çok kısa teller (örneğin 1 inç) ve çok yavaş saatler gerekir (2 MHz ötesinde bir şey önlemek, söyleyebilirim). Daha yavaş yükselme / düşme süreleri elde etmek için kablolar yerine 200 ohm direnç kullanırım. GND'nin yongalar arasında da kısa olması gerektiğini unutmayın. Bu herhangi bir kaydı bozmaz, ancak daha iyi bir panele çevirebileceğiniz bir kavram kanıtı verir.
Guillermo Prandi

5

Daha büyük STM32 işlemciler serisinde (32 bit Cortex-M3 çekirdek) Esnek Statik Bellek Denetleyicisi olan bir FSMC bulunur. Bununla Flash, RAM ve LCD gibi diğer çevre birimlerini bağlayabilirsiniz.

Ben de tcrosley de söylediğim gibi STM32F103ZET6 tavsiye edebilir ve ebay 68 $ için flaş ve sram dahil olmak üzere bir geliştirme kurulu alabilirsiniz - http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=220619908411


uyarısı, bir STM32x'e eklediğiniz herhangi bir harici bellek dahili SRAM veya dahili Flash kadar hızlı olmayacaktır. 6-9X gibi daha yavaş. Hızlı belleğe ihtiyacınız varsa, dahili olduğundan emin olun. Bir STM32 üzerinde 16MB PSRAM ile bir proje yapıyorum ve genel amaçlı bellek olarak kullanırsanız oldukça yavaş.
Mark Lakata

1
FSMC / PSRAM'ın daha hızlı gitmesini sağlayabilirsiniz, ancak normal bellek alanına, yani yığın belleğe eşleyemezsiniz. Özel DMA erişimlerini kullanmanız gerekir.
Mark Lakata

4

Yakın zamanda yeni bir proje için benzer bir gereksinim vardı ve yaklaşık 10 $ miktarında 512K dahili Flash ve 64K dahili RAM ile STMicro STM32F103ZET6 (ARM 32 bit Cortex-M3) seçtim. 64MB'a kadar harici belleği (26 adres biti) adresleyebilen bir bellek denetleyicisine sahiptir. 144 pimli LQFP paketinde bulunur. (Prototipler için BGA kullanmayı sevmiyorum.) 2MB Cypress SRAM ile başka bir yapıştırıcı gerekmeden (çoğullama gerektirmeden) arayüz oluşturacağım.


Güzel! Bir geliştirme panosu mu kullanıyorsunuz veya kendinizinkini mi yaptınız?
samoz

Yerel STMicro temsilcim bana "STM32 için IAR KickStart Kiti" verdi iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/225 ; ancak mikro sadece 64 pimli bir paket olduğundan FSMC pimleri yoktur, bu yüzden panoları 144 pimli pakete getirebilirim.
tcrosley

Bir şey mi kaçırıyorum? 26 bit doğrudan 2 ^ 6 = 64 M konuma hitap edebilir. 512 MB, 8 baytlık kelimeler anlamına gelir. 512Mb olmalı mı?
XTL

1
@XTL: iyi yakaladım, cevabımı düzelttim.
tcrosley

3

Belki bir Atmel AT91SAM9G20 ?

Biraz canavar (217 pimli BGA paketi), ancak fiyat için harika bir çip. Biraz daha insan dostu bir şey arıyorsanız, belki Atmel AT91M42800A'yı deneyin . En azından Atmel'den gelen harici bellek donanımına sahip en küçük MCU olduğunu düşünüyorum. 144 iğneli bir LQFP paketi.

Atmel'in parametrik bir seçici var: http://www.atmel.com/dyn/products/param_table_v2.asp?family_id=605&OrderBy=part_no&Direction=ASC

(Sanırım Atmel için çalışmadığımı eklemeliyim; sadece onların şeylerine aşina olurum.)

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.