Bir mikroişlemci için ne kadar flaş / RAM'e ihtiyacınız olduğunu nasıl belirlersiniz?


24

Diyelim ki bilinen bir işlevselliğe sahip gömülü bir projeye başlıyorsunuz. Bir mikroişlemci seçtiğinizde, ne kadar RAM'e ihtiyacınız olduğunu nasıl seçersiniz ?

Önce bir geliştirici kartı kullanıyor ve projenizi kodluyor ve ardından ne kadar hafıza kullandığınızı görüyor ve ardından bu hafızaya uygun bir mikroişlemci seçiyor musunuz?

Bir prototip için etli bir mikrodenetleyici seçer ve sonra çalışan bir ürününüzün ardından ölçeklenir misiniz?

Sadece yeterli olacağından emin olacağınız bir şey mi seçiyorsunuz ve yeriniz tükenirse, sadece daha yüksek bir bellek yoğunluğuna yükseltirseniz, yalnızca mevcut mikrokontrolcüyü saklıyor musunuz?

İyi uygulama olarak ne kabul edilir?


Bana öyle geliyor ki, bilgi teorik bakış açısına göre, RAM gereksinimini büyüklük sırasına (boyutsal muhakeme tarzı) görev görevinden tahmin etmek mümkün olmalı. Hmmm ...
Lyndon White

Kütüphaneleri kullanıyorsanız, hafıza ayak izlerini araştırabilirsiniz. Kendi kodunuzla tecrübe ile gitmek zorundasınız. Yeni projeyi eskilerle karşılaştırın ve daha büyük veya daha küçük olmasını bekleyip istemediğinizi belirleyin.
jwsc

Yanıtlar:


20

Şahsen hobi projeleri için ailedeki en güçlü mikrodenetleyiciyi doğru ayak izi ile kullanma eğilimindeyim. Daha sonra PCB'yi geliştiriyorum, bir kod yazıp bir prototip üretiyorum.

Bu, az sayıdaki mikrodenetleyiciyi oldukça iyi tanıma avantajım var, bu yüzden tüm bir veri sayfasını okumak zorunda kalmadan hızlı bir şekilde prototip yapabiliyorum. Ayrıca ara panoları ve onlar için kod şablonları var.

İşe yararsa ve bir avuçtan fazlasını yapıyorum, o zaman daha önce kodladığım kod için doğru çevre birimleri ve yeterli belleğe sahip en ucuz mikrodenetleyiciyi satın alırım. Dahili kayıtlar değişirse (PIC'de gerçekleşirse) ya da mikrodenetleyicilerin kod çalışması için devre dışı bırakılması gereken ekstra çevre birimleri varsa bu can sıkıcı olabilir.

Bununla birlikte, üretim amaçları için bu, her bir birimin adil bir miktarını tıraş etmenizi sağlar.


Kişisel projelerim için benzer bir yaklaşım kullanma eğilimindeyim. Aynı yöntem, benimle birlikte ofise de sürünüyor. Yanlış değil, işe yarıyor ama daha iyi yollar var mı?
efox29

Kesinlikle "gerçek" bir ortamda daha iyi yollar olacak, diğer cevapları bekleyelim!
David

Absatively. Büyük bir kum havuzunda geliştirin ve daha sonra kesin. Tasarruf edeceğiniz zaman, üzerinde mikrokontrolör başına harcadığınız fazladan 4 $ 'ı kapatacak. Bu hobi seviyesinden daha fazlası için işe yarar - ve aslında daha da önemlidir. Resim 12 kişi yerine, daha büyük bir denetleyiciye geçişte bekliyorum !!
Scott Seidman

13

Elbette, tek bir ev yapımı prototip için, uyumlu mikropların en güçlüsüyle başlamak ve daha sonra aşağı ölçeklendirmek iyi bir tavsiye olabilir.

Ancak, bir teklif kazanmak istiyorsanız, herhangi bir şeyi uygulayacak paraya sahip olmadan önce müşterinize bir fiyat söylemelisiniz .

Bu nedenle, programlamaya başlamadan önce iyi bir uygulama belirtmeniz yeterlidir . Biliyor Ne yapmak istediğinize ve yazmalıdır nasıl bunu yapacağız.

Bu "nasıl", bir yazılım tasarımı hakkında düşünmeyi ve aşağıdaki gibi soruları yanıtlamayı da içerir:

  • İşletim Sistemine mi ihtiyacınız var? Hangisi? Hangi kaynaklara ihtiyacı var?
  • Katmanlı bir mimariye sahip olmak ister misiniz? Bu RAM tüketebilecek arayüzler gerektirir
  • Amacınız için hangi kütüphaneler zaten mevcut ve faydalı / gerekli ve ne kadar hafızaya ihtiyaçları var (iyi bir kütüphane dokümanı, en az bir referans oluşturmaya dayanarak cevaplar)?
  • Kendi sürücüleriniz ve uygulamanız için hangi yapıları ve değişkenleri uygulamak zorundasınız?

Tüm bu değerleri toplamak size kaba bir tahminde bulunacaktır. Ne kadar güvenebileceğiniz, analizinizin ne kadar ayrıntılı olduğuna ve deneyiminize bağlı olarak :-)
Tahmininizin en az% 30..50'lik bir pay eklemesi kesinlikle iyi bir fikirdir.

