マイクロコントローラーでフラッシュサイズを選択する際に助けが必要


9

プロジェクトのフラッシュサイズとRAMを選択する必要があります。使用したいマイクロコントローラーはTI MSP430シリーズです。その低消費電力とバリューラインシリーズのコストのため。ただし、要件の収集を決定するのはまったくの初心者です。私のプログラミング経験のほとんどは、一般にプログラムサイズ、RAM、およびプロセッサ速度が一般的なアルゴリズムタスクであまり問題にならないデスクトップベースのシステムでの経験です。

次の質問があります。

  1. マイクロコントローラーのRAMとフラッシュサイズの決定に関するガイドラインまたは標準的な方法はありますか?
  2. 何行のコード(C)がMCUのフラッシュサイズの量に変換されますか?
  3. Flashのサイズを最小限に抑える必要がある場合、アセンブリ言語が唯一の解決策ですか?

プロジェクトのマイクロコントローラーの一般的な選択に関して、この分野の専門家はどのようにして、タスクに最適なマイクロコントローラーを決定しますか?彼らはどのようなリソースを検索しますか?彼らはどのようなガイドラインに従っていますか?

回答:


7

すべての質問に対する答えは、何をしたいかに依存します。

あなたが言ったように、あなたは初心者なので、私はあなたが最大のマイクロコントローラーを使ってプロジェクトをやってみることをお勧めします。この後、使用するコードの量を視覚化し、使用されたコードに従ってスケーリングできます。


同意した。大きなものから始めて、必要に応じて、最終的な要件を満たす最小の部分に切り詰めます。
W5VO、2011

「Biggest」は「対象としているシリーズ」で修飾する必要があります。必要な周辺機器と必要なスピードクラスを見つけ、アーキテクチャ/ファミリを選択してから、そのファミリで最大のプロセッサを使用して開発します。512kBのフラッシュと64kBのRAMを搭載したものから始めないでください。これは、見つけることができる最大のマイクロコントローラーであるためです。サイズを気にする前に、Cortex-M3対AVR対PIC18対MSP430などに絞り込みます。ダニエルはこれを期待していたのではないかと思いますが、どこかで述べる必要があると思っただけです。
ケビンフェルメール

7

msp430に関しては、それは優れたアーキテクチャであり、mspgcc、mspgcc4、llvmといったかなり優れたツールがあります。パッチを適用しないbinutils。あなたはその価格で5ドル未満のランチパッドをいくつか購入することができます(最終的には何かをブリックするか、ショートさせて溶かし、この価格でスペアを用意します)...

ツールをダウンロードします。すべて無料で、数行のコードを記述し、リンク方法を学び、バイナリの大きさを確認し、埋め込みの感触を確認し、コード行をROMサイズに変換します。

プロはそれをどのように行うのですか?想像できるほぼすべての方法:

一部の企業では、権限が高まっているため、辞める以外にあなたにできることはありません。そして、そのプラットフォームが選ばれた理由をあなたは決して知らないかもしれません。

請負業者/お気に入りの顧客がプラットフォームを指示する場合もあれば、教育/交渉できる場合もありますが、できない場合もあります。

一部の人々は、何でも好きな、未知への恐れを持っています。一部の人々が1つのブランドの車しか購入しないのと同じ理由で、私の父がその前に彼の父が購入したので、それが全体の理由である可能性があります。

一部の人々はツールに焦点を当てています。ここにもブランドの忠実な人々がいて、好きなコンパイラ会社と彼らがサポートするあらゆるターゲット、または好きなオープンソースツールとそれがサポートするものに限定されています。お気に入りの組み込みオペレーティングシステムとサポートするターゲットへの制限。

場合によってはツールについてですが、別の方法では、ベンダーとの年間サポート契約(たとえば、arm、xilinx、またはMotorolaなど)に多額の投資を行ってきた可能性があり、それらのサポートが気に入った可能性があります変更したくない、またはあなたが知っている悪魔はあなたがしない悪魔よりも優れています。または、社内の他の5つのアクティブなプロジェクトがこれを使用しており、すでにサポート契約を結んでおり、毎年その代金を支払うため、これらのベンダーソリューションのいずれかを選択する必要がある場合もあります。

時にはそれはミリペニーを救うことです。このパーツはそのパーツより1.5%安く、このパーツで動作します。NREを気にせず、製造コストの削減について考えます。

時にはそれはネガについてです。あるベンダーが何らかの方法で会社を台無しにした可能性があります。アドバタイズされた部品の供給を満たしていないため、製品の遅延またはキャンセルが発生している。餌とスイッチの詐欺(ソフトウェアの$ 50,000の料金には、ライセンスのロックを解除するために必要なドングルの$ 1200の料金は含まれていませんでした。これは追加のコストアイテムです。ああ、それはフローティングライセンスのユーザーあたりの料金です)。プログラマーのリファレンスマニュアルまたはリファレンスデザインガイドを参照するためにNDAに署名すると、エンジニアリングがどれほどひどいかがわかり、すべての製品を一生ブラックリストに載せることができます。恐ろしい技術サポートのある過去の歴史。理由がいくつもあると、営業担当者が正面玄関に入るのを決して許可しないか、二度と彼らのウェブサイトを見ることができなくなります。

