Apa pilihan yang baik bagi ARM untuk berinteraksi dengan memori eksternal?


13

Saya baru saja menyelesaikan proyek menggunakan chip LPC2132, tetapi mengalami masalah dengan menggunakan seluruh 64kb RAM.

Untuk proyek saya berikutnya, saya ingin menggunakan sesuatu yang dapat merujuk pada chip memori eksternal yang jauh lebih besar. ARM macam apa yang bisa melakukan ini dan apa yang harus saya lakukan untuk membuat kedua perangkat berbicara?


1
memori seperti apa yang kita bicarakan SRAM, SDRAM, DDR, DDR2, DDR3?
Jay Atkinson

1
Tidak ada jenis khusus. Sesuatu yang lebih besar dari 64k ...
samoz

Jawaban:


10

Anda tidak memerlukan MMU untuk memori RAM eksternal, faktor penentu jika Anda memerlukannya adalah masalah yang sama sekali terpisah dari hanya membutuhkan lebih banyak ruang. Jika Anda telah mengkodekan langsung ke logam itu sebenarnya bisa membuat hidup Anda lebih mudah tanpa memiliki MMU. Saya juga ingin mencatat bahwa MMU sebenarnya tidak pernah merupakan komponen eksternal tetapi lebih pada mati SoC.

Anda dapat menemukan ARM SoC di banyak keluarga yang memungkinkan memori eksternal dari ARM7 menyala misalnya NXP LPC2212 Series tidak mengatakan yang terbaik, hanya ARM7 SoC pertama yang muncul di google dengan antarmuka memori eksternal, ada banyak opsi .

Saya akan lebih memperhatikan fitur dari berbagai core dalam keluarga ARM karena Anda dapat menemukan hampir semuanya di SoC dengan pengontrol memori eksternal.

Sekarang untuk jenis memori apa yang Anda butuhkan dan cara membuatnya bekerja, itu tergantung pada SoC yang Anda pilih dan apa memori yang didukung oleh pengontrol memori eksternal. Misalnya ARM7 SoC i linked mendukung SRAM eksternal dan juga flash dan ROM dan mendukung hingga 4 bank 16MB, sehingga Anda dapat mengaitkan flash eksternal dan SRAM pada saat yang sama.

Anda dapat menggunakan RAM dan flash IC yang terpisah, ada juga paket yang disebut MCP (Paket Multi Chip) yang dapat menyertakan flash dan ram dalam 1 paket. Cara Anda memilih perangkat ini tergantung pada banyak faktor, Anda harus lebih spesifik tentang aplikasi Anda.

Seberapa mudah menghubungkan ini tergantung pada kecepatan yang Anda butuhkan. Sebagian besar pengontrol memori eksternal memiliki laju jam yang dapat diprogram. Kecepatan clock antarmuka memori bisa sangat tinggi setidaknya 10MHz dan kemungkinan jauh lebih tinggi. Singkatnya kemungkinan besar Anda tidak melakukan sesuatu seperti ini, Anda perlu merancang PCB dan memberikan perhatian khusus pada masalah integritas sinyal untuk saluran ini.

Taruhan terbaik Anda adalah memilih inti yang ingin Anda mainkan dan temukan salah satu dari banyak papan pengembangan di luar sana dengan memori eksternal di atasnya.


Terima kasih atas jawabannya, Mark. Saya bingung apakah MMU diperlukan atau tidak. Melihat Sparkfun, mereka sebenarnya memiliki LPC 2294 yang sedang dijual sekarang, yang memiliki bus memori eksternal. Saya pikir saya akan pergi dengan itu.
samoz

4
MMU digunakan untuk memetakan ruang alamat virtual ke perangkat fisik. Ini digunakan oleh sistem operasi untuk mengisolasi memori dari proses yang berbeda, untuk paging, menyelesaikan masalah fragmentasi memori, pemetaan memori perangkat perangkat keras yang dinamis, dll. Ini memvirtualisasikan sub-sistem memori. Dalam kebanyakan kasus, Anda hanya perlu MMU jika Anda ingin menjalankan sistem operasi dengan serangkaian fitur multi-pemrosesan. Sebagai contoh, Anda memerlukan MMU untuk menjalankan kernel linux penuh, meskipun ada uClinux yang telah dimodifikasi untuk berjalan tanpa MMU.
Tandai