Ürününüz bittiğinde ve kullanımda% 80.90 RAM değerine sahipseniz, seçiminizin doğru olduğundan emin olabilirsiniz - en azından RAM ile ilgili.


2
Re: "% 80 .. 90 RAM kullanılıyor". Standart uygulama, gelecekteki yükseltmeleri ve hata düzeltmelerini barındırabilmek için hem CPU hem de bellekte en fazla% 50 kullanım kullanmanızı sağlamaktır.
Dunk

1
@Dunk: İşe bağlı. Otomotiv'de, SOP'deki tüm kaynakların% 80'i (CPU, RAM, Flash) yaygın olarak kabul edilmektedir. Örneğin, ucuz tüketici elektroniği daha da fazla olabilir: Ömür boyu sadece 2-3 yıl olan bir sistemde yükseltme olasılığı ne kadardır?
mic

@Dunk: Yanılıyor olabilirim, ancak dinamik hafızaya sahip masaüstü tarzı yazılımlara ve bununla ilgili tüm belirsizliklere alışık gibisiniz. Gömülü uygulamaların büyük çoğunluğu her şeyi statik olarak tahsis eder. Hafıza sızıntısı garanti edilmez. O zaman tam olarak% 100 kullanabilir ve değişiklik yapmadığınız sürece sonsuza kadar iyi olabilirsiniz. Tabii ki, bu yalnızca çalışan RAM'inizden ayrı bir yığınız varsa veya yığının her zaman tam olarak nasıl davranacağını biliyorsanız, işe yarar. Bunun için biraz yer bırakmak iyi bir fikir, ancak% 10-20, yaptıklarım için kolayca yeterli.
AaronD

Gömülü yazılımdaki en büyük sorun, hileli işaretçiler, arabellek taşmaları, sıfıra bölme ve bunun gibi şeylerdir. Bazı MCU'lar kesintilere benzer şekilde donanımda istisnalar ortaya çıkarabilir, ancak kullandığım her şey, hiç bir şey olmamış gibi neşeyle sürecek. Bir tür sonuç çıkacak, ancak muhtemelen beklediğiniz gibi olmayacak ve bu yüzden bunu kontrol etmeniz gerekecek. Aritmetik aşırı / düşük akış gibi bazı şeyleri hemen kontrol etmek ve düzeltmek kolaydır; hileli işaretçiler gibi diğer şeyler, yıllarca çalışan bir işlev patlamaya karar verene kadar tamamen farkedilir.
AaronD

3
% 80 hedef veya% 50 hedef hedeflemek isteyip istemediğiniz müşteriye bağlı olacaktır. Sabit bir spesifikasyon ve sadece gerekli olan hata düzeltmeleri ile% 80 iyidir. Güvenilmez özellik, beklenen özellik sünme ve daha fazla tavan boşluğu için fazladan ödeme yapmanıza izin verecek kadar büyük bir marj. Bir zamanlar ihtiyacımız kadar 2 kat daha fazla mikro kontrolör satın aldık ve bize daha fazla ihtiyaç duyduğumuz performansı verecek kadar overclock yapabilecek olanları seçtik, bu da daha güçlü bir çip için bir PCB yeniden tasarımından çok daha ucuzdu.
Mark Booth

3

Keşke önce gömülü sisteminizi kodlamanız ve sonra donanımı kurmanız mümkün olsaydı. Bu herkesin hayatını kolaylaştıracak. Ne yazık ki, bu aynı zamanda son başvuru tarihinizin pencerenin dışında olduğu anlamına da geliyor. Tipik olarak donanımın, yazılım yapılmadan çok önce tasarlanması gerekir, çünkü donanım parçalarının sık sık uzun tedarik süreleri vardır.

Bu nedenle, yerleşik yazılım geliştiricilerin genellikle programlarının belleğini ve CPU ihtiyaçlarını tahmin etmesi gerekir. İlk adımınız, donanım elemanlarını size mümkün olan en fazla RAM ile en güçlü mikroişlemci / CPU'yu vermeye ikna etmek olmalıdır. Bu nadiren işe yarıyor çünkü kendi gereksinimlerine yönelik hedefleri var, ancak arada bir şanslısınız.