時々、それはパフォーマンスやインターフェースなどに関係しています。ワイヤードオアでプルアップが必要なインターフェースがある場合の例として、部品あたり$ 3のマイクロコントローラーブランドXYZには、使用できるI / Oピンのセットがあります。他の外部ハードウェアが必要ない場合、ABCブランドには3ドルのパーツがあり、最低でも動作させるために外部トランジスタと抵抗が必要になります。あなたのmsp430の例は、それが電力消費についてであると言う場合、パートAはユーザーが1つのAAAバッテリーを使用して数か月だけ実行することを必要とし、パートBは2つのAAAバッテリーを必要とし、数週間実行される可能性があります。

すべての最もまれなケースは、実際にエンジニアリングを行い、すべてのベンダーを調査し、消費電力の計算を行い、製品の単位あたりの価格を計算し、ROMの大きさをどれだけ必要とし、チップを実行する頻度を、接着ロジック、オンとオン。通常、誰か(ボス/顧客/シニアエンジニア)は、長年の経験を積み、ヒップ(多くの場合、上記の1つ以上を使用)から撮影してパス(多くの場合、スケジュールとコストを大幅に節約できる優れたパス)を選択します。エンジニアリングは、選択されたプラットフォームを微調整するために一度行われます。

私の個人的な推奨は柔軟であることです。何らかの形またはファッションのほとんどのマイクロコントローラーブランド/ファミリは、50ドル未満で評価ボードに搭載できます。Sparkfun、olimex、またはベンダーからの直接(msp430またはstellarisのtiなど)。それぞれを1つ以上試して、共通点と相違点、ツール、ローダー、ブロック解除の難しさなどの感触をつかんでください。これから少なくとも2つのことを得ることができます。1つは、パスを強制されたときです。高いところや顧客の上から実行することができます。次に、プラットフォームを選択する番になると、そこにあるものとないものについてよりよく教育され、問題に基づいて適切な(ロードされた単語)プラットフォームを選択できます。解決する。

外出してハードウェアにそのようなお金を費やすことができない場合でも、ほとんどの場合、ダウンロードできるツール(無料)があります。マイクロチップのような場合は、Cコンパイラ(以前はハイテクでした)を入手できますが、購読する必要があります(メールアドレスをあきらめる)。gccが好きか嫌いか、将来的にはデスクトップか組み込みかを問わず、手を汚してクロスコンパイラとして使用する方法を学びます。llvmも試してみてください。しばらくすると、gccに深刻な競争が発生します。とにかく、いくつかのエミュレータを書き込んだり見つけたりします。mameにはたくさんあり、gdbにはいくつかあります。githubにあるthumbulatorと呼ばれるもの、ARMサムモードのみ、thumb2をサポートしていないことを除いてcortex-m3と同じものを書きました(まだかなり学ぶことができます)また、ハードウェアのみに切り替える前に、両方でプログラムを実行します。私はmsp430エミュレーターを作成しましたが、少し行き詰まりました。命令セットは非常に小さいため、作業の大部分は夕方またはおそらく土曜日のプロジェクトです。同じことはPIC、長い午後にもあてはまり、あなたは組み込みを練習するための命令セットシミュレータを持っています。他に何もない場合は、プログラムを作成してコンパイルし、リンクして、それを行う方法とプログラムがどれほど大きくなるか、プログラムを調整してよりタイトなコードを生成する方法などの感触をつかむことができます。

Cとアセンブラーに関しては、一部の命令セットはCとの親和性が高く、そうでないものもあります。一部のコンパイラーは中程度であり、一部は本当に悪くてほんのわずかです(そして、通常、使用するのに1回または1年に数千ドルかかります)。どこでもどこでもパフォーマンスをプッシュしたいのであれば、高級言語(Cとだけしましょう)とアセンブラーの混合が必要になる場合があります。つまり、スキルはアプリケーション全体をアセンブラーで作成するのではなく、タイミング/パフォーマンスを満たさない原因となっているコードを特定し、C、コンパイラーオプション、適切なコンパイラーの選択、またはアセンブラーの作成を通じてそれを解決する方法を理解することです。

組み込みの場合のように、それについて他に読める知識がない場合は、頻繁に逆アセンブルすることをお勧めします(パフォーマンスの問題がどこにあるのかを把握しながら)。多くのプラットフォームでは、いずれにしても、起動コードにいくつかのアセンブラが必要または望まれます。

ユニットあたりの価格を10〜20%節約し、より安価な/遅いマイクロコントローラーまたは発振器、または64KBフラッシュパーツの代わりに32Kbフラッシュパーツを購入し、開発コストを販売量で賄うことができる場合、およびおそらく、アセンブラーで高速に、低電力で、低コストで、幸せな顧客にすべてを書くためにあなたが選択するかもしれない他のものの長いリスト。

