Bir mikro denetleyicide Flash boyutunu seçmek için yardıma ihtiyacınız var


9

Bir proje için Flash boyutu ve RAM seçerken karar vermeliyim. Kullanmayı tercih ettiğim mikro denetleyici TI MSP430 serisidir. Düşük güç tüketimi ve değer hattı serisi maliyeti nedeniyle. Ancak ben gereksinimleri toplama karar vermek için tam bir acemi değilim. Programlama deneyimimin çoğu, genellikle program boyutu, RAM ve işlemci hızının yaygın algoritmik görevler için endişe yaratmadığı Masaüstü tabanlı sistemlerde.

Aşağıdaki sorularım var:

  1. Bir mikro denetleyicinin RAM ve Flash boyutuna karar vermeyle ilgili herhangi bir kural veya standart uygulama var mı?
  2. Kaç kod satırı (C), MCU'da ne kadar Flash boyutu anlamına gelir?
  3. Flash boyutunun minimumda tutulması gerekirse montaj dili tek yol mu?

Bir proje için bir Mikro kontrolörün genel seçimi ile ilgili olarak, bu alandaki profesyoneller görev için en uygun mikro kontrolöre karar vermeye nasıl devam eder? Hangi kaynakları ararlar? Hangi yönergeleri izliyorlar?

Yanıtlar:


7

Tüm sorularınızın cevapları ne yapmak istediğinize bağlı olacaktır.

Söylediğiniz gibi, bir acemi sizsiniz, bu yüzden en büyük mikrodenetleyiciyi kullanmanızı ve sadece projeyi yapmaya çalışmanızı öneririm. Bundan sonra ne kadar kod kullandığınızı görselleştirebilir ve daha sonra kullanılan kodlara göre ölçeklendirebilirsiniz.


Kabul. Büyük bir şeyle başlayın ve gerekirse nihai gereksinimlerinizi karşılayan en küçük parçaya gidin.
W5VO

"En büyük" ifadesinin "hedeflediğiniz seride" olması gerekir. İhtiyacınız olan çevre birimlerini ve ihtiyacınız olan hız sınıfını bulun, bir mimari / aile seçin ve ardından o ailedeki en büyük işlemci ile geliştirin. 512kB Flash ve 64kB RAM ile başlamayın çünkü bulabileceğiniz en büyük mikrodenetleyici; boyut hakkında endişelenmeye başlamadan önce Cortex-M3'e karşı AVR'ye karşı PIC18'e karşı MSP430'a daraltın (örneğin). Daniel'in bunu beklediğinden şüpheliyim, ama sadece bir yerde belirtilmesi gerektiğini düşündüm.
Kevin Vermeer

7

Msp430 kadarıyla, iyi bir mimari, orada mspgcc ve mspgcc4 ve llvm bu konuda oldukça iyi araçlar. yama olmadan binutils. Bu fiyattan 5 doların altında bir fırlatma rampası alabilirsiniz (sonunda bir şey tuğla tutacak veya kısaltacak ve eritecek, bu fiyata yedek, esp alacaksınız) ...

Araçları indirin, hepsi ücretsiz, birkaç satır kod yazın, nasıl bağlanacağınızı öğrenin, ikili dosyanın ne kadar büyük olduğunu görün, gömülü bir his alın, kod satırlarını rom boyutuna vb.

Profesyoneller bunu nasıl yapıyor? Neredeyse hayal edebileceğiniz her yol:

Bazı şirketler yetki yüksek gelir ve bu konuda bırakmak dışında yapabileceğiniz hiçbir şey yoktur. Ve bu platformun neden seçildiğini asla bilemeyebilirsiniz.

Bazen yüklenici / favori müşteri platformu dikte eder, bazen eğitemez / müzakere edebilirsiniz, bazen değil.

Bazı insanlar sadece bir favori, bilinmeyen korkusu, ne olursa olsun. Bazı kişilerin sadece bir marka araba satın almasının, babamın ve babasının bundan önce yapmasına neden olmasının nedeni de budur ve bu tüm sebep olabilir.

Bazı insanlar araçlara odaklanır. Burada yine marka sadık insanlar var, kendilerini en sevdikleri derleyici şirket ve destekledikleri hedefler veya en sevdikleri açık kaynak aracı ve neleri destekledikleri ile sınırlandırıyorsunuz. Favori gömülü işletim sistemi ve destekleyen hedeflerle sınırlandırın.

