Mikroişlemcinin yeterince güçlü olup olmadığını nasıl öğrenebilirim?


9

Herkes, bir rasbperry pi veya hatta bir PC'de gömülü bir cihaz için bir konsept kanıtı geliştirmenin kolay olduğunu bilir, ancak ürününüz için bir mikroişlemci seçmeye geldiğinde, seçiminizin konseptinizin çalışmasına izin vereceğinden emin olmak zordur optimal.

Şu anda ahududu pi üzerinde başarıyla çalışan bir medya akışı projem var, ancak pi bir son cihaz olarak uygun olması için çok büyük ve hantal. Ayrıca son cihazın özel olduğu belirtilmektedir. Kullanabileceğim işlemcilere güven bulmakta zorlanıyorum.

Bir işlemcinin uygulamamı çalıştıracak kadar güçlü olup olmadığını öğrenmek için iyi bir süreç nedir?

Temelde benim gereksinimleri:

  • WiFi kullanımı için USB host veya gömülü TCP / IP yığını
  • I2S / PCM ortam protokolü
  • Çevresel yapılandırma için I2C

Bu özelliklere sahip yongaları bulmak çok basittir. Dürüst olmak gerekirse daha kolay olamazdı. Sorun, çipin yeterince hızlı, işleme ve operasyon açısından olup olmadığını söyleyebiliyor.

LPC4337'ye biraz baktım ve geliştirme ortamı bana biraz sorun verse de uygun olacağını hissediyorum, bu yüzden hala etrafa bakıyorum, bu da beni Texas Instruments'tan CC3200'e götürdü , bu denetleyici yalnızca 80 MHz'de çalışıyor ve bunun gerçek zamanlı medya akışı için yeterince güçlü olup olmayacağından emin değilim.

Bir işlemcinin uygulamam için yeterince hızlı olduğundan emin olmak için bazı adımlar nelerdir ? Bir 80 MHz işlemcinin yeterince iyi olup olmayacağını nasıl bileceğim veya 204 MHz veya daha yüksek bir şeye ihtiyacım var mı?


1
Sanırım güç gereksinimlerini de sağlamanız gerekecek.
Kolosy

Bu, sorunuza cevap vermiyor, ancak USB 2.0 ana bilgisayar, I²S ve beş I²C ile birlikte iki kat daha fazla Flash (2MB) ve üç kat daha fazla RAM (512K) olan yeni PIC32MZ mikrodenetleyici ailesine bakmayı düşünebilirsiniz. LPC4337 ile aynı fiyat için modüller. IDE (MPLAB X) ve derleyici denemekte özgürdür, ancak deneme süresinden sonra, isterseniz optimize edilmiş derleyici için ödeme yapmanız gerekir (optimize edilmemiş GCC derleyicisi ücretsiz kalır). Microchip, USB ve TCP / IP yığınları için telifsiz kütüphanelere sahiptir.
tcrosley

2
Bazılarının sorunun noktasını kaçırdığını düşünüyorum. Parça tavsiyesi aramıyorum. Yonga üzerinde yeterli alan olduğundan veya uygun çevre birimlerinin bulunduğundan emin olmak kolaydır. Daha çok, yeterince güçlü bir işlemci seçtiğimden emin olmak için parametreleri ve adımları işlemek için bir rehber arıyorum. Hızındaki gibi.
Funkyguy

Spesifikasyonlardan neye ihtiyacınız olduğunu söyleyemiyorsanız, sadece numune ve prototip sipariş edebilir misiniz?
Roger Rowland

@RogerRowland Her ne kadar bu çok uzun bir süreç olabilir. Somurtkan bir program için minimum özellikleri bulmak için bir yol var
Funkyguy

Yanıtlar:


5

Ne kadar emin olmanız gerektiğine bağlıdır. Uzay endüstrisinde çalışıyorum ve bu genellikle "CPU, RAM, ROM bütçeleri" dediğimiz şeyle başarılıyor. Bir bütçe, maliyet gücü kütlesi veya başka bir şey olsun, genel talebi almak için hepsini ölçüp toplayabileceğiniz yönetilebilir öğelerdeki sürecinizi yıkıyor. Daha sonra, talebinizdeki artışı hesaba katmak için zamanla azalan, projenizin olgunluğuna bağlı bir güvenlik faktörü alırsınız. Başlangıçta, büyük ölçüde deneyime dayanır ve daha sonra teknolojiler seçildikçe rafine edilir.

  • ROM nispeten kolaydır. Bir yığının / kitaplığın / sürücünün kabaca ROM belleğini ne kadar aldığını bilirsiniz: ya yazar tarafından verilir ya da yüklemeden derleyebilirsiniz. Bu rakam, derleyici optimizasyonları nedeniyle kodunuzu her değiştirdiğinizde çok değişebilir.
  • RAM çok daha hileli. Özelleştirilmiş entegre geliştirme ortamlarındaki bazı araçlar size çalışma zamanı tahminleri verir ve bunun nasıl yapılabileceğini görebilirim, ancak GCC tarafından sağlanan herhangi bir genel aracın farkında değilim (başka türlü biliyor mu?). Ne yazık ki, kodunuzun en büyük veya en fazla tahsis edilen öğelerini saymak gibi görünüyor (değişkenlerin ömrünü hesaba katarak).
  • CPU, mimariye (CISC veya RISC) bağlı olarak MIPS'nin (Saniyede Milyonlarca Talimat, CPU saat frekansıyla orantılı) temsili olabileceğinden veya olamayacağından daha karmaşıktır. Çünkü elinizde kod varsa, en kritik bölümü talimatlara ayırabilir ve zaman gereksiniminden gerekli MIPS'yi hesaplayabilirsiniz. Engelli olmayan herhangi bir kesintinin o noktada tetiklenmesi düşünülmelidir - Murphy yasası ve hepsi.