これまでの背景にもよりますが、すべてのアセンブラーでの書き込み、マイクロコントローラーの組み込み、回路図の読み取り、オープンコレクター、トライステート、プッシュプル、pwm、adc、dac、およびa他の用語の長いリストとそれらの使用方法。i2c、spi、mdio、dallas one wireなどのビットバンギング。スコープをソフトウェアデバッガとして使用。スコープは今日のために物事を強調することができますが(追加コストの項目)、強調表示なしでi2cとspiと他のいくつかのプロトコルを目撃できるはずです。

また、プレイするプラットフォームごとに、他の誰かのサンドボックス(たとえば、Arduino ide /プログラミング環境)から抜け出すことをお勧めします。プロセッサーをリセットからmain()プログラムに取り込むブートコードを記述します。シェルフローダーであっても、独自のローダーの書き込みが必要になるまでフラッシュをロード/プログラムする方法をできるだけ理解します。そこ。それはすべて個人的な教育に関するものであり、より多くのことを理解し、あなたのバックポケットから引き出し、より多くのコントロールを使用して、あなたのキャリアをコントロールし、給与の数字の終わりのゼロを増やすことができます。

何をするにしても、絶対にしないでください。デスクトップで最初のアセンブラとしてx86を学び、他のほとんどすべてを選択して、ARM、THUMB、MSP430、PIC、AVR、6502、8051でさえもクロスコンパイルしてシミュレートしてください。x86は恐ろしい命令ですセットとその結果、マイクロコード化されているのではなく、マルチコアで、さまざまな方法でモーフィングおよび整形されています。x86を高水準言語とかさばるオペレーティングシステムに保ちます。テキストエディターやコンパイラーに使用して、他のものをターゲットにしてください。

長い回答で申し訳ありません...それが役に立てば幸いです。


問題は、プロがフラッシュのサイズをどのように選択するかでした。ソリューションに似たコードを作成してコンパイルし、その大きさを確認することもあります。rtosを使用する場合は、いくつかのサンプルを取得してサイズを設定し、追加するコードにファッジファクターを追加します。それの多くは見積もりの​​個人的な経験と関係があります。多くの場合、念のために見積もりを2倍にして、上司が見積もりを2倍にしてトラブルに巻き込まれないようにすることもあります。そして、それはあなたがより小さな部分に切り替えて、節約でヒーローになるかもしれないので、助けることができます。
old_timer

1
その長さにもかかわらず、私はこの答えが非常に良いと感じています
Sarrk

3

プロジェクトのフラッシュ/ RAM要件を決定する最良の方法は、プロトタイプを作成して測定することです。

PCにコアアルゴリズムを実装し、オブジェクトコードのサイズとRAMの使用量を計算します。これは、あなたに働くための球場図を与えます。

stdioやメモリ管理などのオペレーティングシステムの機能に依存している場合は、予算を増やすことを忘れないでください。

Lines of Codeとコンパイル済みコードのサイズを直接比較する方法はありません。ただし、コード密度の観点からプロセッサアーキテクチャを比較できます。


3

私はあなたの要件である「感覚」を得るための最良の方法だと思います。この場合、メモリに関しては、MCUのサンプルをいくつか取得し、プログラムして、使用されているメモリの数を確認することです。実際、使用するコンパイラによって異なります。MCUを初めてプログラミングする場合は、仕様をあまり気にしないでください。大量のメモリ、周辺機器などを備えたものを選択するだけで、1つのMCUから多くを学ぶことができます。そのMCUを使用して最初のプロジェクトを作成すると、以降のプロジェクトに必要なメモリの概念がよくなります。

タスクに最も適したMCU?ADCチャネルはいくつ必要ですか?DACについてはどうですか?アプリケーションでより重要なのは、パフォーマンスと低消費電力のどちらですか。特定のMCUを選択するときに回答する必要があるのは、この種の質問ですか。


3

必要な周辺機器のセットを備えたマイクロコントローラーを選択します。おそらく、ペリフェラルは同じ/類似しているが、RAMとフラッシュの量が異なるマイクロファミリがあるでしょう。最大のRAM /フラッシュを搭載したチップから始めます。プロトタイプが機能するようになったら、プログラムが適切であれば、より安価なマイクロにドロップダウンできます。


0

実際の専門家はマイクロコントローラーを単独で選択するのではなく、最大の利益を得るためにプロジェクトを実行します。マイクロコントローラーが選択される原因となる可能性のあるプロジェクト基準によっては、高すぎるように見えますが、たまたま、利用可能な専門知識、ツール、ライブラリーなどにうまく適合します。 、特に合計(開発コスト+生産コスト)!

ほとんどのマイクロコントローラーメーカーは、さまざまなチップ間で異なるパラメーターの1つであるフラッシュサイズを備えたさまざまなチップを提供しています。「安全な」選択は、最初にフラッシュサイズが最大のチップを選択することです。そのため、アプリケーションがより小さいチップに収まる場合はスケールダウンできます。しかし、アプリケーションは利用可能なすべてのサイズ(およびそれ以上)に合わせて拡大する傾向があります。

IMEフラッシュサイズは大きなコスト要因ではなくなりました。ピンの数はそれほど重要ではありませんが、RAMサイズが最大のコストドライバーのようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.