Bazı durumlarda bu araçlarla ilgilidir, ancak farklı bir şekilde, zaman içinde bir satıcıyla yıllık destek sözleşmelerine (örneğin kol veya xilinx veya motorola diyelim) çok para yatırmış olabilirsiniz ve desteklerini beğenmiş olabilirsiniz ve değiştirmek istemiyorsun ya da bildiğin şeytan, yapmadığın şeytandan daha iyi. Veya şirketteki diğer 5 aktif proje bu şeyi kullandığından ve zaten bir destek sözleşmemiz olduğundan ve o yıl için ödeme yapmaya devam edeceğinden, bu satıcı çözümlerinden birini seçmelisiniz.

Bazen bu kırkayakları kurtarmakla ilgilidir. Bu bölüm, bu bölümden% 1.5 daha ucuz, bu bölümle çalışmasını sağlayın, NRE'yi umursamayın, hacimdeki üretim tasarruflarını düşünün.

Bazen olumsuzluklarla ilgilidir. Bir satıcı şirketinizi şu ya da bu şekilde vidalamış olabilir. Ürünlerin gecikmesine veya iptal edilmesine neden olan reklamı yapılan parça tedarikini karşılayamama. Yem ve anahtar dolandırıcılığı (yazılım için 50.000 dolarlık ücret, lisansın kilidini açmak için gereken dongle için 1200 dolarlık ücreti içermiyordu, bu ekstra bir maliyet öğesi. Oh ve bu, yüzen lisans için kullanıcı başına idi). Programcıların referans kılavuzunu veya referans tasarım kılavuzunu görmek için NDA'yı imzaladıktan sonra, mühendislerinin ne kadar korkunç olduğunu öğrenirsiniz ve tüm ürünlerini ömür boyu kara listeye almayı seçebilirsiniz. Korkunç teknik destekle geçmiş. Herhangi bir sayıda neden, satış yapanların ön kapıdan asla izin vermemesine veya web sitelerine tekrar bakmanıza engel olmanıza neden olabilir.

Bazen performans, arayüzler, vb. başka bir harici donanıma ihtiyaç duyulmadan, ABC markasının minimum çalışması için harici bir transistör ve direnç gerektirecek 3 $ 'lık bir parçası vardır. Msp430 örneğiniz, bunun güç tüketimi ile ilgili olduğunu, A bölümünün yalnızca bir AAA pil kullanmasını ve aylarca çalışmasını gerektirebilir, B bölümünün iki adet AAA pil gerektirmesi ve haftalarca çalışması gerekebilir.

En nadir durum aslında mühendisliği yapmak, tüm satıcıları incelemek, güç tüketimi matematiğini, ürün matematiğinizin birim fiyatı, ne kadar bir rom'a ihtiyacımız olduğunu ve çipin hangi frekansta çalıştırılacağını, tutkal mantığı, açık ve kapalı. Genellikle birisi (patron / müşteri / kıdemli mühendis) yılların deneyimini alır ve yolu seçmek için kalçadan (genellikle yukarıdakilerden birini veya daha fazlasını kullanarak) ateş eder (genellikle programda ve dolarda tonlarca zaman tasarrufu sağlayan iyi bir yol) ve Mühendislik, seçilen platforma ince ayar yapmak için bir kez yapılır.

Benim kişisel tavsiyem esnek olmak. Çoğu mikrodenetleyici markasının / ailesinin herhangi bir şekilde veya şekilde 50 $ 'ın altında bir değerlendirme kurulunda bulunabilir. Sparkfun, olimex veya doğrudan satıcıdan (msp430 veya stellaris için ti). Her birini bir ya da daha fazlasını deneyin, ortak olan ve farklı olan şeyleri, araçları, yükleyicileri, ne kadar zor çözüleceğini vb. Hissedin. En azından bundan iki şey alırsınız, bir tanesi bir yolda zorlandığınızda yüksek ya da müşteri yerden koşmak vurabilir, ikincisi, platform seçme sırası geldiğinde orada ne olduğunu ve orada değil daha iyi eğitimli ve probleme dayalı doğru (yüklü kelime) platform seçebilirsiniz çözüldü.

