2016-09-14 10 views
0

特に、STMF4xx/F7xxのような高速デバイスの場合、電源電圧とシステムクロック周波数に基づいてフラッシュ待機サイクル数を指定する必要があります。なぜフラッシュ待機サイクル数を指定する必要がありますか?

CPUが命令または定数をフェッチするとき、これはFLITFで実行されます。 FLITFが要求されたデータを提供できる限り、FLITFがCPU要求を保持し、他のバスマスタがフラッシュにアクセスすることは不可能であるという前提のもとでは正しいですか?

これが真実ならば、どのインタフェースでもフラッシュ待機サイクルを知ることが重要なのはなぜですか。キャッシュのようにプリロード命令はそれほど待たされることなく、独立して実行されます。

+0

あなたは、フラッシュが速度制限を持ついくつかの/多くのMCUの唯一のロジックではないことがわかります。いくつかは、たとえCPUがそれを超えてうまくいっていても、周辺機器のクロックがXを超えることができないことを伝えます。特にPLLは、使用しなければならない最小範囲と最大範囲を持っています。そうしないと、クロックが不安定になることがあります(ロックやロックを解除してハングアップすることはありません)。ちょうどいくつかの車が200mph行くことができないので、すべてのことができます。各チップのロジックブロックまたはペリフェラルごとに、設計されたパラメータ内にタイミングを保つ必要があります。 –

答えて

4

フラッシュインターフェイスは魔法ではないためです。

フラッシュセルのアドレッシングと読み出しに必要なセットアップ時間とホールド時間は、電圧によって多少異なります。 STM32F411を例にとると(私はそのTRMを便利なので)、電圧/周波数/待機状態テーブルを使って数式を計算すると、それらのうちの1つのフラッシュからの読み出しが2.7Vより上の約30ns 2.1Vより約60ns低くなります。

フラッシュインタフェースは後に、n個クロック・サイクルのためにその信号をアサートに変換され、独自の非同期ナノ秒精度の計時能力を(つまり不、複雑な電力を消費し、愚かなことになるので)、持っていないので、セルからのデータ信号が十分に安定していると仮定して、*を読み取ることができる。どのようにクロック周波数が分かりますか?それではnはどうでしょうか?シンプル:クロックを設定しているプログラマがあなたに伝えます。ハードウェアの中には、ソフトウェアの処理を無限に簡単にするものもあります。次いで

*とが最終的にAHBバス上に他側外そのを吐き出すために、それは読み取りだ128のビット線のうちの関連8、16又は32ビットを抽出するさらなるペテンを通過待っているCPU、明らかに。

+0

たくさんお手伝いしました。これを終了するだけで、私たちが危険にさらす「唯一の」ことは、待機サイクルを気にしないと破損したデータを取得することです。 –

+0

おそらく、私はそれに貴重な何かを賭けることはありません。それは未定義の状態になり、何かヘイワイヤやデッドロックにつながる可能性のある制御信号が存在する可能性の領域を超えていません。そして、必ずしも必ずしも正確ではない命令を実行することは、どちらの方法においても「安全」である可能性が高いというわけではありません。 – Notlikethat

+3

私は、STの内部フラッシュで誤った待機状態の設定を経験していて、1つでもオフになっていても、追跡が非常に難しい問題が発生します。たとえあなたが指定したものの下に待機状態を剃るとしても。室温で動作するかもしれませんが、寒くなったり熱くなったりすると失敗します。フラッシュが正しく構成されていないことが分かったら、すべてが理にかなっていますが、その前に間違った場所の問題を追跡しようと狂ってしまいます。 – rjp

関連する問題