Yukarıdakiler, iş parçacıkları (iş parçacıkları elle çekirdeklere ayrılmadığı sürece) ve işletim sisteminiz olduğunda programlayıcıların ne zaman devreye girdiğini doğru bir şekilde belirlemek son derece zordur. Basit mikrodenetleyici kodları için yönetilebilir olmalıdır, ancak uygulamanız için buna değer mi?

Bu sadece benim katılımım: Entegre sistemler tasarlasam da, bu bütçelerden (benim için girdi olan) sorumlu değildim ve aslında uzmanların bu konudaki hikayelerini bilmekle çok ilgileniyorum.

Zeyilname: Gerçek zamanlı sistemlerde, sistemin iş akışı boyunca iletilmesinde gecikmeye / gecikmelere ve her biri tarafından alınan maksimum süreye bağlı olan maksimum örnekleme süresi aracılığıyla sistemin göreve yeterliliğini değerlendirmek genellikle daha kolaydır. görev örneği.


avrdudeglobal değişkenler tarafından ne kadar RAM alındığına dair tahminler sağlayabilir, ancak temelde bir yükleme aracı olduğu için kuru çalıştırma seçeneğiyle çalıştırmanız gerekir.
felixphew

1
IMO'yu tahmin etmenin en zor kısmı yığın ve yığın kullanımıdır. Bir PIC32 üzerinde çalışan mevcut gömülü sistemimiz (tescilli işletim sistemi), genellikle 25'ten fazla göreve sahiptir, bunların çoğu aktifken birkaç K yığınına veya daha fazlasına ihtiyaç duyar. Bunlardan birkaçının yanı sıra ağır yığın kullanımı elde edersiniz ve yakında RAM'in tükenmesine yakın olabilirsiniz. Ben sadece bir hafta kadar önce özyinelemeli bir rutin yazdım ve yerel değişken yığın kullanımı (diziler vb.) Çok dikkatli olmak zorunda
tcrosley

İlginç, teşekkürler. Kodunuz tarafından ayrılan RAM miktarını (kod analizi veya belirli bir araç) tahmin ediyor musunuz veya çalışma zamanında ölçüyor musunuz? Bana öyle geliyor ki MIPS'nin tahmin edilmesi biraz daha zor çünkü RAM kullanımından farklı olarak kodları talimatlara bölmeden analiz etmekten tahmin edilemiyor (mümkün, kolay değil). İş parçacıkları işi inanılmaz derecede zorlaştırıyor, ancak CPU analizi hala daha fazla adım gerektiriyor gibi görünüyor - genel olarak daha az bir sorun. Ne düşünüyorsun?
Bay Mystère

2

"Mikroişlemcinin yeterince hızlı olup olmadığını nasıl öğrenebilirim?" Sorusunu basitleştireceğim.
En hızlı yürütme süresini gerektiren işlemi / prosedürü tanımlamanız gerekir . İşlemciniz belirli bir süre içinde veya daha kısa bir sürede gerekli talimatları uygulayabilirse, yeterince hızlıdır.
Bir örneğe bakalım: En hızlı gereksiniminiz elektrik kesintisi kaybını işlemek ; bu 10 milisaniyede 10.000 talimatın uygulanmasını gerektirir. En az 1 MIP'li bir CPU'ya ihtiyacınız olacak. Bunu "MHz" e dönüştürmek için, komut başına saat döngü sayısını (cci) bilmeniz gerekir. 10 cci olduğunu varsayalım, CPU'nuzun 10 MHz veya daha hızlı çalışması gerekir.


0

BOM maliyetini düşürmek istiyorsanız bazen bu Shenzhen üreticilerinin bazı şaşırtıcı teklifleri var. Bir örnek: Allwinner A10, Raspberry Pi'den daha fazla hesaplama gücü ve bağlantı seçeneğine sahiptir, ancak tasarımınızda kullanılırsa muhtemelen daha ucuz olacaktır. Pi ile aynı maliyete bakıyorsanız, Allwinner A31s 6-8 kat daha güçlüdür.

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.