İ.MX 7 (veya i.MX 6) çok çekirdekli işlemciler için hangi IPC mekanizmaları vardır?


7

Yeni bir tasarım için i.MX 7 işlemciyi kullanmayı düşünüyorum. Genel mimari, en azından blok diyagramlarını karşılaştırmak suretiyle, i.MX 6'ya benzer görünmektedir.

Cortex-M4 çekirdek ve Cortex-A7 çekirdek (ler) arasındaki iletişim için hangi mekanizmalar var? Linux çekirdeği bu tür bir mekanizma sağlıyor mu (M4'te çalışan belirli bir RTOS veya ürün yazılımı varsayarsa) veya Freescale'in teklifindeki her iki işlemci için de bu özel ürün yazılımı mıdır? İşlemciler hemen hemen her şeyi paylaşıyor gibi görünüyor, bu yüzden atomik bir semaforla paylaşılan bir bellek tamponu veya bu satırlar boyunca bir şey uygulayabileceğinizi hayal ediyorum.

İdeal olarak, M4 donanım yazılımının A7 işlemcisi düşük güç modundayken bazı çevre birimlerini "devralmasını" istiyorum (yani, A7'nin bir şey yapmasını gerektiren "ilginç" bir şey gerçekleşene kadar periyodik iletişim aktarımlarını veya bazı veri analizlerini yönetin) ). Blok şemalardan ve i.MX 6 SoloX referans kılavuzundan, donanımın bunu engellemediği görülüyor.

Yanıtlar:


6

Farklı çekirdeklerde farklı çekirdekleri (veya çıplak metal kodunu) çalıştıran çok çekirdekli sistemler için genel terim Asenkron çoklu işlemedir ( AMP ). İlgili diğer terimler , aynı sistemdeki farklı türdeki birden çok çekirdeği ifade eden Heterojen Hesaplama ve Çip Üzerinde Çok İşlemcili Sistem'dir ( MPSoC ).

Freescale , farklı bir işletim sistemi (QNX) ve ürün hattı (PowerPC) tartışmasına rağmen, iyi bir geçmişe sahip olabilecek bu tür sistemlerle ilgili terminoloji ve tasarım konularını tartışan bir genel bakış belgesine (PDF) sahip olur . Sıkça tartışılan bir özgür yazılım kombinasyonu, mikroişlemcideki bir FreeRTOS işlemcideki Linux'tur . Hem Freescale hem de diğer satıcılardan gelen mevcut çiplerin bazıları, TI'nin OMAP 4/5 gibi i.MX7'ye benzer mimarilere sahip . Ayrıca Xilinx'in çift çekirdekli Zynq ARM + FPGA yongalarında AMP için bir çok tartışma ve örnek kod var.

2012'den beri ana hat Linux çekirdeği Uzak İşlemci (remoteproc) ve Uzak İşlemci Mesajlaşma (rpmsg) çerçeveleri için isteğe bağlı desteğe sahiptir . remoteproc, Linux çekirdeğinin "uzak" çekirdeği (güç açma / kapama, bellenim yükleme) kontrol etmesi için kullanılan genel bir arayüzdür. rpmsg, çekirdekler arasında mesaj göndermek için kullanılan genel arayüzdür. Bağlantılı dokümantasyon sayfaları API'lerini detaylandırır ve daha fazla içerik sunar. Bir geliştiricinin, G / Ç'yi kullanıcı alanına göstermek için bu çerçeveyi kullanarak uygulamaya özel bir Linux çekirdek sürücüsü yazması ve sonra rpmsg'yi "konuşan" FreeRTOS firmware'i yazması gerekir. Rpmsg çerçevesi genellikle çekirdekler arasındaki iletişimi gerçekleştirmek için paylaşılan belleği kullanıyor gibi görünmektedir.

Eğer biri henüz mevcut değilse, Freescale'in yakında AMP'ye özgü belgeleri ve örnekleri i.MX7 ve Linux ile yayınlayacağını tahmin ediyorum. İ.MX7 desteğini uygularken Freescale Linux git depolarına göz kulak olmak isteyebilirsiniz ; bu dalların zaman içinde ana hatlarla birleştirileceği tahmin edilmektedir.


Bunun gerçekten bu belirli donanım için en iyi uygulamanın olup olmadığını ve ne gibi alternatiflerin olduğunu merak ediyorum. Herhangi bir sorunla karşılaştıysanız (örneğin, çıkış veya gecikme süresi) veya daha iyi arayüzleri öğrenirseniz lütfen güncelleyin!
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.