apakah boleh ke papan tempat eeprom eksternal bekerja dalam mode SPI / IIC? Saya menantikan untuk memperpanjang memori flash MCU saya menggunakan IC 24c64.
0xakhil

Itu akan sulit; Anda memerlukan papan tempat memotong roti yang baik, kabel yang sangat pendek (mis. 1 inci) dan jam yang sangat lambat (hindari apa pun yang melebihi 2 MHz, menurut saya). Saya akan menggunakan 200 ohm resistor daripada kabel untuk berjaga-jaga, untuk mendapatkan waktu naik / turun yang lebih lambat. Ingatlah bahwa GND juga harus pendek antara chip. Ini tidak akan memecahkan rekor apa pun, tetapi akan memberi Anda bukti konsep yang dapat Anda terjemahkan ke papan yang lebih baik.
Guillermo Prandi

5

Seri prosesor STM32 yang lebih besar (inti Cortex-M3 32-bit) memiliki FSMC, yang merupakan Pengontrol Memori Statis Fleksibel. Dengan ini, Anda dapat menghubungkan Flash, RAM, dan periferal memori lainnya seperti LCD dan semacamnya.

Saya dapat merekomendasikan STM32F103ZET6 sebagai tcrosley juga mengatakan, dan Anda bisa mendapatkan papan pengembangan termasuk flash dan SRAM di ebay untuk $ 68 - http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=220619908411


peringatan, setiap memori eksternal yang Anda tambahkan ke STM32x tidak akan secepat SRAM internal atau Flash internal. Seperti 6-9X lebih lambat. Jika Anda membutuhkan memori cepat, pastikan itu internal. Saya sedang melakukan proyek dengan 16MB PSRAM pada STM32 dan sangat lambat jika Anda menggunakannya sebagai memori tujuan umum.
Mark Lakata

1
Anda bisa mendapatkan FSMC / PSRAM lebih cepat, tetapi Anda tidak bisa hanya memetakannya ke ruang memori normal, yaitu untuk memori tumpukan. Anda harus menggunakan akses DMA khusus.
Mark Lakata

4

Saya baru-baru ini memiliki persyaratan yang sama untuk proyek baru, dan memilih STMicro STM32F103ZET6 (ARM 32-bit Cortex-M3), dengan 512K Flash internal dan 64K RAM internal untuk sekitar $ 10 secara kuantitas. Ini memiliki pengontrol memori yang dapat mengatasi hingga 64MB memori eksternal (26 bit alamat). Tersedia dalam paket LQFP 144-pin. (Saya tidak suka menggunakan BGA untuk prototipe.) Saya akan menghubungkannya dengan 2MB Cypress SRAM, tanpa lem lain yang diperlukan (tidak ada multiplexing).


Keren! Apakah Anda menggunakan papan pengembangan atau Anda membuatnya sendiri?
samoz

Perwakilan STMicro lokal saya memberi saya "Kit KickStart IAR untuk STM32" iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/225 untuk bermain; Namun mikro hanya paket 64-pin sehingga tidak memiliki pin FSMC, jadi saya mungkin mendapatkan papan dengan paket 144-pin.
tcrosley

Apakah saya melewatkan sesuatu? 26 bit dapat langsung mengatasi 2 ^ 6 = 64 lokasi M. 512MB dengan itu berarti kata-kata 8-byte. Haruskah itu 512Mb?
XTL

1
@ XTL: tangkapan bagus, saya mengoreksi jawaban saya.
tcrosley

3

Mungkin Atmel AT91SAM9G20 ?

Ini sedikit binatang (paket BGA 217-pin), tapi ini harga yang bagus. Jika Anda mencari sesuatu yang sedikit lebih ramah manusia, mungkin coba Atmel AT91M42800A . Saya pikir itu MCU terkecil yang memiliki perangkat keras memori eksternal, setidaknya dari Atmel. Ini adalah paket LQFP 144-pin.

Atmel memiliki pemilih parametrik: http://www.atmel.com/dyn/products/param_table_v2.asp?family_id=605&OrderBy=part_no&Direction=ASC

(Kurasa aku harus menambahkan bahwa aku tidak bekerja untuk Atmel; Aku hanya terbiasa dengan barang-barang mereka.)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.