Dışarı çıkıp donanımda bu tür para harcamasanız bile, çoğunun indirebileceğiniz (ücretsiz) araçlara sahip olsanız bile, mikroçip gibi durumlarda artık C derleyicisini (yüksek teknoloji olarak kullanılır) alabilirsiniz, ancak abone olmanız gerekir (e-posta adresinizi bırakın). Gcc gibi veya gelecekte, masaüstü veya gömülü olacak nefret, ellerini kirletmek ve çapraz derleyici olarak kullanmayı öğrenin. Llvm de deneyin, bir süre etrafında olacak ve gcc bazı ciddi rekabet verecektir. Neyse, bazı emülatörleri yazın veya bulun, mame çok var, gdb bazı var, vb. Başparmak2'yi desteklemiyorum (yine de biraz öğrenebilirim) hariç, sadece github, ARM başparmak modu, sadece bir başparmak-moduna benzeyen bir simülatör yazdım. ve yalnızca donanıma geçmeden önce programların her ikisinde de çalışmasını sağlayın). Bir msp430 emülatörü çırptım ama biraz durdum. Talimat seti o kadar küçük ki işin büyük kısmı bir akşam ya da belki bir cumartesi projesi. Aynı şey uzun bir öğleden sonra PIC için de geçerli ve gömülü pratik yapmak için bir talimat seti simülatörünüz var. Başka bir şey yoksa, programları nasıl derleyeceğinizi ve programların ne kadar büyük olduğunu, programları daha sıkı kod üretmek için nasıl ayarlayacağınızı öğrenmek için derleme ve bağlantı yazabilirsiniz.

C'ye karşı montajcıya göre, bazı talimat setleri C dostudur ve bazıları değildir. Bazı derleyiciler orta ve bazıları gerçekten kötü ve sadece birkaçı gerçekten iyi (ve genellikle yılda bir kez veya yılda birkaç bin dolara mal oluyor). Gerçekten itmek istediğiniz her yerde performansta olduğu gibi, yüksek seviyeli bir dil (sadece C diyelim) ve birleştirici karışımı gerekebilir. Beceri, tüm uygulamayı derleyicide yazmıyor, beceri hangi kodun zamanlama / performansla karşılaşmamanıza neden olduğunu belirliyor ve sonra C, derleyici seçenekleri, doğru derleyici seçimi veya derleyici yazma yoluyla bunu nasıl çözeceğini bilmektir.

Kullanmayı seçtiğiniz tüm platformlar için montajcıyı bilmenizi öneririm, gömülü olduğu gibi okunabilir başka bir bilgi yoksa, sık sık sökmenizi öneririm (performans sorunlarınızın nerede olduğunu anlarken). Birçok platform, önyükleme kodu için yine de bazı birleştirici gereklidir veya istenir.

Birim başına fiyattan% 10-20 tasarruf etmek istiyorsanız ve daha ucuz / daha yavaş mikrodenetleyici veya osilatör veya 64KB flaş kısmı yerine 32Kb flaş kısmını satın almak istiyorsanız ve satış maliyetiyle geliştirme maliyetini karşılayabilir ve belki de her şeyi montajcı, hızlı, düşük güç, düşük maliyetli, mutlu müşterilere yazmayı seçebileceğiniz diğer şeylerin uzun bir listesi.

Şimdiye kadar arka planınıza bağlı olarak, belki de tüm montajcıda yazma konusunda endişelenmemelisiniz ve belki de mikrodenetleyicilere gömülü elektrik mühendisliği yönleri, okuma şemaları, açık toplayıcı, üç durum, itme çekme, pwm, adc, dac ve bir diğer terimlerin uzun listesi ve nasıl kullanılacağı. bit beceriyor i2c, spi, mdio, dallas bir tel, vb Bir yazılım hata ayıklayıcı olarak bir kapsam kullanma. Kapsamlar bugün sizin için bir şeyler vurgulayabilse de (ekstra bir maliyet öğesi), vurgu yapmadan i2c ve spi ve diğer bazı protokolleri görebilmeniz gerekir.

Ayrıca, oynadığınız platformların her biri için başkalarının sanal alanından (örneğin Arduino ide / programlama ortamı) çıkmasını öneriyorum. İşlemciyi sıfırlamadan ana () programınıza alan önyükleme kodunu yazın, rafın rafları olsa bile flaşı kendi yükleyicinizi yazmayı içerebilecek bir noktaya nasıl yükleyeceğinizi / programlayacağınızı anlamak için mümkün olduğunca çok şey yapın. Orada. Her şey kişisel eğitim ile ilgilidir, ne kadar çok bilir ve arka cebinizden çekebilir ve kariyeriniz üzerinde ne kadar fazla kontrole sahip olursunuz ve maaş çekinizdeki numaranın sonunda o kadar fazla sıfır olur.

Ne yaparsanız yapın, YAPMAYIN, masaüstünde ilk montajcı olarak x86 öğrenmeye çalışın, hemen hemen başka bir şey seçin ve çapraz derleyin ve simüle edin, ARM, THUMB, MSP430, PIC, AVR, hatta 6502, 8051. X86 korkunç bir talimattır ve sonuç olarak birçok şekilde şekil değiştirilmiş ve şekillendirilmiştir, mikro kodlanmış, mikro kodlanmamış, çok çekirdekli, açık ve açık. X86'yı üst düzey dillere ve hantal işletim sistemlerinde tutun. Metin düzenleyiciniz ve derleyicileriniz için kullanın ve başka bir şey hedefleyin.