Bu işe yaramazsa, yapacağınız bir sonraki şey, yüksek seviyeli bir yazılım tasarımı ve modülleri işlevsellik haline getirmektir. Daha sonra sistemdeki her modül için her bir fonksiyon için kod satırlarını tahmin edersiniz. Ardından, kod satırlarını kod belleğinin tahmin edilen bir basketbol sahasına dönüştürmek için bir formül kullanabilirsiniz. Ayrıca olağandışı bellek gereksinimlerini de (büyük diziler gibi) araştırır ve buna uyum sağlamak için bir miktar tahmin eklersiniz. Ardından, kaçırdığınız herhangi bir şeyi kapsayacak şekilde toplamın üstüne bir yüzde ekleyin. Ardından tipik% 50 kullanım gereksinimini karşılamak için iki katına çıkarın.

Evet, zaman alıyor. Evet, tüm kasnakların içinden atlamak gerekiyor, çünkü donanımı değiştirmek gerçekten zor.


Kod satırlarını kod belleğine dönüştürecek formülü nerede bulabiliriz?
EasyOhm

Bu, hangi dili ve derleyiciyi kullandığınıza bağlıdır. Assembler kullanıyorsanız, bir satır kabaca bir kelime hafızasına eşittir (çipinizin kelime boyutu ne olursa olsun). C kullanıyorsanız, bir satır yaklaşık 3-5 kelime olabilir ve C ++ veya daha karmaşık bir şey kullanırsanız yine de çok daha fazla olabilir. Yapılacak en iyi şey, bu dilde yazılmış birkaç programı derlemek ve ortalama elde etmek için kod satırlarını kod belleğiyle karşılaştırmaktır.
Dakkaron

2

Genel olarak, mikrodenetleyici satıcıları cihazlarına tipik uygulamalar için uygun olan bir dizi bellek koyarlar. Bu nedenle, az yer kaplayan bir cihazda yalnızca birkaç G / Ç pimine ve bir SPI'ya ihtiyacınız varsa, 500 kByte Flash ve 64 kByte RAM ile birlikte gelen herhangi bir şeyi bulamayacaksınız. SoC paketlerine daha yakın olan daha büyük cihazlarda, görüntü işleme gibi ciddi sayıda parçalama yapmayı planlamıyorsanız, en küçüğü bile neredeyse kesinlikle büyüktür.

Profesyonel bir ortamda, doğru mikrodenetleyiciyi seçmenin anahtarı, geçmiş verileri kullanmaktır. Geliştirdiğiniz diğer projelerin bir kaydına sahip olacak ve her bir özelliği uygulamak için hangi bellek ve diğer silikon kaynaklarının gerekli olduğunu bileceksiniz. Ürünün ne yapması bekleniyor ve bu nedenle iyi bir özellik listesine sahip olacaksınız ve mikrodenetleyicinin sağlaması gereken kaynakları hızlı ve doğru bir şekilde hesaplayabilirsiniz. Kaynak gereksinimlerini, önceden belirlenmiş bir tasarım şartnamesinden tahmin etmeye çalışmak (sistem hakkında en az bilginin mevcut olduğu durumlarda projenin başında geliştirilen) en iyi ihtimalle güvenilir değildir ve yalnızca kapsamlı Tarihsel verilerin kendi başlarındaki veri tabanı, bu yöntemi kullanmanın her türlü başarısı olacaktır.

Birçok şirket, mikrodenetleyicileri barındıran genel platform kartları ile birlikte küçük özellikli panoların (örneğin RS-485 panoları, ADC panoları, vb.) Bir kütüphane oluşturmayı içeren hem yazılım hem de elektronik tasarım için 'Çevik' bir yaklaşım benimsemiştir. , bir geliştirme seti ve eklentileri kullanmaya benzer şekilde. Bir ürün daha sonra özellikler için gerekli olan pano setini seçip bağlayarak hızlıca prototip edilebilir (saat içinde). Yazılım, benzer şekilde kütüphane modüllerinden monte edilmiştir ve hızlı bir şekilde yerleştirilebilir ve test edilebilir. Kodun donanıma özgü kısmının boyutu bilindiğinde, bunu içerecek en küçük kısmı seçmek genellikle yeterlidir. İstisna, cihazın işlevselliğinin büyük veri veya çok karmaşık algoritmalar içerdiği yukarıda belirtilen istisnadır. Bu yöntem doğru sağlar,

(Çevik yaklaşımın bir başka avantajı, yazılım ve elektronik geliştirmenin paralel olarak yapılmasına izin vermesidir; elctronics tasarımı, özellik panoları kümesini bütünleştirmede ve ilgili EMC ve diğer zor işleri aynı anda yaparken bir egzersizdir. prototip meclislerinde uygulama yazılımı geliştiriliyor, bazı taşıma ve entegrasyon hala gerekli, ancak çalışan yazılım ve elektroniğin ikisinde de kullanılabilir.

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.