Uzun cevap için özür dilerim ... umarım yardımcı oldu.


hmmm, eğer soru profesyoneller flaşın boyutunu nasıl seçtiyse. bazen çözüme benzeyen bir kod yazın, derleyin ve ne kadar büyük olduğunu görün. Bir rtos kullanılacaksa, bazı örnekler alın ve bunları boyutlandırın ve ekleyeceğiniz kod için bir fudge faktörü ekleyin. Birçoğu, tahminlerde kişisel deneyim ile ilgilidir. Çoğunlukla tahmin etmeyi seçebilir ve her ihtimale karşı ikiye katlayabilirsiniz ve patronunuz tahmininizi ikiye katlayabilir, böylece sorun çıkarmaz ve bu şekilde devam etmez. Ve bu yardımcı olabilir çünkü uygulandıktan sonra daha küçük parçaya geçebilir ve tasarruflarla bir kahraman olabilirsiniz.
old_timer

1
Uzunluğuna rağmen bu cevabı çok iyi buluyorum
Sarrk

3

Projeniz için flash / RAM gereksinimlerini belirlemenin en iyi yolu bir prototip oluşturmak ve ölçmektir.

Temel algoritmaları bir bilgisayara uygulayın ve nesne kodunun boyutunu ve RAM kullanımını hesaplayın. Bu size çalışmak için bir basketbol sahası figürü verecektir.

Stdio veya bellek yönetimi gibi işletim sistemi özelliklerine güveniyorsanız bütçenize daha fazlasını eklemeyi unutmayın.

Kod Satırlarını derlenmiş kod boyutuyla karşılaştırmanın doğrudan bir yolu yoktur. Ancak, işlemci mimarilerini kod yoğunluğu açısından karşılaştırabilirsiniz.


3

Gereksinimlerinizin ne olduğunu "hissetmek" için en iyi yol olduğunu düşünüyorum, bu durumda bellek açısından bir MCU bazı örnekleri almak, programlamak ve kaç bellek kullanıldığını görmek. Aslında, kullanılan derleyiciye bağlı olacaktır. Bir MCU'yu ilk kez programlarsanız, spesifikasyonlarla fazla uğraşmayın. Sadece çok fazla bellek, çok sayıda çevre birimi vb. İçeren birini seçin. Bu şekilde yalnızca bir MCU'dan çok şey öğrenebilirsiniz. Bu MCU ile ilk projenizi yaptığınızda, daha fazla proje için ihtiyacınız olan daha iyi bir hafıza fikrine sahip olacaksınız.

Bir görev için en uygun MCU? Kaç ADC kanalına ihtiyacınız var? DAC ne olacak? Uygulamanızda daha önemli olan şey: performans mı yoksa düşük güç mü? Belirli bir MCU seçerken cevaplamanız gereken bu tür sorulardır.


3

İhtiyacınız olan çevre birimleri setine sahip bir mikrodenetleyici seçin. Muhtemelen aynı / benzer çevresel fakat farklı miktarlarda RAM ve Flash'a sahip bir mikros ailesi olacaktır. En büyük RAM / Flash'a sahip çip ile başlayın. Çalışan bir prototipiniz olduğunda, programınız uygunsa daha ucuz bir mikroma düşebilirsiniz.


0

Gerçek profesyoneller tek başına bir mikrodenetleyici seçmezler, maksimum kâr için bir proje yürütürler. Mikrodenetleyicinin seçilmesine neden olabilecek proje kriterlerine bağlı olarak, çok pahalı gibi görünen, ancak mevcut uzmanlığa, araçlara, kütüphanelere vb. , özellikle toplam (geliştirme maliyetleri + üretim maliyetleri)!

Çoğu mikrodenetleyici üreticisi, çeşitli cipsler arasında farklılık gösteren parametrelerden biri olan flaş boyutuyla cips aralıkları sunar. 'Güvenli' bir seçim başlangıçta en büyük flaş boyutuna sahip çipi seçmektir, böylece uygulama daha küçük bir çipe sığarsa ölçeği küçültebilirsiniz. Ancak uygulamalar mevcut tüm boyutlara (ve daha fazlasına) uyacak şekilde büyüme eğilimindedir.

IME flaş boyutu artık büyük bir maliyet faktörü değildir, pin sayısı bile bir faktörden daha azdır, RAM boyutu en büyük maliyet sürücüsü gibi görünmektedir.

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.